Universal anti-adblock bypass for all browsers and adblockers without breaking HTML5, HLS, or DASH video streams. Compatible companion to Hide Web Elements Pro; also runs fully standalone.
A universal, lightweight anti-adblock bypass that works on virtually any site — without breaking HTML5, HLS, or DASH video playback.
Most "please disable your adblocker" walls work by probing the page for tell-tale signs that an ad slot didn't load: a zero-width ad container, a blocked ad-network request, a missing tracking cookie, a console warning. This script neutralizes those probes directly at the browser API level, so the detection script sees exactly what it expects to see — while the actual ad/tracker requests never go out.
🔗 Recommended to use together with
Hide Web Elements Pro
While Hide Web Elements Pro gives you manual control over hiding, freezing, and media extraction, Stealth Mask silently defeats anti‑adblock detection on thousands of sites. Together, they create a seamless, clean, and undetectable browsing experience.
getBoundingClientRect, getClientRects, offsetWidth/Height, clientWidth/Height, scrollWidth/Height, and offsetParent all report plausible non-zero values for ad-slot elements, so "is the ad really showing?" checks pass.getComputedStyle spoofing — ad containers always report display: block, visibility: visible, opacity: 1.fetch, XMLHttpRequest, and navigator.sendBeacon silently return a fake "success" response for ad/tracker requests instead of actually sending them. Video/HLS/DASH manifests and segments are always explicitly whitelisted and pass straight through untouched.new Image() pixels and plain <img src="..."> assignments, however the element was created.adblock_detected, abp_status). Deliberately narrow, so it won't eat a site's own legitimate promo_code or banner_dismissed cookie.performance.getEntries() polling and live PerformanceObserver callbacks.adblock, isAdBlockActive, canRunAds, etc.) and popular detection libraries (FuckAdBlock, BlockAdBlock, and similar).MutationObserver strips detection scripts and iframes as they're injected, with the same video-safety whitelist applied.ping attributes from links so clicks aren't silently beaconed.[native code] via Function.prototype.toString, so a probe that checks "is this function real?" before trusting it can't tell the difference.unsafeWindow patching instead of injecting a <script> tag into the page. The old injection method is silently blocked by any site with a strict Content-Security-Policy — increasingly common — so this is a real reliability fix, not just a refactor.Image constructor was patched before, but a plain <img> element with its src set directly slipped through. Both paths are covered now.PerformanceObserver support added alongside the existing performance.getEntries() filtering — several modern detection scripts watch resource timing live rather than polling.cmfv/cmfa) lists.This script exposes a small, inert bridge on window.__UADefuser (isBait(), isVideoResource(), getStats()) and fires a uadefuser:bait event whenever it blocks something, so other userscripts can hook into its detection logic instead of duplicating it. It does nothing if nothing listens, and the script is fully self-contained — it works exactly the same whether it's the only script installed or running alongside others.
Built and tested to run cleanly alongside Hide Web Elements Pro: both scripts patch the same low-level browser APIs (
getComputedStyle,getBoundingClientRect, layout getters,Function.prototype.toString) using the same chaining pattern, so neither one clobbers the other's spoofing.
| Grant | Why |
|---|---|
unsafeWindow | Patch browser APIs in the page's real context (also makes it CSP-proof) |
GM_setValue / GM_getValue | Persist the optional all-time blocked-request counter |
GM_registerMenuCommand | Adds the "Show blocked count" item to the Tampermonkey menu |
No data ever leaves your browser. Nothing is sent anywhere — the counter is stored locally via your userscript manager's own storage.
No. Every network hook explicitly whitelists common video/streaming extensions ( No — this script only stops sites from detecting that ads were blocked. It doesn't touch page layout or CSS. Pair it with an actual element-hiding tool (such as Hide Web Elements Pro, or your adblocker's own filters) if you want ad slots visually removed too. It's designed to fail safe — every hook is wrapped so a single unexpected page structure can't crash the script, and nothing is patched unless the relevant native API exists. That said, as with any script that intercepts network/DOM APIs, if a specific site misbehaves, try disabling it for that domain first to confirm.Will this break video playback?
.m3u8, .mpd, .ts, .m4s, etc.), video-path patterns (/hls/, /dash/, /manifest/, etc.), and major video CDNs, and always lets those requests through untouched regardless of what else matches.Does it hide/remove ads from the page?
Is this safe to run on every site?
Intended for personal browsing convenience and privacy. Respect the terms of service of sites you visit.