No Cache Reload
A published Chrome extension that reloads the current tab while bypassing the browser cache — one click for a true hard reload, used by 2,000+ developers.
What makes it good
- 1One-click hard reload that bypasses the browser cache
- 22,000+ users on the Chrome Web Store
- 3Zero configuration — only needs tab permissions
How it works
How it works
The one-click action is a single call — Chrome re-requests the document and every subresource instead of revalidating:
chrome.tabs.reload(tabId, { bypassCache: true });That alone duplicates Ctrl+Shift+R, so the useful part is everything around it: choosing exactly which storage to wipe before the reload, and inspecting what is there in the first place.
Three kinds of storage, three mechanisms
This is the part most "clear site data" tools get wrong, because the three look identical to a user and behave nothing alike to an extension.
Per-origin data goes through chrome.browsingData, which accepts an origin filter for exactly seven types. Other sites are untouched:
await chrome.browsingData.remove(
{ origins: ['https://example.com'] },
{
cookies: true,
localStorage: true,
indexedDB: true,
cacheStorage: true,
serviceWorkers: true,
fileSystems: true,
webSQL: true,
},
);Session storage is not in that API at all — no extension API exposes it. The only way to clear it is to run script inside the tab, which is why most extensions quietly skip it:
chrome.scripting.executeScript({
target: { tabId, allFrames: true },
func: () => sessionStorage.clear(),
});The HTTP cache is global. Chrome cannot scope it to one origin, so clearing it affects every site you have visited. It is kept separate in the UI and excluded from "select all" for that reason.
The storage inspector
A second tab lists cookies, local storage and session storage as tables with a delete button on every row. Cookies are read through chrome.cookies rather than document.cookie, because document.cookie cannot see HttpOnly cookies by design — and those are usually the session cookies you actually care about.
const cookies = await chrome.cookies.getAll({ url: tab.url });
// Removal needs a URL matching the cookie's own domain and path.
const url = `${cookie.secure ? 'https' : 'http'}://` +
`${cookie.domain.replace(/^\./, '')}${cookie.path}`;
await chrome.cookies.remove({ url, name: cookie.name });Rows show value, domain, path, expiry as a relative age, and flags (Secure, HttpOnly, SameSite). Web-storage rows show each value's byte size, which is what quota errors are really about.
Permissions
Reading tab.url needs host access. Rather than requesting the broad tabs permission — which shows "read your browsing history" at install — the extension relies on activeTab, granted for exactly the tab you just acted on. Reloading every tab in a window needs no URLs at all, since tab ids are readable without permission.