Cookie Cutter
A Chrome extension that finds the reject button on cookie consent banners and clicks it, with per-site stats in a popup. Plain JavaScript on Manifest V3, installed unpacked from GitHub.
Browser Extension Development & Tooling
4 Days

Introduction
A Chrome extension that finds the reject button on cookie consent banners and clicks it, with per-site stats in a popup. Plain JavaScript on Manifest V3, installed unpacked from GitHub.
Work Done
Chrome Extension

Challenges
Clicking reject on banners from many different consent platforms without ever clicking an unrelated button, reaching banners rendered inside iframes, and dealing with banners that offer no reject option at all.

Solutions
Known selectors for each consent platform first, then a text match that only runs inside an element confirmed to be a cookie banner. The content script runs in every frame and reports stats against the top-level host. After 15 seconds without a click, the site is logged as failed and the banner can be hidden with page scroll restored.


Results
Version 1.3.0 on GitHub under MIT. It covers OneTrust, Cookiebot, Didomi, Quantcast, TrustArc, CookieYes and about a dozen more platforms, sends the Global Privacy Control signal, and merges a community rules file from the repo at most once a day.
Details
Why I built it
Most cookie banners put "Accept all" up front and tuck "Reject all" behind a second screen. Cookie Cutter is a Chrome extension that finds the reject button and clicks it. It's plain JavaScript with no build step: one content script, one service worker and a popup. You install it unpacked from GitHub. It isn't on the Chrome Web Store.
Clicking the right button
The selector list covers OneTrust, Cookiebot, Didomi, Quantcast, TrustArc, CookieYes and about a dozen more platforms, with a text match on phrases like "reject all" as the fallback. The first version ran that text match across the whole page, and on a GitHub profile it clicked "Decline invitation". Now an element has to carry a known consent platform id or class, or mention cookies or GDPR, before anything inside it gets clicked.
Banners inside frames
Didomi, Quantcast and Google's consent screen can render inside an iframe, so the content script runs in every frame. Stats are counted against the top-level host, and only the top frame can report a failure, so a miss inside an embedded frame doesn't put the whole page on the failed list.
When nothing works
A MutationObserver watches for late banners for 15 seconds. If a banner showed up and no click landed, the site goes into the popup's Failed list with a Report link that opens a prefilled GitHub issue. With the hide setting on, the banner is hidden and page scroll comes back.
Tope Akintola
November 2, 2026
Browser Extension Development & Tooling
