Skip to content

Monkeytype Offline on a Mac: No Desktop App Exists, and What Runs Natively Instead

Updated August 9, 2026 • 11 min read

You are on a plane, or on a work Mac that will not let you sign into anything, and you want the thing you do most evenings: a timer, a stream of words, a number at the end. So you go looking for Monkeytype as an app you can keep on your disk.

It is not there. No official desktop Monkeytype exists, and nothing suggests one is coming — the paper trail, for anyone who wants it, is in the FAQ at the bottom. This page is about the other route: Mochi Type, a native Mac app that runs the same loop with the Wi-Fi off.

One thing to settle before you read further, because a good half of the people searching for this are not on a Mac at all: what follows is a macOS app, macOS 14.6 or later, and there is no Windows build. If you came here from “monkeytype offline download for pc windows 10”, the forks and the browser are your options and I would rather you knew that in the first thirty seconds than the last.

The short version

There is no official Monkeytype desktop app, and the tickets that would have produced one are closed. What that leaves you is a browser tab that needs a connection, an unofficial fork, or a different app that runs the same loop natively.

The rest of this page is the third option, described on its own terms rather than as a scoreboard against anything. Everything a typing session needs — the word lists, the layouts, the sounds, the course — is inside the app already, so a session works identically with the Wi-Fi off. Your history is a database file on your own disk, and there is no account with me to make.

The habits transfer more or less intact: timed runs at 15, 30, 60 and 120 seconds, word lists graded by frequency from the top 200 up to roughly fifty thousand, punctuation and numbers and capitals as switches you can throw together, and consistency scored with the same formula you are used to seeing. What does not transfer is everything social — no leaderboards, no races, no shared profile — and that is a deliberate shape, not an oversight.

The app in question is Mochi Type, and I make it. It is a free download with a permanent free tier — the first five course stages in all 21 languages, the Top 200 word set, every one of the 48 layouts and the full statistics — and a single one-time purchase of $12.99 unlocks the rest. No subscription.

Two limits stated here rather than buried at the bottom: it is macOS 14.6 or later and there is no web or Windows version, and if what you actually want is a global leaderboard, this is the wrong app and Monkeytype is the right one.

The clock, and where the four numbers live

Start with the part you already have muscle memory for. A timed run in Practice is 15, 30, 60 or 120 seconds, picked from a selector in the top bar, and the app’s own introduction to the mode puts it plainly: “Choose a 15, 30, 60 or 120-second run. Each result breaks down your speed, accuracy and consistency.”

Two things about those four numbers are worth knowing before you install rather than after.

They belong to Practice. The guided course — Learn, the sixteen stages plus a Final Test — always runs a fixed 60 seconds and does not let you change it. That is not a setting I forgot to expose; a stage unlocks on a comparison between sessions, and the comparison is only meaningful if every session is the same length. The Final Test is 90 seconds, also fixed.

And there is a fifth option that only appears sometimes. Select one of your own imported texts and the selector gains an ∞, an unlimited run that ends when you stop or when the text runs out. It is offered only for your own texts, because an infinite run against a random word generator is just a timer you have to remember to look at.

That ∞ run keeps its own personal-best bucket, and so does every timer length. Your bests are stored per duration — a 15-second best and a 120-second best are different records that never compete, and an unlimited run can never contaminate either. Anyone who has watched a 15-second sprint flatter their profile average will recognise why that separation is there.

What you are typing against

The word sets are graded by frequency, in five tiers: Top 200, Top 1K, Top 5K, Top 10K and Top 50K. Pick a tier and you are practising the most common words in the language up to that rank. The low tiers are fast and forgiving; the high tiers are where the awkward morphology lives and where your speed honestly settles.

Those five tiers exist in every one of the 21 languages. The rest of the library does not, and I would rather print the real shape than let you find out by clicking:

Set typeLanguages that have it
Frequency tiers (200 / 1K / 5K / 10K / 50K)all 21
Movie quotes7
Book quotes7
Commonly misspelled words10

129 sets in total. If you type in English, German, Spanish, French, Italian, Portuguese or Russian you get the quote sets; if you type in Finnish or Hungarian you get the frequency tiers and that is the whole offer.

