One click. One site. One fresh load.
A minimal, zero-dependency browser extension for Chrome, Edge, and Firefox that clears the cache for the current site and hard-reloads it — in one click, with no settings to configure and no data leaving your browser.
When you need a bigger hammer, keyboard shortcuts and a right-click menu give you all-sites and deep-clear modes too.
No popups. No options page. No telemetry. No remote calls. ~100 lines of vanilla JS.
The browser already gives you several cache-clearing tools — and each is annoying in its own way:
| Built-in option | What it does | Problem |
|---|---|---|
Ctrl+Shift+R (hard reload) |
Reloads with bypassCache: true for that navigation |
Doesn't unregister Service Workers; subsequent navigations may still be stale |
| DevTools → Disable cache | Bypasses cache while DevTools is open | You have to keep DevTools open. Doesn't help users testing your dev build. |
| Settings → Clear browsing data | Wipes everything, with a confirmation dialog | Nukes every site's cache. Multi-step. Loses your auth sessions everywhere. |
ClearCache fills the gap: one click, scoped to the current site, with the Service Worker actually unregistered. The "all sites" and deep-clear modes are still there for when you really do want the big hammer — they just aren't the default.
The Chrome Web Store and Edge Add-ons listings are not yet published. For now, install via side-load from a GitHub Release or build from source. Store badges will appear here once submissions are approved.
Each release publishes two zips:
clearcache-X.Y.Z.zip— Chrome, Edge, Brave, Arc, Opera, Vivaldi, or any Chromium MV3 browser.clearcache-firefox-X.Y.Z.zip— Firefox 112+.
- Download
clearcache-X.Y.Z.zipfrom the Releases page. - Verify the SHA-256 against the
.sha256file attached to the same release (optional but recommended). - Extract the zip somewhere stable (don't delete the folder — the browser reads from it on every launch).
- Open your browser's extensions page (
chrome://extensions,edge://extensions,brave://extensions, etc.). - Toggle Developer mode on.
- Click Load unpacked and select the extracted folder.
- Pin the icon to your toolbar.
- Download
clearcache-firefox-X.Y.Z.zipfrom the same release. - Extract the zip somewhere stable.
- Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on and select any file inside the extracted folder (e.g.
manifest.json). - Pin the icon to your toolbar.
Note: Firefox temporary add-ons are removed when the browser restarts. For a permanent install, wait for the signed build on addons.mozilla.org once the listing is approved, or sign the zip yourself via web-ext sign.
git clone https://github.com/isaiasgv/ClearCache.gitThen load the cloned folder via Load unpacked (steps 4–7 above). There is no build step.
Click the toolbar icon. The current site's cache is cleared and the tab hard-reloads.
A toast appears in the top-right of the freshly loaded page confirming what got cleared. The toolbar icon also flashes a color-coded badge as a fallback (for chrome:// pages, the PDF viewer, and other surfaces where the extension can't inject the toast).
| Action | Shortcut | Right-click menu | Toast / badge color |
|---|---|---|---|
| Clear current site & reload (default) | Alt+Shift+R |
✓ | ✓ green |
| Clear current site + open subdomains & reload | Alt+Shift+S |
✓ | ✓ green |
| Clear all sites & reload current tab | Alt+Shift+A |
✓ | ★ amber |
| Deep clear current site (cache + cookies + storage) | Alt+Shift+D |
✓ | ☠ red |
| Reload all tabs in this window (clears current site) | Alt+Shift+W |
✓ | ✓ green |
Subdomain mode details: the extension enumerates every open tab whose hostname shares the same registrable domain as the current tab (e.g. www.example.com, api.example.com, docs.example.com all roll up to example.com), clears cache for that set of origins, and hard-reloads each of those tabs. Only open tabs are considered — sites you haven't opened are untouched. Registrable-domain detection uses a small built-in allow-list for common multi-label public suffixes (.co.uk, .github.io, .vercel.app, etc.) — not a full PSL, but enough for 95% of real-world sites.
Rebind any shortcut at chrome://extensions/shortcuts.
Right-click any hyperlink on any page → "Open link with fresh cache". ClearCache clears the cache for the link's origin (not the current page's), then opens the link in a new tab. Useful for jumping to a subdomain, an API endpoint, or a staging URL that you suspect is stale without touching the tab you're on.
Screenshots will be added before the first store submission. Capture spec lives in docs/screenshots/README.md.
| Toolbar icon | Toast confirmation | Right-click menu |
|---|---|---|
![]() |
![]() |
Every permission is justified. There are no "just in case" requests.
| Permission | Why it's needed |
|---|---|
browsingData |
Calling chrome.browsingData.remove to clear cache, Cache Storage, Service Workers, and (deep mode only) cookies / localStorage / IndexedDB. |
tabs |
Reading the active tab's URL to scope the clear to its origin, and reloading it. |
contextMenus |
Adding the right-click entries on the toolbar icon. |
scripting |
Injecting the confirmation toast into the freshly reloaded page. Toast injection is the only use of this permission. |
<all_urls> |
The per-site scoping logic must be able to resolve any origin you visit. The extension never reads page contents. |
The extension collects nothing, transmits nothing, and contacts no remote servers. No analytics, no error reporting, no usage tracking. The full policy is at docs/privacy.md, and you can verify every claim by reading background.js — it's about 100 lines.
| Browser | Status |
|---|---|
| Google Chrome 114+ | Supported (recommended) |
| Microsoft Edge 114+ | Supported |
| Brave, Arc, Opera, Vivaldi | Supported (Chromium-based, latest) |
| Mozilla Firefox 112+ | Supported (download the clearcache-firefox-X.Y.Z.zip artifact from each release) |
| Safari | Not supported — different extension model |
minimum_chrome_versionis114on the Chromium build because the per-origin scoping inchrome.browsingData.removerequires it.strict_min_versionis112.0on the Firefox build because that is when MV3 background scripts gained support for"type": "module"(ES module imports in the background event page).
Firefox caveats:
- Firefox's
browsingData.removeaccepts ahostnamesarray (no port) rather than Chrome'soriginsarray (full origin). As a consequence, clearinghttp://localhost:3000also clears cache for any other port onlocalhost. - Firefox's
browsingData.removedoes not support thecacheStorageorserviceWorkersdata types. ClearCache strips those keys when running on Firefox so the call succeeds, but on sites that use a Service Worker for offline caching you may still see cached content after a default clear. Use deep-clear mode (Alt+Shift+D) to also wipe cookies / localStorage / IndexedDB — which unregisters enough Service Worker state to fully bust the cache on most sites.
Both are Firefox API limitations, not ClearCache bugs.
ClearCache/
├── background.js # Service worker / event page — the entire runtime (~350 lines)
├── manifest.json # Chromium MV3 manifest (service_worker)
├── manifest.firefox.json # Firefox MV3 manifest (scripts + browser_specific_settings)
├── lib/origin.js # Pure helpers (originOf, hostnameOf)
├── icons/ # Toolbar icons (16, 32, 48, 128 px)
├── _locales/ # i18n strings — 20 locales (en, es, de, fr, it, nl, pl, pt_BR, ru, tr, ja, ko, zh_CN, zh_TW, vi, id, th, he, ar, fa)
├── LICENSE # GPL-3.0
├── README.md
├── CHANGELOG.md # Auto-maintained by the release workflow
├── CONTRIBUTING.md
├── SECURITY.md
├── CLAUDE.md # Hard rules for AI-assisted contributions
├── docs/
│ ├── privacy.md # Privacy policy
│ └── screenshots/ # README-embedded screenshots
└── store/ # Listing assets for Chrome Web Store / Edge Add-ons / AMO / Opera
| Branch | Purpose | Releases produced |
|---|---|---|
release |
Active development. All feature/fix PRs target this branch. | Prereleases (vX.Y.Z-rc.N) |
main |
Stable. Mirrors what's published to the stores. Updated monthly from release. |
Stable releases (vX.Y.Z) |
Push to release → automatic prerelease.
Merge release → main → automatic stable release.
Hotfix → land fix: on release (prerelease runs), then immediately PR release → main for the stable promotion. No direct PRs to main.
Versioning is fully automated by the Release workflow using Conventional Commits.
Default: every releasable commit produces a patch. This project deliberately stays in 0.x and bumps minor/major only when explicitly stated.
| Commit type | Triggers a release? | Default bump |
|---|---|---|
feat: / fix: / perf: / refactor: (with or without !) |
yes | patch |
docs: / test: / chore: / ci: / build: / style: / revert: |
no | — |
To request a higher bump, state it explicitly via either:
- A
Release-Bump:trailer in any commit body in the release range:feat: rework the toast renderer Release-Bump: minor - A manual workflow run with
bump_override = minorormajorfrom the Actions tab.
The highest level signaled across all commits in the range wins.
On push to release (prerelease):
- Compute the next semver base from commits since the last stable tag.
- Count existing
vX.Y.Z-rc.*tags for that base, increment to getrc.N. - Set the manifest version inside the zip only to
X.Y.Z.N(Chrome's 4-digit form — the closest legal encoding ofX.Y.Z-rc.N). The repo'smanifest.jsonis not modified. - Build
clearcache-X.Y.Z-rc.N.zip+ SHA-256. - Tag
vX.Y.Z-rc.Nand publish a GitHub Release marked prerelease. CHANGELOG.mdis not updated (only stable releases write to it).
On push to main (stable):
- Same bump computation.
- Set the manifest version to
X.Y.Z, build the zip + SHA-256. - Prepend release notes to
CHANGELOG.md. - Commit
manifest.json+CHANGELOG.mdtogether aschore(release): vX.Y.Z [skip ci], push tomain. - Tag
vX.Y.Zand publish a GitHub Release.
Branch protection: once main is protected, allow github-actions[bot] to bypass, or create a fine-grained PAT with contents: write and store it as repo secret RELEASE_TOKEN. The workflow picks it up automatically.
After the GitHub Release for a stable vX.Y.Z appears, download the matching zip and upload it to:
| Store | Zip | Fee |
|---|---|---|
| Chrome Web Store Developer Dashboard | clearcache-X.Y.Z.zip |
$5 one-time registration |
| Microsoft Edge Add-ons Partner Center | clearcache-X.Y.Z.zip |
Free |
| Opera Add-ons Developer Dashboard | clearcache-X.Y.Z.zip |
Free |
| Firefox Add-ons (AMO) | clearcache-firefox-X.Y.Z.zip |
Free |
Submission stays manual on purpose — every store requires a human to confirm listing copy and permission justifications. Canonical answers for each store's privacy / justification forms live in store/:
Contributions welcome. Please read CONTRIBUTING.md first.
Hard rules (also in CLAUDE.md):
- No AI-assistant attribution in commits, trailers, author/committer fields, or PR descriptions.
- No new dependencies, telemetry, or build steps. This extension stays minimal.
- Manifest V3 only.
- Don't manually edit
manifest.json'sversionfield — the release workflow owns it.
Reporting bugs → use the bug report template. Reporting security issues → see SECURITY.md (private disclosure via GitHub Security Advisories).
GNU General Public License v3.0 — see LICENSE.
ClearCache — a one-click cache-clear and hard-reload browser extension.
Copyright (C) 2026 Isaias Garcia
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Made with care, no analytics, and no AI co-authors.
Issues and PRs: github.com/isaiasgv/ClearCache

