Free Chrome extension · Now on the Web Store

Storage Inspector

See everything a website has stored in your browser — cookies, localStorage, sessionStorage, IndexedDB, Cache Storage and service workers — in one readable place, with sizes on every key and an analyser that tells you what is wrong.

v1.2.0 · MIT licensed · Chrome, Edge, Brave, Opera and other Chromium browsers 116+

Live on the Chrome Web Store — one click to install, and it updates itself from then on. Prefer to read what you run? The ZIP is the same build and loads unpacked in about a minute.

No account. No server. No AI. Nothing you look at ever leaves your browser.

6Storage areas
27Analyser checks
45+Trackers named
0Bytes uploaded
0Cost, ever

Six kinds of storage, one screen

A modern site can put data in six different places, each with its own lifetime, size limit and pitfalls. Here is what each one is, and what the extension shows you about it.

Cookies

Small key/value pairs the browser attaches to every request it sends to a domain. The original way sites remembered you, and still how nearly all login sessions work.

Lifetime
Until the expiry date the site sets, or until the browser closes if it sets none.
Capacity
About 4 KB per cookie, and roughly 180 cookies per domain.
You see
Name, value, domain, path, size, expiry as both a date and a countdown, and every flag — Secure, HttpOnly, SameSite and partitioned.

The catch: document.cookie cannot see HttpOnly cookies, so anything that reads cookies from page JavaScript shows you an incomplete list. Storage Inspector uses the extension cookie API instead, which sees all of them — including the session cookie that actually matters.

localStorage

A simple string-to-string map scoped to one origin. The most-used storage API on the web, because it takes one line to write to.

Lifetime
Forever, until the site or the user deletes it. It survives restarts.
Capacity
Around 5 MB per origin in every major browser.
You see
Every key with its size and detected type, and a decoded view — JSON pretty-printed, JWT claims read out, base64 and URL-encoding unwrapped.

The catch: It is synchronous, so reading or writing a large value blocks the main thread and shows up as visible jank. It is also readable by every script on the origin, which is why storing session tokens there turns any XSS bug into account takeover.

sessionStorage

The same API as localStorage, but scoped to a single tab and wiped when that tab closes.

Lifetime
Until the tab is closed. Each tab gets its own independent copy.
Capacity
Around 5 MB per origin, per tab.
You see
The same key list, sizes and decoding as localStorage, kept separate so you can see which of the two a value actually came from.

The catch: Duplicating a tab copies sessionStorage across; opening a fresh tab does not. That difference is behind a lot of 'it works when I refresh but not in a new tab' bug reports.

IndexedDB

A real transactional database in the browser. Asynchronous, stores structured objects rather than strings, and handles far more data than localStorage.

Lifetime
Persistent, and can be marked as protected from automatic eviction.
Capacity
A large share of free disk — commonly hundreds of megabytes to several gigabytes.
You see
Every database and version, every object store with its key path, indexes and record count, and the records themselves with per-record sizes.

The catch: The raw API is verbose enough that most people reach for a wrapper and then lose track of what is actually stored. Offline-first apps routinely accumulate hundreds of megabytes here without anyone noticing.

Cache Storage

A store of whole HTTP request/response pairs, normally filled by a service worker so a site can load offline.

Lifetime
Persistent, and entirely under the site's control — the browser never clears individual entries for you.
Capacity
Shares the same origin quota as IndexedDB.
You see
Every cache, every cached request with its status, content type and size, and which caches look like leftover versions.

The catch: Nothing expires on its own. If a service worker's activate handler forgets to delete the previous version, the old cache sits there forever — this is the single most common cause of a browser quietly holding hundreds of megabytes for one site.

Service Workers

A background script that sits between the page and the network, able to intercept requests, serve from cache and run without the page open.

Lifetime
Registered until the site or the user unregisters it. It outlives the tab.
Capacity
Not storage itself, but it is what fills Cache Storage.
You see
Scope, script URL, and the state of the active, waiting and installing worker.

The catch: A new worker installs but stays in the 'waiting' state until every tab on the origin closes. That is why users keep seeing an old build after you have deployed — and it is visible at a glance here.

What it does

