Privacy
This site has no accounts and no analytics, and nothing you type is ever transmitted. It does carry third-party advertising. Here is exactly what that means in practice.
The short version
- You never sign up, log in, or give us an email address.
- Your key presses are processed by JavaScript in your own browser tab and are never transmitted — there is no upload, no logging endpoint, no third-party script.
- No analytics platform, tag manager, heatmap or session recorder runs on this site. Third-party advertising does run — see the advertising section below.
- This site sets no cookies of its own. The advertising provider may set its own. Local storage is used only for your theme choice, tool preferences and test results you chose to save.
- The web host still records ordinary server request logs, as every web server does. That is described honestly below.
- You can wipe everything this site stored on your device with one button, further down this page.
No accounts and no identifiers
There is no registration, no login, no email capture and no newsletter. Nothing on this site asks who you are, and no user identifier is generated, assigned or stored. Two visits from the same browser are not linked together by anything this site controls.
What happens to your keystrokes
When you press a key on a test page, the browser creates a keyboard event and passes it to JavaScript running inside your tab. That code reads the event's timestamp and properties, does the arithmetic, and writes the result into the page. The whole cycle takes place in your browser's memory.
There is no server-side processing of keystrokes, because nothing is sent to a server to
process. None of the measurement or interface code contains a fetch(), an
XMLHttpRequest, a navigator.sendBeacon() or a WebSocket call:
there is no upload path to switch off. Nothing about what you typed, how fast you typed or
which keys registered leaves the device.
The one component that does make requests is the service worker that keeps the site usable offline. It requests only this site's own pages and files from this site's own address, which is what an ordinary page load does anyway, and it never sends input data, results or identifiers of any kind.
The site is also served with a Content Security Policy that restricts network connections and resource loading to its own origin, so even a mistake in future code could not quietly ship data to a third party without that policy being loosened first.
What is stored on your device
The site uses localStorage, which is browser storage that stays on your
computer and is never attached to a network request the way a cookie would be. Everything
it writes is namespaced with a klt. prefix.
| Key | What it holds | Written when |
|---|---|---|
klt.theme |
Either dark or light, so the site does not flash the
wrong colours on your next visit. |
You use the theme toggle in the header. |
klt.history.v1 |
Test results you explicitly saved: a timestamp, the tool name, your own label, the computed statistics and the browser environment. Capped at 50 records. | You press a save button on a test page. |
klt.layout |
An interface preference: the keyboard form factor, legend layout and platform a tester was last set to, so the map looks the same on your next visit. | You change one of those menus on a tool page. |
klt.keycounter.v1 |
Per-key press counts from the key counter — which keys you pressed and how many times, but never the order and never any typed text. Written only while the “keep counting across page reloads” option is switched on, which is off by default. It stays on this device like everything else here. | You turn that option on and then press keys on that page. |
None of this is readable by us. It is not synchronised, not backed up and not sent anywhere. If you use a different browser or a private window, it starts empty. If your browser blocks local storage, the tools still work — results simply cannot be saved between visits.
Files you export
Exporting a result to CSV, JSON or an image builds the file in your browser and hands it to your own download folder. No copy is uploaded, and the site has no record that an export happened.
Delete everything this site stored on your device
Local data in this browser
Checking what is stored in this browser…
This removes every klt. key from this browser's local
storage and lists exactly what was removed. It cannot be undone, and saved test history is
not recoverable afterwards. Clearing the theme key returns the site to its default dark
theme on your next visit.
Cookies
This site sets no cookies of its own. The advertising provider loaded on these pages may set cookies or similar identifiers from its own domain, under its own policy, which we do not control. If you are in a jurisdiction that requires prior consent for advertising cookies — the EU and UK among them — you should add a consent management platform before relying on ad revenue from those visitors. That is not currently installed.
What the web host can see
This is the part most privacy pages skip, so it is stated plainly. The site is served by an ordinary web host, and a web server necessarily receives and typically logs the technical details of every request it answers:
- your IP address,
- the user agent string your browser sends,
- the URL requested, the response status and the time of the request,
- the referring page, when your browser sends one.
That happens at the server level for any website you visit and is not something a page can switch off. Those logs are used for operating and securing the site, they are not combined with anything else, and they contain no keystroke data — keystrokes are never part of a request in the first place. Claiming the site sees nothing at all would be false, so we do not claim it.
Analytics, advertising and third-party code
No analytics platform, tag manager, heatmap tool or session recorder runs here. We do not know how many people visit, which pages they read or what results they get, because nothing is instrumented to tell us.
This site does serve third-party advertising. Those units are loaded from the advertising provider's own domain and are subject to that provider's privacy policy, not this one. They may set cookies, read their own cookies and profile visitors for ad targeting. What they cannot do is see anything you type: your key events are handled entirely inside this page's own JavaScript and are never passed to any other script, stored on a server, or included in any network request.
Ads are also deliberately kept out of the measurement itself. No ad is loaded while a test is running, because a third-party script executing mid-run would be added straight onto the timing figure you came to read.
That is also why the footer of every page states that keystrokes are never uploaded. The claim is only permitted because the codebase contains no network call at all.
Offline caching
If your browser has registered this site's service worker, it keeps local copies of pages, stylesheets and scripts so the tools keep working without a connection. That cache holds only the site's own public files. It contains no personal data and no test results, and clearing site data in your browser settings removes it.
If this ever changes
If analytics, advertising or any other third-party script is ever added, this page and the privacy line in the site footer will be corrected before that code ships, not after. A site whose entire argument is about honest measurement does not get to be vague about its own instrumentation.
Questions
Questions or corrections about this page can go through the contact page. If you want to see how the measurements themselves work, the methodology page documents every formula, and the keyboard latency test itself runs without any of the data collection described above.