Privacy
What keyoke keeps, where, and how to remove it.
Without an account
Everything you type stays in this browser. Your results, your bests, which keys and letter pairs you miss, a log of each test’s keystrokes and your settings are kept in this browser’s storage and nowhere else. Clearing your browser data clears them for good. Only the account pages set cookies: for signing in, and, once you have, a sync pass that lets this browser sync from the other pages. No script can read it, it is sent only when syncing, and signing out removes it.
Two kinds of counting still happen, and neither includes what you typed. Vercel Web Analytics and Speed Insights count page views and load times without cookies. keyoke itself counts that this browser visited today, that a test was started and that a test was finished, with its mode and length, under a random ID this browser made for itself. That ID is never joined to an account. Your address is used only to limit how many of these one network can send, and is stored only as a salted hash that changes every day. These counts are kept for 400 days. If your browser sends Do Not Track or Global Privacy Control, none of them are sent.
With an account
Signing in is free. Without an account you get two runs, which stay in this browser; typing more needs one. When you sign in, Clerk handles your email address or the account you sign in with, and keyoke stores only the ID Clerk gives it. Nothing about your typing is sent until you sign in. Signed in, this browser syncs on its own, a little after each run and when you open a page. A sync sends your most recent 500 tests’ keystroke logs (including runs you restarted part-way) and 500 results, your bests, your per-key and per-pair stats, and your speed goal. They are stored in a Postgres database run by Neon. Runs typed from text you pasted in are never sent, because their keystrokes contain your writing.
A keystroke log is biometric data. It records when each key went down. The rhythm of someone’s typing is distinctive enough to tell people apart, and is used elsewhere to identify who is typing. keyoke uses it only to show you how you type, in Practise and Track. If you would rather it never reached a server, use keyoke without signing in: every feature works the same.
Research, if you opt in
An account can opt in to research use on the account page. It is off unless you turn it on, and only signed-in accounts can: without an account nothing leaves your browser, research or not. Opting in sends nothing new. Once a day, keyoke works out from each opted-in account’s synced tests how fast and how accurately it types each letter pair, places the account in a speed band, and keeps only the spread across accounts in that band: the middle value and the quarter points either side. A figure is kept only when at least 20 accounts contribute to it, and no figure names or belongs to any one account.
These averages are for making practice better: telling you how your typing compares with others at your speed, and learning which kinds of practice work. Turning research off, deleting your synced data or deleting your account takes you out of them at the next daily update, because they are rebuilt from scratch each time.
What it is never used for
Your data is never sold, never shared with anyone for their own use, and never used for advertising. No ad network is part of keyoke. The only companies that handle it are the ones that run keyoke for us: Vercel (hosting and the counts above), Clerk (sign-in) and Neon (the database).
Deleting it
Deleting your account, from the account page, deletes everything it synced. Deletion removes the rows; it is not a flag. It does not touch what is in this browser, which you can export or clear yourself without an account: on the test page, open commands (the search button at the top, or ctrl K) and choose “Export your data” or “Erase everything”. For anything else about your data, write to privacy@keyoke.com.