Is flinttype free?
Yes, completely. The site is open source under the MIT license, there are no ads anywhere, and there is no paid tier. Signing in adds history and adaptive drills, but practice and races work without an account.
Do I need an account?
No. Anyone can use the practice page, race or share a lobby link without signing in. Signing in keeps your typing history, personal bests, adaptive model and settings across devices.
How is WPM calculated?
Raw WPM uses the standard formula: characters typed divided by 5 (one “word”), divided by minutes elapsed. Net WPM, which the leaderboard ranks on, multiplies raw WPM by your accuracy. A 100 WPM run at 90% accuracy comes out at 90 net WPM, which rewards clean, confident typing over reckless speed.
What does the adaptive engine actually do?
Every keystroke is timed against the character you were aiming for. From that, the engine keeps a running average for every letter pair, three-letter sequence and word you type. Each new practice run leans toward words containing your slowest pairs, the ones holding your overall speed back. Your current weak spots are on your insights page once you're signed in.
Which keyboard layouts are supported?
QWERTY, Dvorak and Colemak. Pick yours in keyboard settings so the adaptive engine reads your same-finger and hand-switch pairs against your real layout. The on-screen keyboard changes to match.
What do you store about me?
For signed-in users: a copy of your account basics (id, display name, the part of your email before the @), one row per test (start and end time, WPM, accuracy, errors, mode, word count) and your weakness model. Per-keystroke timings update the model and are then thrown away; we don't keep your raw keystrokes. Full details are on the privacy page.
Can I import my MonkeyType history?
Yes. Open your profile, press the ⋯ menu, choose Import from MonkeyType and paste a read-only Ape Key from your MonkeyType account settings. Your completed tests come across. MonkeyType doesn't share per-keystroke timings, so adaptive practice starts fresh and rebuilds your weakness model from new runs. Your MonkeyType settings (theme, caret and so on) are separate: bring those over from Settings with Import / export.
Why does my leaderboard row say “Guest”?
The leaderboard shows a public @username when it can find one. If your account has no username or display name, or the account was deleted, the row shows “Guest”. Set a username on your profile and it appears from your next finished test.
How do races work?
Press Find race on the race page. We look for live opponents for up to five seconds; if nobody joins, bots fill the empty seats so you're never stuck waiting. Press Create lobby for a private race with a short link (like quick-otter-42) to share.
How do I report a bug or suggest a feature?
Open an issue on GitHub. Bugs with a screenshot and the steps to reproduce them (mode, browser, what you typed, what you expected) get fixed fastest. Feature ideas are all read, even when they don't ship right away.