Website Cookie Inventory Scanner
Inventory the cookies a page sets on a plain visit, with every attribute, scope and lifetime laid out, and flags separated clearly into what was observed and what was inferred.
Passive public checka2z.tools reads publicly visible information from the address you enter. It is a read-only request - nothing is submitted, changed or probed.
Use the tool
What this shows you
Every cookie a page sets on a first, unauthenticated visit - with its full attribute set laid
out: Secure, HttpOnly, SameSite, the domain and path it
is scoped to, how long it lives, and whether a __Host- or __Secure-
prefix is actually being honoured.
It is the inventory you need before you can answer the two questions that matter: what is this site storing in my visitors' browsers, and is any of it scoped more widely than it needs to be.
Cookie values are never shown
The tool reports each cookie's name and the length of its value, never the value itself. That is deliberate and not negotiable: a session cookie is a credential, and a tool that printed one into a page - or into an export somebody emails around - would be handing out exactly the thing the cookie exists to protect. The underlying service redacts before the value ever reaches this page.
Observed versus inferred
The attributes are observed. They were read directly from the
Set-Cookie header and are facts.
The purpose column is inferred, and the tool labels it that way every time it
appears. Cookie names are conventional rather than standardised: something called
sid is probably a session identifier and _ga is almost certainly
Google Analytics, but “probably” is the honest word. Presenting a guess as a fact is
how consent tooling ends up with confidently wrong cookie declarations, so the distinction is
kept visible rather than collapsed into a single confident answer.
What the attributes mean
- Secure - the cookie is only ever sent over HTTPS. Without it, any plain HTTP request to the domain sends the cookie in the clear, where it can be read off the network. There is no case for omitting it on a site served over HTTPS.
- HttpOnly - script cannot read the cookie. For a session cookie this is what stops a cross-site scripting bug becoming account takeover. Omit it only where your own front-end genuinely needs to read the value.
-
SameSite - whether the cookie travels on cross-site requests.
Laxis the sensible default for a session cookie.Noneis required for genuine cross-site use and must be paired withSecureor browsers reject it outright. -
Domain - a leading dot sends the cookie to every subdomain. That includes
ones run by another team, hosted elsewhere, or pointing at something abandoned. A host-only
cookie, with no
Domainattribute at all, is the tighter default. -
Prefixes -
__Host-and__Secure-are enforced by the browser rather than by convention.__Host-requiresSecure, a path of/and noDomain, which makes the cookie impossible for a subdomain to overwrite. The tool reports whether a prefixed cookie actually meets its requirements, because one that does not is silently rejected.
Subdomain scope is the finding people miss
A cookie scoped to .example.com is readable and writable by every subdomain. If any
one of them is compromised - an old marketing site, a staging box, a third-party service on a
CNAME - that subdomain can read the cookie, and can also set one that overwrites yours
on the parent domain. Session fixation through a forgotten subdomain is a real and recurring
pattern, and it is invisible unless you look at the scope.
Limitations
This checks one URL, unauthenticated, once. Sites set most of their interesting cookies after
login, and a home page that sets nothing tells you nothing about the account area. It also only
sees cookies set in Set-Cookie response headers - cookies written later by
JavaScript, including most analytics and consent cookies, are invisible to a passive check
because they do not exist until the page runs.
For a cookie you are designing rather than auditing, use Secure Cookie Builder. For the wider header picture, run the Website Security Audit.
Frequently asked questions
Why do I see fewer cookies here than in my browser's developer tools?
Because this is a passive check. It sees cookies sent in Set-Cookie headers
on one response. Your browser also shows cookies written by JavaScript after the page
loads - which is most analytics, consent and personalisation cookies - and cookies set by
third-party scripts. None of those exist until the page executes.
Can I see the cookie values?
No, and that is by design. Cookie values are frequently credentials. The tool reports the length so you can tell a short flag from a long token, and nothing more.
Is a persistent cookie a problem?
Not inherently. It is correct for a remembered language or theme and worth questioning for anything that identifies a person, both on privacy grounds and because a long-lived identifier is a long-lived thing to steal.
My cookie has a __Host- prefix but is flagged. Why?
The prefix is a promise the browser enforces. __Host- requires
Secure, Path=/ and no Domain attribute. If any of
those is missing the browser rejects the cookie entirely, so a prefixed cookie that does
not meet them is not merely imperfect - it is not being set at all.
References
Related tools
Rate this tool
Was this tool useful? Your feedback helps us improve it.