A free, open-source ad blocker for Safari on Mac, iPhone, iPad, and Apple Vision Pro.
Features · Screenshots · Install · How it works · FAQ · Support
Up to 750,000 Safari rules across five content blockers, with recommended lists, regional lists picked for you, and optional annoyance and cookie-banner filters.
More about blocking
- AdGuard-compatible filter lists compiled into Safari's native rules and spread across five content blockers, with a limit of 150,000 rules each. Safari applies the rules outside the app process.
- Recommended default lists, automatic regional filter selection, and optional annoyance and cookie-banner filters. Add custom lists by URL, pasted text, or file import.
- Scheduled updates from hourly to weekly, with incremental downloads for lists that support them. On macOS, a launch agent checks for updates while the app is closed.
- Tracking-parameter removal, including
utm_*, and link-shortener resolution. Both are on by default. - A capacity indicator and a rules viewer that shows compiled rules, unsupported entries, duplicate rules, rules handled by the scripts extension, and changes from the latest update.
A Greasemonkey-compatible engine, UserCSS themes, and a built-in catalog with Tube Cleaner, DeArrow, Dark Reader, and more.
More about userscripts
- A separate scripts extension supports scriptlets, cosmetic filtering, userscripts, userstyles, and element hiding.
- A Greasemonkey-compatible engine supporting
GM_*andGM.*APIs.GM_xmlhttpRequestis restricted to hosts declared in a script's@connectmetadata. - UserCSS themes (
.user.css) with Less and Stylus support. See docs/USERSTYLES.md. - A built-in catalog with Tube Cleaner, Player Cleaner, DeArrow, Dark Reader, Return YouTube Dislike, Bypass Paywalls Clean, AdGuard Extra, AdGuard Popup Blocker, and TwitchAdSolutions. Catalog scripts are off by default except tinyShield, which handles anti-adblock checks.
Tube Cleaner and Player Cleaner give videos Safari's own controls, with Picture-in-Picture, background audio, and SponsorBlock.
More about native video
Tube Cleaner and Player Cleaner turn on Safari's native controls for existing video elements before the page renders, including Picture-in-Picture, background audio, fullscreen playback, and Now Playing.
Tube Cleaner works on YouTube and keeps its original video stream. It puts chapters and captions into Safari's native menus and skips sponsors with SponsorBlock, with settings per category. DeArrow is available separately for alternative titles and thumbnails.
Player Cleaner supports video.js, JW Player, Plyr, Flowplayer, MediaElement, Clappr, Media Chrome, and shadow-root players such as Archive.org's. It saves playback speed, volume, captions, and position per site.
Both scripts update from wBlock-userscripts independently of app releases. Ad blocking stays with the filter lists.
The Safari popup turns filtering, userscripts, and autoplay on or off for each site, and the Element Zapper hides anything else. Lists, scripts, and settings sync through iCloud.
More about per-site controls and sync
The Safari toolbar popup has separate switches for filtering, userscripts, and autoplay, plus the Element Zapper. Filter lists and userscripts can be limited to selected sites or excluded from specific domains. Zapper rules can be edited in Settings.
wBlock runs on macOS, iOS, iPadOS, and visionOS. iCloud sync covers filter lists, custom filters, userscripts, the allowlist, and settings. Local backup export is also available.
wBlock collects no data. Safari applies the rules outside the app, and idle memory is about 40 MB.
Tip
The comparison guide covers wBlock, uBlock Origin Lite, Wipr, and AdGuard.
Filters on macOS
The Safari popup on iPhone, and SponsorBlock in Tube Cleaner
Userscripts on macOS
Settings on macOS
The App Store version is the recommended way to install wBlock. It updates automatically and is signed and reviewed by Apple. On iPhone, iPad, and Apple Vision Pro, the App Store is the only way to get it.
On the Mac, you can also download the DMG from the latest release or use Homebrew:
brew tap 0xcub3/wblock && brew install --cask wblockOn first launch, wBlock walks you through turning on its extensions in Safari.
The app downloads filter lists and converts them with SafariConverterLib 4.3.0. Rules are spread across five content blockers: Ads, Privacy, Security, Foreign, and Custom. Safari compiles and applies them independently of the app. The wBlock Scripts extension handles what static rules can't express.
Filter data is stored in Protocol Buffers with LZ4 compression, and streaming writes keep peak memory low during compilation. Changing a list rebuilds only the affected content blockers. Safari must reload the updated rule sets before changes take effect.
The comparison guide includes the rule used to turn off filtering for a specific site.
Should wBlock be used alongside another ad blocker?
No. Use one general-purpose content blocker at a time.
Multiple blockers can make conflicting changes to the same page or request. Mozilla's webRequest documentation describes how conflicting response modifications may allow only one extension's change to succeed. The uBlock Origin documentation advises against using another content blocker alongside it. AdGuard's guidance identifies slower loading, broken sites, and video-playback problems as possible consequences.
Disable other ad blockers before reporting a wBlock issue. This allows the cause of a blocking failure or site compatibility problem to be isolated.
Should additional filter lists be enabled?
The recommended defaults cover most ads and trackers. Additional general-purpose lists often duplicate existing rules, consume Safari's rule capacity, and increase the risk of site compatibility problems. Annoyance lists provide coverage for cookie banners, popups, and social widgets. Regional lists provide additional coverage for non-English sites.
Does wBlock slow down Safari?
Not in normal use. Safari applies compiled rules outside the wBlock app process, so page loading does not wait for the app. Idle memory usage is approximately 40 MB.
How can Twitch ads be blocked?
Enable TwitchAdSolutions (vaft) or AdGuard Extra in the Userscripts tab, then reload Twitch. TwitchAdSolutions is the dedicated option. Use only one of these scripts at a time. Twitch frequently changes its ad delivery, so blocking may be temporarily affected until the script is updated.
Why are cookie-banner filters or scriptlets not working in Private Browsing?
Safari requires explicit permission for extensions to run in Private Browsing. Most cookie-banner filters rely on scriptlets provided by wBlock Scripts. In Safari → Settings → Extensions, enable Allow in Private Browsing for wBlock Scripts and all five content blockers, then reload the private window.
A stored consent cookie may explain why a banner is absent in a normal window. Clear the site's cookies before comparing normal and private browsing behavior.
How are userscript network requests handled?
GM_xmlhttpRequest requires @grant GM_xmlhttpRequest or @grant GM.xmlHttpRequest. Requests are restricted to hosts declared in the script's @connect metadata. A bare host permits that host and its subdomains; localhost, self, and * are also supported. Without @connect, requests are limited to the current host. Per-domain permission prompts are not currently available.
Only HTTP and HTTPS are supported. Redirect destinations are checked before the request follows them. If Safari does not expose a redirect destination to the extension, the request fails rather than bypassing the host restrictions. Requests do not include browser cookies or saved credentials. Requests marked anonymous also exclude cookies supplied by the script.
Where are Tube Cleaner and Player Cleaner located?
Both scripts are listed at the top of the General section in the Userscripts tab and are disabled by default. After enabling a script, individual features such as chapters, captions, and SponsorBlock can be configured separately. Player Cleaner can be disabled for a specific site through the Safari toolbar popup if compatibility issues occur.
How often do filters update, and must wBlock remain open?
Updates can be scheduled from hourly to weekly or performed manually. The app does not need to remain open. On macOS, a launch agent checks for updates while the app is closed; this behavior can be disabled in Settings.
On iOS and iPadOS, background updates are scheduled by the operating system. Disabling Background App Refresh or force-quitting wBlock from the app switcher may reduce update frequency or delay updates until the app is opened.
wBlock is free and open source. If it's useful to you, you can support development on Open Collective.
Report a bug or request a feature · Join the Discord · Privacy policy
Contributors include @arjpar, @ameshkov, and @shindgew. Rule conversion and scriptlets come from AdGuard. SponsorBlock and DeArrow data come from Ajay Ramachandran's projects under CC BY-NC-SA 4.0.