A viewer is the easy part. Most of the work went into making the data readable and into the analysis on top of it.

Everything in one view

Six storage areas side by side, with a sidebar that shows what each one holds before you click into it. No hunting through nested panels to find where a value lives.

Sizes on everything

Per-key byte counts, per-area totals, a largest-keys ranking across all areas, and quota meters for localStorage, sessionStorage and the origin as a whole. You can see exactly what is filling the quota.

Values decoded, not dumped

JSON is pretty-printed. JWTs have their header and claims read out, with the expiry resolved to a real date. Base64, URL-encoding, UUIDs and Unix timestamps are all recognised and unwrapped.

A real analyser

A 0-100 storage health score built from explicit rules across security, privacy, size, expiry and hygiene. Every finding shows the evidence it matched on and suggests a concrete fix.

Search and filter

Search keys and values across any area, then narrow with one click: cookies missing Secure, cookies readable by JavaScript, known trackers, values expiring soon, credential-shaped keys, anything over 100 KB.

Edit values live

Change a cookie's value or its Secure, HttpOnly, SameSite and expiry flags. Rewrite a localStorage or sessionStorage key, or add a new one. Edit an IndexedDB record as JSON. The site sees the change immediately, exactly as if its own code had written it.

Delete what you select

Individual cookies and keys, whole IndexedDB databases, caches, single cache entries, or service worker registrations. Every delete goes through two confirmations: one to check the selection, one that spells out the consequences.

Live updates

Turn on Live mode and the view re-reads storage as the page changes, so you can watch what a login flow, a checkout step or a service worker update actually writes.

Export anything

A full JSON snapshot, a value-redacted JSON snapshot that is safe to attach to a bug report, a CSV for spreadsheets, or a Markdown analysis report. All generated in the browser.

What the analysis looks like

Every finding names the rule it matched, lists the keys it matched on, and suggests a fix. Below is the extension’s actual output for the demo page bundled with it, which deliberately seeds bad practice — reproduced verbatim, findings and all.

localhost:4321 — Analysis
70C
Storage health 70 / 100

No critical issues. A few things are worth tightening up.

0 critical4 warnings8 notes
WarningExpiry

2 expired JWTs still stored

The tokens decoded cleanly but their exp claims are in the past. If the app is still sending them, every request is a guaranteed 401.

Cookieexpired_tokenexpired 4d ago
Localstale_tokenexpired 1d ago

Fix: Clear stale tokens on 401 and on logout instead of leaving them in storage.

WarningSecurity

2 credential-shaped keys in localStorage

localStorage survives browser restarts and is readable by every script on the origin. A single XSS bug — including one in a third-party script — hands these over. sessionStorage is narrower; an HttpOnly cookie is safer still.

Localaccess_token131 B
Localrefresh_token90 B

Fix: Keep session tokens in HttpOnly, Secure cookies. If the front-end must hold a token, prefer a short-lived one in memory.

InfoPrivacy

6 known tracking keys from 4 vendors

Matched against a built-in catalogue of well-known analytics, advertising and session-recording keys: Google Analytics, Meta Pixel, Hotjar, Segment. Categories present: Analytics, Advertising, Session replay.

Cookie_fbpMeta Pixel — browser-level ad attribution
Local_hjSessionUser_5551Hotjar — session recording and heatmaps

The score weights criticals at 20 points, warnings at 6, and caps all informational notes at 6 combined, so a page full of harmless notes still grades well.

Every check it runs

27 rules across five categories. All of them are plain comparisons, regular expressions and thresholds — which is why results are instant, identical every time, and work offline.

Security

The cookie-flag and token-storage mistakes that turn a small bug into a stolen session.

7
  • Cookies without Secure on an HTTPS page — sent in the clear over any HTTP request to the same domain
  • Credential-shaped cookies without HttpOnly, readable by any script via document.cookie
  • SameSite=None without Secure, which browsers reject outright so the cookie silently never arrives
  • Cookies with no SameSite attribute at all, relying on a browser default that has changed before
  • Session tokens and API keys sitting in localStorage, where they survive restarts and any XSS can read them
  • JWTs with no exp claim, which stay valid until the signing key rotates
  • JWTs using alg: none — unsigned, and therefore forgeable by anyone

Privacy

Who else is storing things on this origin, and what personal data is sitting in plain text.

4
  • Known analytics, advertising, session-recording, support and A/B testing keys, matched against a built-in catalogue of around 45 vendors
  • Which vendor each key belongs to and what it is for, rather than just labelling it a tracker
  • Cookies scoped to a domain other than the one you are on
  • Email addresses stored unencrypted in web storage

Size and quota

What is filling the quota, and what is slowing the page down.

6
  • Cookies over the 4 KB per-cookie limit browsers enforce
  • A total cookie header large enough to risk 431 responses — and paid for on every single request, including images
  • localStorage or sessionStorage approaching the 5 MB ceiling, where the next write throws QuotaExceededError
  • Origin storage quota usage, past which the browser starts refusing writes and may evict the origin
  • Individual values over 512 KB, which block the main thread every time they are read or written
  • Leftover versioned caches a service worker forgot to delete on activate

Expiry

What is about to stop working, and what already has.

6
  • Expired cookies the browser has not swept up yet
  • Cookies expiring within 24 hours — useful when a session keeps dropping mid-test
  • Cookies requesting more than 400 days, which Chrome silently caps
  • Session cookies that disappear on browser close
  • Expired JWTs still being sent, guaranteeing a 401 on every request
  • JWTs expiring within 24 hours

Hygiene

The quiet bugs and dead weight that accumulate over a project's life.

4
  • The same value stored under two or more keys, usually a migration that never cleaned up
  • Stringified bugs — keys holding "undefined", "null" or "[object Object]" because something was stored without being serialised
  • Service worker updates stuck in the waiting state, which is why users still see the old build
  • Redundant service worker registrations that failed to install

Why this exists

Chrome DevTools already shows browser storage, and for looking up one cookie it is perfectly fine. The trouble starts the moment you have a real question.

The six storage areas are six separate trees in the Application panel, so there is no way to see totals, compare areas, or find the key that is eating the quota. Sizes are shown for some areas and not others. Values are printed raw, so a JWT is an unreadable string and a JSON blob is one long line. There is no search across areas, and nothing tells you that the session cookie you are looking at is missing its Secure flag.

Storage Inspector was built to answer the questions that actually come up: what is stored here, how much of it, what does it mean, what is wrong with it, what happens if I change it, and what can I safely delete. Everything is on one page, everything has a size, values are decoded rather than dumped, and a rule engine points at the problems instead of leaving you to spot them.

It is deliberately boring technology — no framework, no build step, no dependencies, no AI, and no server. The whole thing is a few files of plain JavaScript that read your browser and render a table. That is also why it can promise your data goes nowhere: there is no code in it capable of sending data anywhere.

Compared with the DevTools Application panel

DevTools is not the enemy — it is where this started. But it is a browser feature that has to serve everyone, and a focused tool can go further in one direction.

Feature comparison between the Chrome DevTools Application panel and Storage Inspector
CapabilityDevTools Application panelStorage Inspector
All six storage areas on one screenSeparate trees per areaOne dashboard with totals
Size of every keyPartial — some areas onlyEverywhere, plus largest-keys ranking
Search across keys and valuesPer-area filter boxSearch plus one-click filters
JWT decodingNoHeader, claims and resolved expiry
JSON pretty-printingPreview column onlyFull decoded view
Security analysis of cookie flagsNoScored, with fixes
Tracker identificationNo~45 vendors named
Quota warningsNoMeters and thresholds
Export a snapshotNoJSON, redacted JSON, CSV, Markdown
Bulk delete a selectionOne row at a timeMulti-select across areas
Edit a value in placeYesYes, with a diff to confirm
Edit cookie flagsYesYes, with validation
Guard rails on deletionNoneTwo steps, consequences spelled out
Works with no installBuilt inNeeds the extension

Alternatives, and when to use them instead

The other tools for this job and where each one stops. Checked in August 2026. Several of these are better than this one at their specific job — that is noted where it is true.

Chrome DevTools (Application tab)

Built in, always there, and the correct answer for a lot of jobs.

Where it stops
It shows each storage area in its own tree with no combined total, gives sizes for only some of them, and does not decode JWTs, identify tracker cookies, warn about quota, or audit cookie flags.
What Storage Inspector does
One dashboard across all six areas with sizes and a largest-keys ranking, decoded JWTs and JSON, a scored cookie-security check, named trackers and quota meters.
Where they’re better
Nothing to install, and it is the only one of these that can pause JavaScript at the moment storage is written. For live debugging, use DevTools.

EditThisCookie

For years the default cookie editor, with millions of installs.

Where it stops
It was removed from the Chrome Web Store on 28 September 2024. An unrelated extension has since taken the same name and is widely reported as malicious — if you still have the original installed it no longer updates, and reinstalling by searching the name is a real risk.
What Storage Inspector does
Storage Inspector reads and edits cookies with validation on the flags, shows HttpOnly cookies that page JavaScript cannot see, and installs with no site access — cookie access is granted per site, explicitly, by you.
Where they’re better
It had a mature import/export format and years of muscle memory behind it. Dedicated Manifest V3 cookie editors like Cookie-Editor are closer replacements if cookie editing is all you need.

Cookie-Editor

The most common straight replacement for EditThisCookie.

Where it stops
Cookies only — nothing about localStorage, IndexedDB, Cache Storage or service workers.
What Storage Inspector does
Cookies are one of six areas here, sized and searchable alongside the rest, which is what you want when the question is “what is this site storing” rather than “change this one cookie”.
Where they’re better
Faster for the single job of editing one cookie, and it does that job well.

Storage Area Explorer

A long-standing extension for viewing extension and web storage.

Where it stops
Narrower coverage, and no security or quota analysis.
What Storage Inspector does
All six areas, with the analyser and export on top.

Who it’s for

Web developers

Find out why a session drops, why a cache will not clear, or why a user is stuck on an old build. See what a login flow actually writes, and which key the app really reads when two of them look the same.

Security engineers

Audit cookie flags and token storage in seconds rather than clicking through a panel one row at a time. Every finding names the rule it matched, so it drops straight into a report.

QA and support

Attach an exact record of what a site had stored to a bug report. The redacted export strips values but keeps the structure, sizes and findings, so it is safe to share.

Privacy researchers

Document what a site stores and which third parties it stores it for, with vendor names and purposes rather than an opaque list of key names.

People learning the web platform

Six storage APIs are hard to keep straight in the abstract. Seeing a real site's data in all of them at once, with lifetimes and quotas spelled out, makes the differences concrete.

Anyone curious

See exactly what a website is keeping on your machine — how much of it, for how long, and how much of it belongs to companies you have never visited.

Install it in one click

It is on the Chrome Web Store, so this is the same three steps as any other extension — and it updates itself from then on. The manual route is still below if you would rather have it.

  1. Open the Chrome Web Store listing

    The button above goes straight to it. It works in any Chromium browser — Edge, Brave, Opera, Arc and Vivaldi all install from the Chrome Web Store, though Edge shows a one-time banner asking you to allow extensions from other stores.

  2. Click Add to Chrome

    Chrome asks you to confirm. The permission list is deliberately short: there is no host permission in the manifest, so the extension installs with access to no site at all and nothing running in the background.

  3. Pin it to the toolbar

    Click the puzzle-piece icon next to the address bar, find Storage Inspector, and click the pin. Now it is one click away on any site — or press Alt+Shift+S. Worth pinning rather than digging it out of the menu each time, because that click is also what grants it access to the tab: it starts with access to no site at all, and gets it one tab at a time, from you.

Rather install it from the ZIP?

Byte for byte the same build as the listing, installed the way Chrome tests every extension before it is published. You give up automatic updates and gain the ability to read every line before you run it.

  1. Download and unzip

    Extracting gives you a single folder, storage-inspector-1.2.0, containing manifest.json and an INSTALL.txt with these same steps. That folder is the extension. Move it somewhere permanent first — Documents, or wherever you keep tools — because Chrome loads it from that exact path every time it starts, so leaving it in Downloads and later clearing them out would uninstall it.

  2. Open the extensions page

    Paste this into the address bar and press Enter. On Edge it is edge://extensions, and on Brave, brave://extensions.

    chrome://extensions
  3. Turn on Developer mode

    The toggle is in the top-right corner. This is what allows an extension to be loaded from a folder instead of the Web Store. It does not change anything else about how your browser behaves.

  4. Click Load unpacked

    A button appears in the top-left once Developer mode is on. Select the storage-inspector-1.2.0 folder itself — the one with manifest.json directly inside it, not its parent and not the src folder.

  5. Pin it to the toolbar

    Click the puzzle-piece icon next to the address bar, find Storage Inspector, and click the pin. Now it is one click away on any site — or press Alt+Shift+S. Worth pinning rather than digging it out of the menu each time, because that click is also what grants it access to the tab: it starts with access to no site at all, and gets it one tab at a time, from you.

Check what you downloaded

Installing unpacked means trusting a file from the internet, so here is its fingerprint. Run one of these on the ZIP and compare — if the hash matches, the file arrived exactly as it was built.

SHA-25678c012a2e12951523cae5488890adc79a5fdab6161ac5125a0abc84a8abfc2fc
Windows (PowerShell)Get-FileHash storage-inspector-1.2.0.zip
macOSshasum -a 256 storage-inspector-1.2.0.zip
Linuxsha256sum storage-inspector-1.2.0.zip

Two things worth knowing. While any unpacked extension is installed, Chrome shows a “Developer mode extensions” notice on startup — that describes how the extension was loaded, not a problem with it. And unpacked extensions do not update themselves, so check back here for new versions, or install from the store and let Chrome handle it; the ZIP also contains an INSTALL.txt with these steps and this page’s address.

Privacy

The short version: nothing is collected, because there is nothing in the extension capable of collecting it.

  • No network code at all. The extension makes no fetch, XMLHttpRequest or WebSocket calls. There is no server behind it and no endpoint to send anything to.
  • No analytics, no telemetry, no crash reporting. Not anonymised, not aggregated — none.
  • No account, no sign-in, no identifiers. There is no way to tell one user from another, even in principle.
  • Nothing is stored. What it reads is rendered into its own interface and dropped when you close it. The only thing it ever writes to disk is your own interface preferences, such as the refresh interval.
  • No remote code. Everything it runs ships inside the extension. It loads no external scripts, fonts, stylesheets or images.
  • Exports stay local. JSON, CSV and Markdown files are generated in the browser and handed straight to Chrome’s download manager. A full export contains real values including tokens, so treat it as sensitive — the redacted export exists for sharing.

It installs with access to no sites at all

There is no host permission in its manifest, so adding it approves nothing and nothing runs in the background. Access arrives only when you ask for it, in two steps:

  • Clicking the toolbar icon (or pressing Alt+Shift+S) gives it access to that one tab, for as long as that tab stays on that page. That covers localStorage, sessionStorage, IndexedDB, Cache Storage and service workers — five of the six areas, with no prompt at all. It lapses when the tab navigates or closes, and never reaches any other tab.
  • Allowing a site grants ongoing access to that one domain. Only cookies need this, for the reason below. You approve it once and are not asked for that domain again.

If you would rather grant once and never be asked, an Allow on all sites option sits beside every prompt. Either way you can take any of it back at any time from Chrome itself — right-click the toolbar icon, or edit site access at chrome://extensions. Nothing about what leaves your browser changes: still nothing.

Why cookies need a permission of their own

HttpOnly cookies are hidden from page JavaScript by design — which is precisely why they hold session tokens. Any tool that reads cookies from inside the page shows you an incomplete list, usually missing the one that matters. Reading them properly means going through the browser’s cookie API, and that API is the one thing the per-tab access does not cover: it consults only permissions you have genuinely granted.

The grant covers the site’s domain over both http and https, because anything narrower would hand you a cookie list quietly missing rows. A cookie belongs to a domain rather than an exact address, so access limited to www.example.com would drop every .example.com cookie; and Chrome files a cookie under https when it is Secure and http when it is not, so one scheme alone would hide about half the list with no way for you to tell which half. It still stops at that one domain, and registry suffixes are never wildcarded — a page on shop.example.co.uk asks for example.co.uk, never for every .co.uk site.

