Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

406 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

wBlock

wBlock

The end of Safari ad-blocking B.S.


Download on the App Store

Version Platform License

Join Discord




A Safari content blocker for macOS, iOS, and iPadOS utilizing declarative content blocking rules.
Supports 750,000 rules across 5 extensions with Protocol Buffer storage and LZ4 compression.


Note

Looking for a detailed comparison? Check out my comparison guide to see how wBlock stacks up against other Safari content blockers.


Features

Performance Architecture

  • 750,000 rule capacity utilizing 5 Safari content blocking extensions per platform (150k rules each)
  • ~40 MB RAM footprint at idle via Safari's native content blocking API
  • Protocol Buffers serialization with LZ4 compression for filter storage
  • Off-thread I/O operations with streaming serialization to minimize main thread blocking
  • HTTP conditional requests (If-Modified-Since/ETag) for efficient filter update detection

Content Modification

  • Element Zapper (macOS only) generates persistent CSS selectors for manual element removal
  • Userscript engine implements Greasemonkey API (GM_getValue, GM_setValue, GM_xmlhttpRequest)
  • Custom filter list ingestion supports AdGuard-syntax blocklists via URL import
  • Category-based filter organization with per-list toggle and automatic rule distribution
  • Filter list validation with automatic disabling on Safari's 150k rule limit per extension

Blocking Capabilities

  • Network request blocking via declarative content blocking rules (advertisements, trackers)
  • Cookie and local storage filtering through Safari content blocker rule actions
  • CSS injection for cosmetic filtering and element hiding
  • Script blocking for unwanted software and JavaScript execution
  • Pop-up and redirect prevention using Safari content blocking patterns

Configuration & Management

  • Configurable auto-update intervals from 1 hour to 7 days with background refresh
  • Per-site blocking controls through Safari's content blocker enable/disable API
  • Whitelist management for trusted domains with Safari extension state persistence
  • Regional filter support with preset lists for language-specific content blocking
  • Filter compilation monitoring with real-time rule count and compilation status
  • Background update notifications (optional) for filter list refresh events



Screenshots


Userscript Management

Userscript Management
Manage paywalls, YouTube Dislikes, and more
Settings

Settings & Customization
Configure auto-updates, notifications, and preferences
iOS

iOS Interface
Full-featured blocking on iPhone and iPad



Technical Implementation

Core Architecture

  • Protocol Buffers (libprotobuf) with LZ4 compression for filter serialization
  • Asynchronous I/O with Swift concurrency (async/await, Task, Actor isolation)
  • Streaming serialization to disk minimizes peak memory usage during compilation
  • 5 Safari content blocking extensions per platform (maximum Safari API capacity)
  • SafariServices framework integration for declarative content blocking

Dependencies & Standards

  • SafariConverterLib v4.0.4 for AdGuard to Safari rule conversion
  • AdGuard Scriptlets v2.2.9 for advanced blocking techniques
  • Swift 5.9+ with strict concurrency checking enabled
  • WCAG 2.1 AA compliance with full VoiceOver and Dynamic Type support
  • SwiftProtobuf for cross-platform filter storage format


Support Development

wBlock is free and open-source software. Financial contributions support ongoing development and maintenance:





FAQ

How does wBlock compare to other ad blockers?
Check out our comparison guide vs uBlock Origin Lite, AdGuard, and Wipr.
Can I use my own filter lists?
Yes! wBlock supports any AdGuard-compatible filter list. Add the URL in Custom Filter Lists.
Does wBlock slow down Safari?
No. wBlock uses Safari's native declarative content blocking API, which processes rules in a separate process. Memory overhead is ~40 MB at idle with no measurable impact on page load times.
Do userscripts work on iOS?
Yes. The userscript engine implements the Greasemonkey API (GM_getValue, GM_setValue, GM_xmlhttpRequest, GM_addStyle) on both iOS and macOS via Safari Web Extensions.
How often do filters update?
Auto-update intervals are configurable from 1 hour to 7 days, or manually triggered. Updates use HTTP conditional requests (If-Modified-Since/ETag headers) to minimize bandwidth usage.
Is the element zapper available on iOS?
Not yet.



About

The next-generation ad blocker for Safari.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /