{"id":5833,"date":"2026-04-24T04:12:27","date_gmt":"2026-04-24T11:12:27","guid":{"rendered":"https:\/\/catbradley.io\/?p=5833"},"modified":"2026-04-24T04:12:27","modified_gmt":"2026-04-24T11:12:27","slug":"firefox-has-quietly-integrated-braves-adblock-engine","status":"publish","type":"post","link":"https:\/\/catbradley.io\/?p=5833","title":{"rendered":"Firefox Has Quietly Integrated Brave&#x27;s Adblock Engine"},"content":{"rendered":"<p>Back in March, <a href=\"https:\/\/www.firefox.com\/en-US\/firefox\/149.0\/releasenotes\/\">Firefox 149<\/a> was released with many changes, like a free built-in VPN, a <em>Split View<\/em> that allows the loading of two pages side by side, and the XDG portal file picker as the new default on Linux.<\/p>\n<p>However, an interesting addition had gone mostly unnoticed until now.<\/p>\n<h2>Firefox has Some Brave in it now<\/h2>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2026\/04\/firefox-adblock-rust-patch.png\" class=\"kg-image\" alt=\"this picture shows a closed bug on mozilla's bugzilla instance, titled &quot;add a prototype rich content blocking engine&quot;\" loading=\"lazy\" width=\"1358\" height=\"581\" \/><\/figure>\n<p><a href=\"https:\/\/www.linkedin.com\/in\/shivankaulsahib\/\">Shivan Kaul Sahib<\/a>, the VP of Privacy and Security at <a href=\"https:\/\/brave.com\/\">Brave<\/a>, has put out <a href=\"https:\/\/shivankaul.com\/blog\/firefox-bundles-adblock-rust\">a blog post<\/a> about something that didn&#8217;t make it into the Firefox 149 release notes at all. The browser now ships <a href=\"https:\/\/github.com\/brave\/adblock-rust\">adblock-rust<\/a>, <strong>Brave&#8217;s open source Rust-based ad and tracker blocking engine<\/strong>.<\/p>\n<p>The change landed via Bugzilla <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=2013888\">Bug 2013888<\/a>, which was filed and handled by Mozilla engineer <a href=\"https:\/\/www.linkedin.com\/in\/benjamin-vandersloot\/\">Benjamin VanderSloot<\/a>. The bug is titled &#8220;<em>Add a prototype rich content blocking engine,<\/em>&#8221; and keeps the engine disabled by default with no user interface or filter lists included.<\/p>\n<p>For informational purposes, <a href=\"https:\/\/github.com\/brave\/adblock-rust\">adblock-rust<\/a> is the engine behind Brave&#8217;s native content blocker (<em>aka ad blocker<\/em>). It is written in <strong>Rust<\/strong> and licensed under <strong>MPL-2.0<\/strong>, handling network request blocking, cosmetic filtering, and features a <a href=\"https:\/\/github.com\/gorhill\/ublock\">uBlock Origin<\/a>-compatible filter list syntax.<\/p>\n<p>Shivan also mentions that <a href=\"https:\/\/www.waterfox.com\/\">Waterfox<\/a>, the popular Firefox fork, <a href=\"https:\/\/github.com\/BrowserWorks\/waterfox\/issues\/4182\">has adopted adblock-rust<\/a>, building directly upon Firefox&#8217;s own implementation.<\/p>\n<h2>Want to test it?<\/h2>\n<p>Before starting, head to <a href=\"https:\/\/support.mozilla.org\/en-US\/kb\/enhanced-tracking-protection-firefox-desktop\">Enhanced Tracking Protection<\/a>&#8216;s shield icon in the address bar and turn it off for the website you will be testing this with. This way, adblock-rust is doing the work, not Firefox&#8217;s existing feature.<\/p>\n<div class=\"kg-card kg-callout-card kg-callout-card-yellow\">\n<div class=\"kg-callout-emoji\">\ud83d\udea7<\/div>\n<div class=\"kg-callout-text\">I suggest testing this experimental feature on a throwaway installation of Firefox.<\/div>\n<\/div>\n<p>Now open a new tab and go to <code>about:config<\/code>. Accept the warning when it shows up. Search for <code>privacy.trackingprotection.content.protection.enabled<\/code> and set it to &#8220;<strong><em>true<\/em><\/strong>&#8221; by clicking on the toggle. \ud83d\udc47<\/p>\n<figure class=\"kg-card kg-gallery-card kg-width-wide\">\n<div class=\"kg-gallery-container\">\n<div class=\"kg-gallery-row\">\n<div class=\"kg-gallery-image\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2026\/04\/firefox-adblock-rust-config-1.png\" width=\"847\" height=\"695\" loading=\"lazy\" alt=\"firefox screenshot that shows the about:config page with this search result: privacy.trackingprotection.content.protection.enabled\" \/><\/div>\n<div class=\"kg-gallery-image\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2026\/04\/firefox-adblock-rust-config-2.png\" width=\"847\" height=\"695\" loading=\"lazy\" alt=\"\" \/><\/div>\n<div class=\"kg-gallery-image\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2026\/04\/firefox-adblock-rust-config-3.png\" width=\"847\" height=\"695\" loading=\"lazy\" alt=\"\" \/><\/div>\n<\/div>\n<\/div>\n<\/figure>\n<p>Next, search for <code>privacy.trackingprotection.content.protection.test_list_urls<\/code>, click on the &#8220;Edit&#8221; button, and paste the following value to add the <a href=\"https:\/\/easylist.to\/\">EasyList<\/a> and <a href=\"https:\/\/github.com\/easylist\/easylist\/tree\/master\/easyprivacy\">EasyPrivacy<\/a> filter lists to Firefox:<\/p>\n<p><code>https:\/\/easylist.to\/easylist\/easylist.txt|https:\/\/easylist.to\/easylist\/easyprivacy.txt<\/code><\/p>\n<p>Remember to click on the blue-colored &#8220;<em>Save<\/em>&#8221; button before moving on.<\/p>\n<figure class=\"kg-card kg-gallery-card kg-width-wide kg-card-hascaption\">\n<div class=\"kg-gallery-container\">\n<div class=\"kg-gallery-row\">\n<div class=\"kg-gallery-image\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2026\/04\/firefox-adblock-rust-demo-1.png\" width=\"1168\" height=\"783\" loading=\"lazy\" alt=\"\" \/><\/div>\n<div class=\"kg-gallery-image\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2026\/04\/firefox-adblock-rust-demo-2.png\" width=\"1168\" height=\"783\" loading=\"lazy\" alt=\"\" \/><\/div>\n<\/div>\n<\/div><figcaption>\n<p><i><em class=\"italic\">Left: advertisement shown; Right: advertisement blocked<\/em><\/i><\/p>\n<\/figcaption><\/figure>\n<p>Now visit a site with known ads, like <a href=\"https:\/\/www.yahoo.com\/\">Yahoo<\/a> (<em>as I did above<\/em>). If it&#8217;s working, ad slots will still render in the page layout, but the actual ad content will be blocked. In my test, the banner on Yahoo came up showing only the text &#8220;<em>Advertisement<\/em>&#8221; with the advert bit stripped out.<\/p>\n<p><!--kg-gated-block:begin nonMember:true memberSegment:\"status:free\" --><\/p>\n<div class=\"kg-card kg-cta-card kg-cta-bg-purple kg-cta-minimal    \" data-layout=\"minimal\">\n<div class=\"kg-cta-content\">\n<div class=\"kg-cta-content-inner\">\n<div class=\"kg-cta-text\">\n<p><span>Support independent Linux journalism! If you think we are doing a good job at helping people use Linux on their personal computers, support us by opting for Plus membership.<\/span><\/p>\n<p><span>Here&#8217;s what you get with It&#8217;s FOSS Plus membership: <\/span><\/p>\n<p><span>\u2705 5 Free eBooks on Linux, Docker and Bash<\/span><br \/><span>\u2705 Ad-free reading experience<\/span><br \/><span>\u2705 Badges in the comment section and forum<\/span><br \/><span>\u2705 Support creation of educational Linux materials<\/span><\/p>\n<\/div>\n<p>                        <a href=\"https:\/\/itsfoss.com\/membership\/\" class=\"kg-cta-button \"><br \/>\n                            Join It&#8217;s FOSS Plus<br \/>\n                        <\/a><\/p><\/div>\n<\/div>\n<\/div>\n<p><!--kg-gated-block:end--><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/feed.itsfoss.com\/link\/24361\/17324714.gif\" height=\"1\" width=\"1\" \/><\/p>","protected":false},"excerpt":{"rendered":"<p>Back in March, Firefox 149 was released with many changes, like a free built-in VPN, a Split View that allows the loading of two pages side by side, and the&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"initial","rop_publish_now_accounts":[],"rop_publish_now_history":[],"rop_publish_now_status":"pending","footnotes":""},"categories":[1],"tags":[],"class_list":["post-5833","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rss"],"_links":{"self":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/posts\/5833","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5833"}],"version-history":[{"count":0,"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/posts\/5833\/revisions"}],"wp:attachment":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5833"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5833"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5833"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}