Frequently asked questions

What should I use now that EditThisCookie has been removed?

EditThisCookie was taken off the Chrome Web Store on 28 September 2024, and an unrelated extension has since published under the same name and is widely reported as malicious — so searching the name and installing the first result is genuinely risky. If you only need to edit cookies, a dedicated Manifest V3 cookie editor such as Cookie-Editor is the closest replacement. Storage Inspector covers cookies as one of six storage areas: it reads and edits them with validation on the flags, shows HttpOnly cookies that page JavaScript cannot see, and installs with no site access at all — cookie permission is granted per site, by you, when you ask for it.

How do I fix QuotaExceededError on localStorage?

QuotaExceededError means the origin has hit its storage quota — roughly 5 MB for localStorage in every major browser, shared across the whole origin. The fix is almost never to write less; it is to find what is already in there. Open Storage Inspector on the page and look at the largest-keys ranking: in practice it is usually one cached API response, a serialised Redux store, or an analytics library queuing events it never flushed. The quota meters show how close each area is to its limit, so you can tell whether you are near the edge before the exception starts firing. Note that IndexedDB and Cache Storage share a much larger quota, so oversized data usually belongs in one of those rather than in localStorage.

Why does my site keep serving an old version after I deploy?

Nine times out of ten it is a service worker. A new worker installs but stays in the “waiting” state until every tab on the origin is closed, so you keep getting the previous build; and if the worker's activate handler never deletes the old cache, Cache Storage keeps serving stale responses indefinitely. Storage Inspector shows the active, waiting and installing worker side by side, and flags caches that look like leftover versions, so you can see which of the two is happening rather than guessing. A hard reload does not fix either one.

How can I tell which trackers a site is using?

By the cookies and storage keys they leave behind — the names are fairly stable. Storage Inspector recognises around 45 vendors and labels their keys where it finds them, so _ga and _gid show as Google Analytics, _fbp as Meta, and so on, rather than sitting in the list as unexplained strings. It is a naming aid rather than a blocker: it tells you what is there, and nothing is sent anywhere for it to do that.

Is Storage Inspector free?

Yes, completely, with no paid tier, no trial, no account and no usage limits. It is open source under the MIT licence.

Does it send my data anywhere?

No. The extension contains no network code at all — no fetch, no XMLHttpRequest, no WebSockets, no analytics and no telemetry. There is no server behind it to receive anything. Whatever it reads is rendered into its own interface and discarded when you close it. You can verify this yourself: the source is a few files of plain JavaScript with no dependencies and no build step, so what you read is exactly what runs.

Do I need an account?

No. There is nothing to sign up for, nothing to log into, and no way to identify you even if someone wanted to.

Does it need access to all my websites?

No, and as of 1.2.0 it does not ask for it. It installs with access to no site at all — there is no host permission in its manifest, so there is nothing to approve when you add it and nothing running in the background. Clicking the toolbar icon grants it access to that one tab, for as long as that tab stays on that page, which is enough to read localStorage, sessionStorage, IndexedDB, Cache Storage and service workers with no prompt at all. Cookies are the single exception and get their own question below. If you would rather grant once and never be asked, an "Allow on all sites" option sits next to every prompt — but that is your choice to make, not the default.

Why do cookies ask for permission separately?

Because Chrome's cookie API is the one thing the temporary per-tab access does not cover: it consults only permissions you have genuinely granted and ignores the tab grant entirely. So the first time you look at cookies on a site, the extension asks for that one site — you approve it once and are never asked for that domain again. Everything else on the page is already on screen by then; only the cookie panel waits.

Why does the cookie permission cover the whole domain and both http and https?

Because anything narrower would show you a cookie list quietly missing rows, which is worse than showing none. Cookies are scoped to a domain rather than an exact address, so a grant limited to www.github.com would silently drop every .github.com cookie — most of the interesting ones. And Chrome files a cookie under https when it has the Secure flag and http when it does not, whatever the page that set it used, so granting one scheme would hide roughly half the list with no way for you to tell which half. It still stops at that one domain: allowing github.com tells it nothing about any other site. Registry suffixes are never wildcarded either — a page on shop.example.co.uk asks for example.co.uk, never for every .co.uk site.