The tier labels are rounded, and since this page is otherwise full of exact numbers, here are the exact ones. English is 200, 988, 4,758, 9,594 and 49,081 words. “Top 50K” is a label rather than a count everywhere: the smallest is Bulgarian at 47,990 and the largest is Portuguese at 49,834. The lists are built from real frequency data and then cleaned, and cleaning removes different amounts from different languages.

On top of whichever set you choose there are three switches — numbers, capitals and punctuation — and they are independent, so you can throw all three at once and get something close to real prose. There is also Smart Drill, which swaps in words built from your own weakest keys. The weakness is judged from a per-key accuracy that persists between sessions and leans on recent evidence rather than a flat lifetime average, so a letter you have genuinely fixed drops out of the drill instead of haunting you forever. Smart Drill is part of the paid tier in Practice.

Consistency, with the formula printed

Every typing app shows you a consistency percentage and almost none of them tell you what it means, which makes it the one number you cannot reason about. Mochi uses kogasa — the same formula shape you have been reading on Monkeytype’s results screen — and there is no reason to keep it a secret:

consistency = 100 × (1 − tanh(cov + cov³/3 + cov⁵/5))

where cov = standard deviation ÷ mean, over your per-second raw WPM

Two details in the implementation matter more than the algebra. Seconds in which you typed nothing are filtered out before anything is computed, so pausing to think does not register as your speed collapsing to zero. And if a run leaves fewer than two usable samples — a 15-second sprint where you spent most of it stalled — the result is 100 rather than a number derived from one data point, because there is no such thing as the variance of a single sample.

What the score actually rewards is an even rhythm, not a fast one. You can hold a high consistency at 40 WPM and destroy it at 90 by sprinting through the easy words and stalling on the hard ones.

What backspace costs you, exactly

This is the question I get most, and the honest answer needs two counters rather than one.

Accuracy is scored on first attempt. Mistype a character and it counts against you for the rest of the session, whether or not you go back and fix it — correcting a typo repairs the text, not the score.

Erasing a character you typed correctly costs you nothing at all. That is not a rounding artefact; it falls out of the design. The number that feeds your displayed accuracy is a running total of first-attempt correct keystrokes which is never decremented, so re-typing a letter you already got right is neutral. WPM runs off a separate counter — the net clean text you actually produced — and that one does go down when you delete, which is exactly right, because deleted text is not text you wrote.

So: backspacing freely to keep the visible line clean will cost you speed and leave your accuracy alone. Fixing a typo will never buy the accuracy back. Those two sentences are the whole rule.

Your own text, and where it goes

Paste a passage or import a file and it becomes a word set like any other, selectable from the same top bar.

Most of the cleanup is not a decision you have to make. Typography is straightened on the way in, always — curly quotes become straight ones, em dashes become hyphens, ellipses become three periods — because the simplified text is typeable on any layout and matches what the built-in word sets use. There used to be a switch for it; it earned nothing but skipped words. Same story for the accent fallback that runs at session start: if the text contains a letter your active layout physically cannot produce, an á becomes an a rather than a character you are unable to complete.

That leaves one real toggle, “Remove headings and page numbers”, off by default and worth switching on for anything scraped out of a book. Flipping it rebuilds the text from the original file you imported rather than editing the cleaned copy — which is why any manual edits you made go with it.

An unlimited run against your own text autosaves your position every 30 seconds, so a crash two hours into a novel does not cost you the place. On the free tier your own texts are capped at 1,000 words each; the paid tier lifts the cap. The mechanics of importing longer things — books, articles, the cleanup options in detail — are a subject of their own.

Where your history lives

In a SQLite database on your Mac — one row per session, in a file called mochi.db. There is no account with me to create, no sync service of mine to depend on, and no free-tier retention window after which your old sessions quietly disappear — nobody is paying to store them, so nothing has to be thrown away.

Everything else about that claim — how to verify offline behaviour yourself, what iCloud sync does and the fact that it starts switched on for a Mac signed into iCloud — belongs to the page about running a tutor with no account, which goes through it properly rather than asking you to take my word for it.

The rest of what is in there

Since this is the part a comparison would skip: the app ships 48 keyboard layouts, and nothing on your Mac has to change to use one of them — the mechanism is practising a layout without switching your input source. Twelve themes in the picker. Twenty-two sound packs, if typing sounds are the thing that gets you to sit down. Six typing faces, one of them OpenDyslexic — which is offered on the Latin-script languages only, since it has no Cyrillic or Greek.

