- 750,000 rule capacity across 5 Safari content blocking extensions per platform (150k each)
- ~40 MB RAM at idle — Safari's native content blocking API runs rules out-of-process
- Protocol Buffers + LZ4 for filter storage; streaming I/O keeps memory low during compilation
- HTTP conditional requests (If-Modified-Since/ETag) so updates only download what changed
- iCloud sync for filter selections, custom lists, userscripts, and whitelist across devices
Content modification
- Element Zapper (macOS, iOS, iPadOS, visionOS) — visually select and hide page elements in Safari
- Userscript engine with Greasemonkey API (GM_getValue, GM_setValue, GM_xmlhttpRequest)
- Userstyle support — install UserCSS themes (.user.css) applied natively as CSS, no JS wrapper needed
- Custom filter lists via URL, paste, or file import — supports any AdGuard-syntax blocklist
- Toolbar search for quickly finding filters and userscripts
- Automatic rule distribution across all 5 content blocker slots for maximum coverage
|
Blocking
- Network request blocking — ads, trackers, cookie banners, annoyances
- CSS injection for cosmetic filtering and element hiding
- Script blocking for unwanted JavaScript
- Pop-up and redirect prevention
- URL tracking-parameter stripping — removes UTM and other tracking params, unwraps shortener/redirect URLs (enabled by default via wBlock Scripts)
Configuration
- Auto-updates from every hour to every 7 days, or manual. macOS can keep checking through a bundled launch agent and background update service, iOS background checks are best-effort
- Per-site controls — disable blocking on specific sites from the Safari toolbar
- Blocked request logger (macOS) — see what's being blocked on each page
- Per-site settings — whitelist trusted domains, toggle userscripts per site, and switch element zapper rules on or off per domain
- Regional filters with auto-detection based on your locale
- Homebrew cask for macOS:
brew tap 0xcub3/wblock && brew install --cask wblock
|