Can I take the permission back?

Yes, at any time, and from Chrome rather than from the extension — right-click the toolbar icon and use "This can read and change site data", or open chrome://extensions and edit its site access there. Revoking is instant and needs no uninstall. The extension deliberately has no revoke button of its own: a second, subtly different control would only confuse where access actually lives.

How is this different from the DevTools Application panel?

DevTools shows the six storage areas as six separate trees with no totals, partial size information, raw values and no analysis. Storage Inspector puts everything on one screen with a size on every key, decodes JSON and JWTs instead of printing them raw, searches across areas, ranks the largest keys, and runs a rule engine that flags insecure cookie flags, tracker keys, quota pressure and expired tokens. Both can edit values in place; Storage Inspector shows you the old value next to the new one before it writes, and puts two confirmations in front of a delete. DevTools is built in and needs no install, which remains its real advantage.

Can it see HttpOnly cookies?

Yes, and this is one of the main reasons it exists as an extension rather than a bookmarklet. HttpOnly cookies are invisible to document.cookie by design — which means any page-script tool shows you an incomplete list, usually missing the session cookie you actually care about. Storage Inspector reads cookies through the browser's extension API, so it sees every one.

Does it use AI?

No. Every finding comes from an explicit rule — a comparison, a regular expression or a threshold — written out in the source. That means results are identical every time, instant, free, work offline, and can be checked line by line. An AI-based analyser would be slower, would cost money to run, would need your data sent to a server, and would occasionally invent things.

Which browsers does it work in?

Any Chromium-based browser on version 116 or newer: Chrome, Edge, Brave, Opera, Arc, Vivaldi. Firefox and Safari use different extension APIs, so they are not supported today.

Should I install from the Web Store or from the ZIP?

The Web Store, unless you have a reason not to: it is one click, it updates itself, and the build has been through Google's review. The ZIP exists for the case where you would rather read the code you are about to run — it is a few files of plain JavaScript with no build step, so what you unzip is exactly what executes, and its SHA-256 is published here. Loading unpacked is a first-class Chrome feature rather than a workaround, and grants no more power than a published extension with the same permissions; the trade-off is that it never updates itself, and Chrome shows a 'Developer mode extensions' notice on startup while any unpacked extension is installed.

Is it on the Chrome Web Store?

Yes. It passed review and the listing is live, so the normal way to install it is the Add to Chrome button at the top of this page — one click, and it updates itself from then on. The ZIP is still here for anyone who would rather load it unpacked and read exactly what they are running; it is the same build.

How do I know the ZIP is what it claims to be?

Two ways. The SHA-256 hash of the exact file served from this page is published in the install section, generated when the page was built — run Get-FileHash, shasum -a 256 or sha256sum on your download and compare. Beyond that, the extension is a few files of plain JavaScript with no dependencies, no build step and no minification, so the code you unzip is exactly the code that runs; you can read all of it in an afternoon.

How do I update it later?

If you installed from the Web Store, you do not — Chrome updates it in the background, usually within a few hours of a new version being published. If you installed from the ZIP, download the new one, unzip it over the old folder (or somewhere new), then click the refresh icon on the extension's card at chrome://extensions. Either way your interface preferences survive; nothing else is stored. Unpacked extensions never update on their own, which is a feature when you want to know exactly what is running and a chore when you forget — this page always has the current version number at the top.

What happens to the extension if I move or delete the folder?

Only applies to a ZIP install — a Web Store install has no folder of yours to move. Loaded unpacked, it stops working, because Chrome loads it from that exact path every time it starts — it copies nothing. Put the folder somewhere permanent before you load it, not in Downloads where you might clear it out later. If you do move it, remove the entry at chrome://extensions and load it again from the new location.

What is the storage health score?

A 0-100 number, with a letter grade, summarising what the analyser found on this origin. Critical findings cost 20 points each and warnings 6, while all informational notes together are capped at 6 — so a page with a lot of harmless notes still scores well, and one real security problem moves the needle. It is a summary, not a verdict: always read the findings themselves, because a site can score badly for reasons that are entirely deliberate.