An on-screen keyboard with finger hints sits under the text, and the hint fades as you speed up rather than teaching you to read it. After a session you get a per-key accuracy heatmap with the number of attempts behind each key, which is the difference between a real weak spot and bad luck on three presses.

And the interface gets out of the way on its own: the toolbar and the cursor hide themselves after two seconds without mouse movement, during a session. There is no toggle for it and nothing to configure — it is behaviour, not a mode.

What Mochi is not

The boundaries, because you will find them in the first evening anyway.

Monkeytype is the better pure speed test, and if a browser tab is genuinely fine for you then it remains the right tool. There is nothing social here at all: no leaderboards, no races, no multiplayer, no shared profile, no certificate at the end. No code mode and no programming languages. No user-authored themes — you pick from the twelve in the picker. No web version, and no Windows or Linux build.

Two smaller things that will bite specific people.

The timed selector lives in Practice. If you spend your time in the guided course, every session is 60 seconds and the four timers are not there.

And there is a real bug I would rather you heard from me. On layouts where ^, ~ and ` are ordinary glyphs — US QWERTY among them, along with Colemak and Dvorak as they ship here — the app treats those three characters as unfinished dead-key accents and never registers them as typed. The practical consequence: paste in a snippet containing a backtick or a tilde and you will not be able to finish it, because the character will not accept your keystroke. It affects imported text that contains those characters; the built-in word sets do not.

Which is also the honest reason not to sell this app to programmers. Beyond that bug, the layout roster is the ordinary national set — there is no Programmer Dvorak, no Colemak-DH, no Workman, no BÉPO and no Neo, and the two layout ids carrying a _prog suffix are the Polish and Romanian programmers’ layouts, which the picker calls QWERTY (Polish) and QWERTY (Romanian) because that is what they are — national QWERTY arrangements, nothing to do with writing code.

If your evenings are a timer, a stream of words and a number you are trying to move, all of that survives the trip to a native app, and it survives losing the network. If they are a leaderboard, none of it does.

Common questions

Is there an official Monkeytype desktop app?

No. Discussion #2036, "Desktop App?", was opened on 27 October 2021 and drew no commitment from a maintainer. Two pull requests that would have delivered it were closed rather than merged: #2312, an offline mode backed by a localStorage snapshot, on 15 January 2022, and #6268, self-hosting offline with account support through a Firebase emulator, on 16 February 2025. Unofficial community forks exist, but none is the project's own release.

Can I get Monkeytype offline on Windows?

Not from me. Mochi Type is a native Mac app and requires macOS 14.6 or later — there is no Windows build and none is planned, so if you are on Windows 10 or 11 this page will not solve your problem. Your realistic routes there are the unofficial community forks, or running the web version in a browser and accepting that it needs a connection.

Does Mochi Type have the same time modes as Monkeytype?

The timed runs are 15, 30, 60 and 120 seconds, chosen from the top bar. Two caveats worth knowing before you install: those four exist in Practice only, and the guided course — Learn — always runs a fixed 60 seconds, which is not adjustable. There is also an unlimited run marked ∞, but it is offered only while one of your own imported texts is selected.

How does Mochi Type calculate consistency?

With the kogasa formula, the same shape Monkeytype uses: 100 × (1 − tanh(cov + cov³/3 + cov⁵/5)), where cov is the standard deviation of your per-second raw WPM divided by its mean. Seconds in which you typed nothing are filtered out before the maths, so a pause does not read as a collapse in speed, and a run with fewer than two usable samples returns 100 rather than a meaningless number.

Does hitting backspace hurt my accuracy score?

Fixing a typo does not repair your accuracy — it is scored on first attempt, so a mistyped character counts against you even after you correct it. But erasing a character you got right costs you nothing. Accuracy is counted from a running total of first-attempt correct keystrokes that is never decremented, while the separate clean-text counter feeding your WPM does go down when you delete.

What does Mochi Type not do that Monkeytype does?

Quite a lot, and it is worth knowing up front. There are no leaderboards, no races and no multiplayer, no certificate, and no code mode or programming languages. Themes are a fixed set of twelve in the picker, with no way to author your own. And there is no web version — it is a Mac app or nothing. As a pure speed test with a global scoreboard, Monkeytype is the better tool and I would not pretend otherwise.