Cookie Policy
Updated:
Last updated: 27 August 2026
JS Ledger sets no cookies. Not necessary ones, not analytics ones, not third-party ones. This page explains what that means, what is stored on your device, and why you were not asked to dismiss a consent dialog on the way in.
What the law actually requires
Article 5(3) of the ePrivacy Directive (2002/58/EC, as amended by 2009/136/EC
and implemented in each EU member state) governs storing information on, or
gaining access to information already stored on, a user’s device. The rule is
broader than the word “cookie” suggests: it covers cookies, localStorage,
sessionStorage, IndexedDB, cache-based identifiers, and device fingerprinting
alike.
Consent is required for all of it, with one exception. Storage is exempt when it is strictly necessary for providing a service the user has explicitly requested. That exemption is narrow, and “we would like to measure our traffic” does not fit inside it.
Whether personal data is involved is a separate question, answered by the GDPR — see the Privacy Policy. The two rules stack: storage can require consent under ePrivacy even where little or no personal data is at stake.
What this site stores on your device
Exactly one thing, and only if you ask for it.
| What | Type | When it is written | Contents | Expires |
|---|---|---|---|---|
| Theme preference | localStorage |
Only when you use the light/dark toggle | The literal string light or dark |
Never, until you clear it |
That entry is written by the page you are reading, stays in your browser, and is never transmitted anywhere. It holds no identifier, no timestamp, and nothing that could distinguish you from any other reader who prefers dark mode. Its only job is to make the site remember the choice you just made, so the setting does not reset on the next page.
That is the textbook shape of the “strictly necessary” exemption: storage the user explicitly requested, doing only what they asked it to do. So no consent is required, and no banner appears.
If you never touch the theme toggle, nothing at all is written to your device. Until then the site follows your operating system’s light or dark preference, which your browser reports without anything being stored.
What this site does not store
To be explicit, JS Ledger does not use:
- Cookies of any kind, including so-called “essential” ones. There is no session to keep and no login to remember.
- Analytics cookies or client-side identifiers. If analytics is enabled it is Cloudflare Web Analytics, which is cookieless by design: it stores nothing on your device and does not fingerprint your browser.
- Advertising, retargeting, or conversion-tracking pixels. There is no advertising on this site.
- Embedded third-party content — no comment widget, no video player, no social buttons, no tag manager. Each of those would ship its own storage under someone else’s rules.
- Third-party fonts or scripts. Typefaces are compiled into this site and served from this domain, so your browser never requests a file from another host to render a page.
- Site search that phones home. The index is downloaded with the page and queried inside your browser; what you type is never sent anywhere.
How to inspect or remove it
You do not need to take our word for any of the above.
Open your browser’s developer tools, go to the storage or application panel, and look at the entries for this domain. You should find an empty cookie jar and, at most, the single theme key described in the table.
To remove it, use “Clear site data” (or the equivalent for your browser) for this domain, or delete the individual entry. Nothing breaks: the site goes back to following your system preference.
Browser settings that block cookies or site data entirely also work here. The site is designed to render correctly when that storage is unavailable.
Global Privacy Control and Do Not Track
Some browsers send a Sec-GPC or DNT header expressing an objection to
tracking. This site honours both, in the only way that means anything: there is
nothing here to opt out of. No signal has to be interpreted, because no
mechanism exists that the signal would switch off.
Why it is built this way
Two reasons, and neither is legal caution.
The first is that a consent banner is a tax on the reader. It costs a click, it covers the text, it ships JavaScript that has to load before the page settles, and the overwhelming majority of readers dismiss it without reading it. A site that has nothing to consent to can show you the article and be done.
The second is that a banner tends to be a symptom. Sites need one because they have accumulated embeds, each with its own storage and its own policy, until nobody can say precisely what is written to a visitor’s device. Keeping that list at zero keeps the answer short enough to publish in a table.
What would change this
This policy is a description of the current site, not a permanent promise about every future version of it. Adding a comment system, an embedded video, a hosted font, an ad network, or a tag manager would introduce third-party storage, and would require both a consent mechanism and a rewrite of this page.
If that ever happens, this page changes before the feature ships, not after, and the date at the top changes with it. No such addition is planned.
Questions about anything on this page: contact@jsledger.com.