Is deleting or editing storage from here safe?

Both do exactly what the site itself could do, and what clearing site data in browser settings does — nothing lower-level or riskier. They are still real changes: you will be logged out if you delete a session cookie, and unsaved local data is gone. That is why deletion takes two confirmations and edits show you the old value alongside the new one before writing. Sites often recreate what they need on the next page load.

What is in the export?

The full JSON export contains everything the scan read, including cookie values and tokens, plus the analysis. Treat it as sensitive. The redacted export replaces every value with a placeholder while keeping keys, sizes, flags, structure and findings intact — that is the one to attach to a bug report or share with a colleague. There is also a CSV for spreadsheets and a Markdown report for writing things up.

Why can it not read some pages?

Chrome blocks every extension from scripting its own internal pages (chrome://), the Chrome Web Store, other extensions' pages, and view-source views — this is a browser rule, not a limitation of this extension. Local file:// pages work if you enable 'Allow access to file URLs' on the extension's details page. Storage Inspector tells you which of these applies rather than showing an empty screen.

Does it slow down my browsing?

No, and since 1.2.0 it is not merely idle but unable to act: with no site access until you grant it, there is nothing it could run on a page you have not opened it on. There is no content script on every page, no background polling and no listeners on your browsing. A scan happens only when you ask for one, and typically takes a few tens of milliseconds.

Why are some IndexedDB and cache lists cut short?

Reads are capped at 200 records per object store and 300 entries per cache so that a site holding hundreds of thousands of records cannot freeze the interface. Record counts and total sizes are still complete — only the displayed rows are limited — and the dashboard says explicitly when a list has been truncated.

Why are some cache sizes approximate?

A cached response only knows its exact size if it carries a Content-Length header. Where that is missing, the extension reads the body to measure it, but only for a bounded number of entries so a large cache cannot stall the scan. Anything estimated is marked as such.

What does 'credential-shaped' mean?

The key name matches a pattern that conventionally holds a secret — access_token, session_id, api_key, jwt, password and similar. It is a name-based signal, not proof: a key called auth_prefs will be flagged and is probably harmless. The finding is a prompt to look, not a verdict.

How does it identify trackers?

By matching key names against a catalogue of well-known analytics, advertising, session-recording, support and A/B testing keys covering around 45 vendors — Google Analytics, Meta Pixel, Hotjar, Microsoft Clarity, Mixpanel, Amplitude, Segment, HubSpot and others. Matching happens entirely offline against a list shipped inside the extension. It names the vendor and what the key is for, rather than just labelling something a tracker.

Can I edit a stored value?

Yes. You can rewrite any cookie's value along with its Secure, HttpOnly, SameSite and expiry flags; change any localStorage or sessionStorage key, or add a new one; and edit an IndexedDB record as JSON. Every write shows the current value and the new one side by side before it is applied, so you can copy the old one first. The site sees the change immediately, exactly as if its own code had written it.

Are there cases where editing is not offered?

Yes, and deliberately. An IndexedDB record containing a Blob, a typed array, or anything too large to display in full is shown read-only, because what you see is a summary rather than the real record — writing it back would silently destroy the parts that are not shown. A cookie's name, domain and path are also fixed, because those three identify it: changing them would create a second cookie rather than move the first. Cache Storage entries and service worker scripts are read-only too.

What stops me deleting something by accident?

Every deletion goes through two separate confirmations, because a single dialog is the one people learn to click through without reading. The first shows exactly what you selected. The second is a different question — it spells out the consequences in specific terms, such as which selected cookies look like login state and will sign you out, or that an entire IndexedDB database is going rather than just the rows on screen. For the riskiest selections — session cookies, whole databases, service workers, or more than twenty items — you also have to type the word DELETE.

What people look for

Everything below is something Storage Inspector answers directly.

More free tools

Table Grabber

Convert any table to CSV, Excel, Markdown, JSON, SQL and more

Git Rescue

Git cheat sheet & fix-it playbook

Query Studio

Free SQL translator, formatter & validator

Browse all tools →