Evolution of Safari Content Blocker Rule Limits
This article provides a complete overview of the rule limits imposed on Safari Content Blockers, detailing the transition from the original legacy restrictions to the expanded capacity in modern versions of the browser. Initially, Apple restricted a single Content Blocker list to 50,000 rules to preserve system memory and performance. Recognizing the growing complexity of web advertisements and trackers, Apple later tripled this capacity to 150,000 rules per list, enabling developers to offer comprehensive content-blocking solutions without sacrificing browser speed.
The Legacy 50,000-Rule Limit
When Apple introduced the Content Blocking API in iOS 9 and OS X El Capitan, it fundamentally changed how ad blockers operated in Safari. Instead of allowing extensions to actively monitor and intercept every web request, Safari required developers to submit static JSON lists of rules. WebKit would then compile these lists into efficient bytecode.
To prevent this compilation process from consuming too much device memory and slowing down the browser, Apple enforced a strict limit: a single Content Blocker list could contain a maximum of 50,000 rules.
This 50,000-rule cap quickly became a major bottleneck for developers. Standard community-maintained filter lists, such as EasyList and EasyPrivacy, routinely exceeded 50,000 rules on their own. Consequently, ad-blocking apps had to aggressively trim and optimize these lists, often sacrificing blocking accuracy to fit within Safari's constraints.
The Multi-Extension Workaround
Before Apple officially increased the rule limit for a single list, developers found a workaround within Apple's ecosystem. While a single Content Blocker extension was limited to 50,000 rules, Apple allowed a single parent application to bundle up to six separate Content Blocker extensions.
By splitting massive filter lists across multiple extensions within the same app, developers could effectively achieve a combined limit of 300,000 rules. Users had to manually enable all six extensions in their Safari settings, which created a clunky user experience, but it successfully bypassed the single-list restriction.
Expansion to the 150,000-Rule Limit
With the release of Safari 15 alongside iOS 15 and macOS Monterey, Apple directly addressed the capacity limitation. Thanks to hardware advancements and optimizations in WebKit's bytecode compiler, Apple expanded the rule limit for a single Content Blocker list from 50,000 to 150,000 rules.
Tripling the capacity of a single list had an immediate positive impact on the Safari extension ecosystem:
- Full Filter List Support: A single Content Blocker could now easily accommodate the entirety of EasyList and several other supplementary lists without requiring developers to delete useful rules.
- Massive Combined Capacity: Because developers could still bundle up to six Content Blocker extensions within a single app, the maximum theoretical limit per app jumped from 300,000 to 900,000 rules.
- Improved Performance: Compiling one large list of 150,000 rules proved to be more efficient and easier for apps to manage than splitting the same amount of rules across three separate 50,000-rule extensions.
This expansion brought Safari's content-blocking capabilities closer in power to desktop browsers like Chrome and Firefox, while retaining the privacy guarantees of Apple's declarative API.