CuteBlock is a playful browser extension that replaces likely ad containers with cute animal photos instead of collapsing the page layout.
Instead of leaving awkward blank spaces where ads used to be, CuteBlock keeps the original slot shape and fills it with bundled photos of cats, dogs, birds, capybaras, foxes, rabbits, and otters. Bundled photos are the default, so normal use does not make external image requests.
CuteBlock is a small browser-control project with a privacy-first default: replace the page elements locally, preserve layout, and avoid external image requests unless the user explicitly enables an optional online source.
The project is lighthearted, but the engineering focus is serious: Manifest V3 permissions, content-script behavior, cosmetic filter parsing, reversible DOM changes, and clear user control from the popup.
- Open
chrome://extensionsoredge://extensions. - Enable developer mode.
- Choose Load unpacked.
- Select the cloned
CuteBlockfolder.
Open test/ad-test.html in the browser after loading the extension. The fake ad slots should become animal cards. If you are using the local server from this workspace, visit http://127.0.0.1:8765/test/ad-test.html.
- Manifest V3 extension.
- Minimal default permission model:
storageonly, with online image hosts kept behind optional permissions. - DOM-level replacement for common ad selectors, sponsored blocks, ad iframes, and ad-like class/id names.
- Starter EasyList-style cosmetic filter support from
filters/cosmetic-lite.txt. - Ghostery's MPL-2.0 filtering engine powers cosmetic rule matching.
- Reversible replacements when CuteBlock is disabled or paused for the current site.
- MutationObserver support for ads inserted after page load.
- Popup settings for enable/disable, current-site control, animal theme, photo fit, and replacement level.
- Bundled photos are packaged with the extension, so ad replacement does not require external image requests by default.
- Optional online dog images via
random.dog, withdog.ceoas a fallback, can be enabled after a warning and permission prompt. - Bundled animal photos include wide, rectangle, and tall variants so ad slots get shape-appropriate images without shipping oversized originals.
- Upload fields:
CHROME_STORE_UPLOAD_FIELDS.md - Privacy practice answers:
CHROME_PRIVACY_PRACTICES_FIELDS.md - Upload-ready images:
store-assets/upload-ready
CuteBlock uses Ghostery's adblocker engine for cosmetic rule matching, with a small bundled starter list:
##selectordomain.com##selectordomain.com,~excluded.com##selector#@#exception rules
Unsupported rules are ignored for now, including procedural selectors such as :has() and :-abp-has().
Install dependencies once:
npm installBuild the bundled content script:
npm run buildRun the full local checks:
npm run checkRun browser regression tests:
npm run test:browserCreate a Chrome Web Store ZIP:
npm run package- Privacy notes live in
PRIVACY.md. - Third-party code and photo notices live in
THIRD_PARTY_NOTICES.md. - Store listing notes live in
STORE_LISTING.md.
- Add user-configurable external filter subscriptions powered by Ghostery's engine.
- Add stronger network-rule support for identifying ad iframes and images.
- Add more bundled animal art packs.
- Add per-site replacement stats.
Bundled photos were resized and center-cropped for use as extension assets.
- Cat:
House cat lying.jpg, Wikimedia Commons, public domain. - Dog:
Dog on grass.jpg, Wikimedia Commons, public domain source. - Capybara:
Bristol.zoo.capybara.arp.jpg, Wikimedia Commons, public domain. - Bird:
Bird on branch (Unsplash).jpgby Pritiranjan Maharana, Wikimedia Commons, CC0 1.0. - Fox:
Red Fox (Vulpes vulpes) (48490221346).jpgby GlacierNPS, Wikimedia Commons, public domain. - Rabbit:
Close rabbit (27710327815).jpgby Mara Koenig/USFWS, Wikimedia Commons, public domain. - Otter:
Sea Otter (38683305191).jpgby David Ledig/BLM, Wikimedia Commons, public domain.
