This page documents protocol tb-en-2.0.0 as it is implemented. Every formula below is the one your browser runs, every threshold is one the code actually checks, and nothing is described here that the product does not do.
The protocol and its three conditions
A run is three stages of 45 seconds each, always in the same order, on the same fixed text for everyone. The clock on a stage starts at your first accepted keystroke rather than when the stage opens, and closes exactly 45 seconds later. Characters typed at or after the deadline are discarded rather than partly counted. A short pause separates the stages and is not scored.
Each stage changes exactly one thing about the text, and that is what makes the differences between them interpretable. The flow passage is lowercase common words with no digits and no punctuation, drawn from a reviewed pool of 200 words with no word repeated next to itself. The natural passage is original prose: capitals, commas, full stops and apostrophes, still with no digits. The precision passage is built from digits, currency, brackets, slashes, dates, file paths, identifiers and email addresses.
Because only one axis changes at a time, a drop from flow to natural text is attributable to capitals and punctuation, and a drop from flow to precision is attributable to digits and symbols. Two passages differing on several axes at once — as the previous version of this test used — cannot support either statement.
Every passage is frozen and carries a SHA-256 checksum, and the page refuses to load if a checksum stops matching its text. A passage that quietly changed would invalidate every before-and-after the product has shown while nothing appeared to be wrong. The protocol version, metric version, corpus version, form, language, input method and stage timing together form the comparison key; two results are compared only when all of them match.
Speed and accuracy
One word is five characters. Raw WPM is every accepted insertion attempt divided by five and by the stage length in minutes. Net WPM is the correctly retained target characters divided the same way, so an error you never fixed does not count toward speed and an error you did fix costs you the time it took.
Attempt accuracy is correct attempts as a percentage of all insertion attempts, including ones you later corrected. A wrong keystroke stays in the denominator after you delete it, because it really was typed. A stage with no attempts has no accuracy value rather than a perfect one.
Remaining errors are incorrect characters still standing at the deadline. Characters you never reached are not counted as mistakes: an unfinished passage is not a wrong one.
Worked example, on the target "cat": type "c", "x", Backspace, "a", "t". That is four insertion attempts, one incorrect attempt, one deletion, three correctly retained characters and zero remaining errors — 75% attempt accuracy.
Condition penalties
A penalty is the drop from your own flow speed as a percentage of it: (flow minus condition) divided by flow, times 100. The punctuation penalty uses the natural passage; the complexity penalty uses the precision passage. Both require their own stage and the flow stage to be valid, and are otherwise not reported at all.
These are comparisons of you against yourself. They need no dataset of other people, which is exactly why they can be stated with confidence while a population percentile cannot. A negative penalty — faster on prose than on plain words — is reported as measured rather than clamped to zero.
Pace variation and correction cost
Pace variation is the population coefficient of variation of correct first attempts across nine fixed five-second windows of the flow stage. A window with no output counts as a zero, so a long pause raises the figure instead of disappearing from it. It is reported only with at least 40 first attempts spread across four or more windows. A lower number means the measured output rate varied less; it does not explain why.
A correction episode opens when a character is typed wrongly at a position for the first time, and closes when the correct character is finally committed at that position. Correction cost is the total time inside those episodes as a percentage of the stage. An error left standing at the deadline never closes an episode and is counted only as a remaining error, so nothing is counted twice. The figure is withheld below three closed episodes.
Repeated mistakes
Error patterns count a target position on its first attempt only, so going back and forth over the same spot cannot inflate one. A character is reported only after at least 10 first-attempt opportunities and at least 3 errors, and at most three patterns are shown, ranked by error rate. Evidence is pooled across every valid stage in the run, so a pattern under the threshold within one stage can still clear it overall.
What a pattern states is which character was expected and which one arrived. It does not identify which physical key you intended to press, which finger you used, your keyboard layout, or a fault with a key. A browser cannot observe any of those, and this product does not infer them.
How the bottleneck is chosen
Five candidates are considered: the complexity penalty, the punctuation penalty, correction cost, attempt accuracy and pace variation. Each has a threshold at which it becomes worth reporting — 15% for either penalty, 10% for correction cost, 95% for accuracy, 0.35 for pace variation. Each candidate that has a value is divided by its own threshold, and the largest ratio wins.
Dividing by the threshold is what allows metrics in different units to be ranked against one another; a 32% complexity penalty and an 11% correction cost are otherwise not comparable numbers. When nothing reaches its threshold the report says no single condition stands out, rather than promoting the least-good number to a diagnosis.
These thresholds are product judgements, not measurements. They are published here so that a reader can disagree with a specific number instead of with an opaque verdict.
When a run does not count
A valid run reaches all three deadlines with uninterrupted keyboard input. Pasting, dropping text, an input-method composition, leaving the field, switching tabs, a held-key repeat, a non-ASCII character or exhausting the passage makes the run practice-only. An interrupted stage ends the whole run, because the three conditions are only interpretable against each other and a partial set is not a diagnosis.
A low speed is never an invalidity reason. Equally, a browser cannot prove that every accepted keystroke came from an unaided human, and this protocol does not claim to be proctored or tamper-proof.
How the drill is built
The drill on the practice page is generated in your browser from your most recent valid run. The bottleneck decides which pool it draws from: a complexity bottleneck produces digit and symbol fragments, a punctuation bottleneck produces whole sentences, and everything else produces words. Where error patterns cleared their threshold, word selection is weighted toward them.
Pools are deduplicated before selection and no item may repeat within four positions of itself, so a drill cannot degenerate into the same handful of words. Asking for another drill advances the selection rather than reshuffling it. Where there is no evidence to work from, or the pool is too small to space properly, the page says so and offers a neutral warm-up instead of presenting a generic exercise as a targeted one.
Before and after
After a second valid run under the same comparison key, the report shows the metric your last bottleneck pointed at, its earlier and later values, and the difference between them.
That difference is a fact about two measurements. It is not evidence of improvement and the product does not describe it as one. Typing speed moves between sessions with fatigue, posture, keyboard and time of day, and two points cannot separate a real gain from ordinary variation. Until there are two comparable runs, the page says there is not enough evidence rather than showing a change.
There is no population percentile, rank, grade or comparison against other people anywhere in this product, because no verified dataset of other results exists here. If one is ever built, it will be described on this page before it is used.
Storage and limits
Scoring runs entirely in the browser. Keystroke traces are never uploaded and are discarded once a stage is summarised; only bounded summaries are written to this browser’s local storage, for up to 180 days and at most 100 runs. Clearing this site’s data removes them, and the practice page has a button that does the same. Analytics and advertising are separate optional integrations, described in the privacy notice.
Fixed passages become familiar with repetition, which will flatter a repeated run. The diagnostic measures copying under this specific timing and input protocol on an English physical keyboard. It does not measure composition, workplace output, learning ability or intelligence, it is not a credential, and its rules are product-defined rather than independently calibrated or accredited.