Privacy
TypeKid privacy notice
Last updated 26 September 2026
TypeKid is a typing app for children. A parent owns the account and creates each child’s profile — children never sign themselves up, and no child has an email address or a password here. Nothing about a child is collected until you have confirmed parental consent through two separate emailed links.
What we collect from you
- Your email address, which you give us when you create the account.
- Your name, only if you choose to type one — the field is optional.
- Your password, which is stored only as a bcrypt hash. We never store or see the password itself.
- The record of your parental consent: that it was granted, when, and by which method (a first emailed link, then a second one after a one-hour delay).
- Whether you have turned the weekly recap email off.
What we collect about your child
- The display name you type for them, the reading band you pick, and the time zone your browser reports when you add them. All three come from you, on your account page.
- Three interests, which the child picks themselves from a fixed list of eight topics. There is no free-text box anywhere in the app that a child can type into other than the lesson itself.
- The result of each lesson they finish, and a running count of how often each key on the keyboard has been typed correctly or wrongly. The table below says exactly what those hold and how long we keep them.
- Their progress: EXP, day streak, which stage they are on, the date they entered each stage, the avatar items they have unlocked and are wearing, and the milestones they have reached.
What we never collect
TypeKid has no field, screen or code path that asks for any of the following, from a child or about one:
- Age, date of birth, grade or school.
- An email address, phone number or postal address for a child.
- Location of any kind, precise or approximate.
- Photos, video, voice or any other biometric information.
- Anything a child types other than the lesson passage in front of them — there is no chat, no profile text, no comment box and no message to another player.
- A public or browsable child profile. Nothing about a child is visible to anyone but you, except the milestone card you may choose to share (below).
What we keep, why, and for how long
Each period below is a real one, not “as long as necessary”. Where a row says “automatically”, a program does the deleting, not a person picking rows — though since 2026-10-05 that program only runs when someone triggers it by hand, not on its own timetable.
Typing runs — one row each time your child finishes a lesson: which passage it was, when they started and finished, how many characters they got right, how many keys they pressed, how many mistakes they made, their words per minute, their accuracy, their longest correct streak within the lesson, and the EXP the run earned.
Why: To show your child their result, to fill in your dashboard, and to work out EXP, day streaks and when they move up a stage.
How long: 365 days (12 months) from the day the run was recorded, then deleted automatically.
Per-key error counts — one row for each character your child has typed, holding how many times they have typed it, how many of those were wrong, and when they last typed it.
Why: To choose the next passage, weighted toward the keys your child is still getting wrong.
How long: Deleted automatically once a character has gone 365 days (12 months) without being typed. A key your child still uses keeps its row, because the count is updated in place each time.
Your child’s profile — the name you give them, the reading band you pick, the time zone your browser reported when you added them, the three interests they choose, their EXP, day streak, stage, and the avatar items they have unlocked and are wearing, plus the milestones they have reached.
Why: This is your child’s account. It is what the app shows them, and it is what their next lesson is picked from. It survives the two rows above expiring, so a child who comes back after a year still has their level, their streak record and everything they own.
How long: For as long as the profile exists: until you delete it from your account page, or until it has gone 730 days (24 months) with no activity, at which point it is deleted automatically.
Stage entry dates — one date per stage your child has reached, recording when they reached it.
Why: So that deleting the lesson rows above cannot stall your child’s progress or re-announce an achievement they settled a year ago. It holds nothing else: no lesson text, no typing or key data, and no date other than those stage entry moments.
How long: With your child’s profile, on the same rule as the row above — not on the 365-day rule.
Your parent account — your email address, your name if you chose to give one, and your password, which is stored only as a bcrypt hash and never in a readable form.
Why: To sign you in and to send you account email.
How long: Until the account is deleted.
Your consent record — that you gave parental consent, when, by which method, and a pointer to the evidence.
Why: Children’s-privacy law requires us to log every consent. This is the record that your consent was given at all.
How long: Kept until your own account is deleted — and never on a timer before that, because deleting it early would destroy the record that consent was properly obtained.
Consent email links — the one-time links in the two confirmation emails, and when each was sent and clicked.
Why: To run the two-step email confirmation that gives consent.
How long: 72 hours from when the request was created, then deleted automatically.
Your weekly-recap preference — including the opt-out link’s token and the moment you opted out.
Why: So that an unsubscribe stays honored. Deleting this record on a timer would silently resubscribe you, which is the opposite of what an opt-out is for.
How long: Indefinitely. It is removed only when your own account is deleted.
A send log for the weekly recap — which week’s recap we attempted for you and whether it went out. It carries no identifier for any child.
Why: So a week’s recap is sent to you once and not twice.
How long: Until your own account is deleted.
Who else sees your child’s data
Running TypeKid at all means renting a server from someone and sending mail through someone. Here is every company that holds or handles any of it, what each one is for, and what each one gets:
Hetzner
Rents TypeKid the one server it runs on — the app you are reading this from, and the database behind it.
What it gets: Everything on this page. Every row described above lives in that one database, on that one server, and the server’s own backup copies include it. There is no second database anywhere else. One consequence is worth stating plainly: when something is deleted — by you, or by the retention job — it leaves the live database at once, but a backup taken before that moment still holds it until that backup is rotated away.
AWS SES (Amazon Simple Email Service)
Delivers TypeKid’s email, which comes from support@typekid.vey.la. It is the only company TypeKid hands a message to — after that it is between AWS and whoever runs your own inbox.
What it gets: Your email address, and whatever that message says. The parental-consent emails say nothing about a child at all. The weekly recap is the one message that carries anything about a child, and the list below is all of it.
GitHub
Stores TypeKid’s source code, and can run its two jobs — the one that deletes data on the timetable above, and the one that builds and sends the weekly recap — but only when triggered by hand: neither has run on an automatic timetable since 2026-10-05.
What it gets: Both jobs are given the database password, so both can reach every row. The recap job reads each child’s name and that week’s figures in order to write your email. The source code itself holds no data about anybody — it is the program, not what the program stores.
For each child who practised that week, the weekly recap that travels through AWS SES (Amazon Simple Email Service) carries:
- their display name — in the subject line as well as in the body
- how many lessons they completed that week
- their average speed in words per minute, and whether that is up or down on the week before
- their average accuracy, as a percentage
- up to 4 of the facts they read that week — and, if there were more, a line saying how many more
Nothing else about a child is in it: no individual lesson, no per-key data, no dates, and nothing about a child who did not practise that week.
One thing about that email today. Sending is not switched on yet, so the recap job delivers nothing when it is run. It still writes down what it would have sent to whom — see What gets written in our logs, immediately below.
And nobody beyond those three. TypeKid contains no advertising, no ad networks, no analytics or product-tracking service, no error-reporting service, no social-network buttons, and no third-party script of any kind — even the fonts are served from this site rather than fetched from another company as your child’s browser loads a page. Nothing sits between your browser and that one server: no content-delivery network, no proxy service. TypeKid has never sold or rented anyone’s data, and there is no mechanism in it that could.
What gets written in our logs
Running one of these jobs leaves a trace of what it did. These are the only lines TypeKid writes that hold anything about you or your child, and they are worth knowing about because they sit outside the database — so deleting a profile, or your whole account, does not reach them:
Each time the job that builds your recap is run — by hand, since 2026-10-05, not on a weekly timetable — it writes one line per parent: your account’s internal ID, your children’s internal IDs, and whether the email went out. No names, no addresses, nothing about what anyone typed — but those IDs are yours. This happens whether or not any email is sent.
Where: The run log of that job, at GitHub.
How long: 90 days, then GitHub deletes it.
While email sending is switched off — it is today — the same job also writes the address it would have written to, that message’s subject line (your child’s name, when you have one child), and the link that turns the weekly email off. None of the figures or facts inside the email are ever written down.
Where: The same run log, at GitHub.
How long: 90 days, then GitHub deletes it.
For the same reason and only while sending is off, a parental-consent email writes your address, its subject, and the one-time confirmation link. It says nothing about a child.
Where: The server’s own output, on the machine TypeKid runs on.
How long: For as long as that machine keeps it. TypeKid does not set a limit, and it is not a store the app can read back or search.
Nothing your child types is ever written to a log — no lesson text, no typing result, no per-key data, no EXP or streak. Everything else TypeKid records goes in the database described above, where the deletion controls below can reach it.
If you share a milestone card
You, and only you, can turn one of your child’s milestones into a picture to share. Your child’s name is off by default on that picture; with it off the card names nobody. There are no “share to” buttons for any social network. If you create a public link, that link is marked so search engines do not index it and it stops working 30 days after you create it. Making a new link replaces the old one rather than extending it.
Email we send you
There is one email you can switch off: the weekly recap. Turn it off from the unsubscribe link in the email itself, or from your account page, where you can also turn it back on. Turning it off does not stop parental-consent confirmations or other account email — those are not marketing and are not suppressible. The record of your opt-out is kept indefinitely, precisely so it keeps being honored.
What your browser stores
Three cookies, all of them set by TypeKid itself and read by nobody else. None is an advertising or tracking cookie, and TypeKid sets no others.
- next-auth.session-token — set when you log in, so the site knows it is still you. It lasts 30 days from your last visit — using the site refreshes it — and logging out clears it.
- next-auth.csrf-token — a random value used to check that a sign-in form was submitted from TypeKid and not from some other site pretending to be you.
- next-auth.callback-url — the page to send you back to once you have signed in.
Over a secure connection the browser shows these names with a __Secure- or __Host- prefix; they are the same three cookies.
Two other things are kept on the device, neither of them a cookie:
- The result of the lesson just finished, held briefly in your browser’s own session storage so the results screen can show it. It is cleared when the tab closes.
- A small store of files that lets the app show a useful screen when the connection drops: the offline page, the app’s three icons, its web-app manifest, and its own stylesheets and scripts. That is the entire list — no page that has anyone’s data on it is ever saved there, and requests that carry data are never saved at all.
Seeing, exporting and deleting the data
From your account page you can, at any time and for each child:
- Export data — download a complete machine-readable file of every row TypeKid holds about that child. It is the real data, not a summary.
- Delete — remove that child’s profile and, with it, every lesson run, key count, interest, milestone and unlocked item attached to it. The record that you once gave consent is not deleted, because that record is what proves consent was properly obtained. Two things this cannot reach, for the reason each section above gives: a backup taken before the deletion, and the log lines listed above — if a recap ran while that child existed, their internal ID is in a run log until it ages out.
There is no button yet for deleting your own parent account. Email support@typekid.vey.la and ask, and it is done by hand: your account, every child under it, and everything attached to those children are removed from the database together, the same deletion the button above performs for one child applied to the whole account. Your consent record goes with it.
What that does not reach, because a promise of “everything” would not be true:
- A backup taken before the deletion still holds a copy, until that backup is rotated away.
- The log lines described above, which are outside the database entirely: your account’s internal ID and your children’s in each weekly run log, plus your email address and a subject line while sending is switched off. The GitHub ones are deleted after 90 days on their own, and can be deleted sooner if you ask for that too. No log line holds anything your child typed, and none of them can be used to sign in.
Questions
Write to support@typekid.vey.la about anything on this page, including a request to see, correct or delete data.