codipry.

Keyboard shortcuts

Use Ctrl on Windows/Linux or Command on macOS. Shortcuts respect focused text fields.

Ctrl/⌘ K
Open or close tool search
?
Open this reference outside text inputs
Escape
Close the active dialog
Ctrl/⌘ S
Save the current Playground project
Ctrl/⌘ Enter
Run the Playground preview
Tab
Move between controls; inside code typing, insert two spaces
Shift Tab
Move to the previous control

Monaco also provides its own command palette. Browser and operating-system shortcuts can take priority.

Start creating
Frontend PlaygroundcodeResponsive LabcodeGradient GeneratordesignBox Shadow GeneratordesignText Shadow GeneratordesignBorder Radius GeneratordesignFlexbox GeneratordesignCSS Grid GeneratordesignAnimation GeneratordesignGlassmorphism GeneratordesignClip Path GeneratordesignFluid Type GeneratordesignColor StudiodesignGit Command BuildergitGit VisualizergitMerge vs. RebasegitSQL Joins VisualizerdatabaseSQL Clause ExplorerdatabaseDatabase RelationshipsdatabaseSQL FormatterdatabaseSQL PlaygrounddatabaseTyping TestpracticeCode Typing TestpracticeJSON FormattercodeCSV / JSON ConvertercodeText DiffcodeRegex TestercodeEncoding ToolscodeHash GeneratorcodeTimestamp ConvertercodeCSS Transform GeneratordesignCSS Filter GeneratordesignDesign Token ExporterdesignGit Conflict TrainergitSQL Schema Explorerdatabase
A steady rhythm. A little progress.

Code Typing Test

Practice real syntax, punctuation, and indentation with original code snippets.

Opening your practice space…

How to use Code Typing Test

Typing speed is most useful when you can reproduce it with accuracy. Treat each attempt as a small measurement of a particular text, duration and language—not as a universal ranking.

  1. Choose 15, 30, 60 or 120 seconds. Word mode offers easy words, sentences and punctuation. Code mode provides original JavaScript, TypeScript, HTML, CSS, SQL and Python snippets with exact case, brackets and indentation.
  2. The clock starts with the first inserted character, not when you focus the input. The attempt ends at its deadline, when the target is fully entered, or when you choose Finish attempt. History records actual elapsed duration.
  3. Input appends at the end; Backspace removes recent characters. There is no automatic indentation. Tab explicitly inserts two spaces, scored as two logical character keystrokes. Enter counts as a newline. Paste/drop is disabled in scored input, but you can paste into Custom text to choose a practice target.
  4. WPM = (currently correct characters ÷ 5) ÷ elapsed minutes. Raw WPM = (all inserted characters, including erased attempts ÷ 5) ÷ minutes. Accuracy = correct logical insertion keystrokes ÷ all insertion keystrokes × 100. Backspace and navigation do not count as insertions; erased mistakes remain in accuracy and error history.
  5. Completed sessions are saved locally with measurements and per-expected-character counts. Personal bests are per mode/language and include different durations; compare like-for-like attempts. Progress charts load only when requested. Optional sound stays local and can be turned off.

A practical starting point

If 250 currently entered characters are correct after one minute, the net speed is 50 WPM. If you inserted 275 characters while correcting mistakes, raw speed is 55 WPM. If 260 of those insertions were correct at the time, accuracy is about 94.5%.

WPM = (250 / 5) / 1 = 50
Raw WPM = (275 / 5) / 1 = 55
Accuracy = 260 / 275 × 100 ≈ 94.5%

Common mistakes

  • Rushing into a mistake and erasing it can restore net correct text, but the original insertion still affects raw speed and accuracy. That is intentional.
  • A short familiar custom text can produce a very different score from a full timed test. Compare durations, languages and difficulty before judging progress.
  • Code is case-sensitive and indentation matters. Automatic editor indentation is disabled so the scored input reflects what you actually insert.
  • No practice text is transmitted. Session records contain metrics and character counts; clearing browser storage removes history unless you have exported a backup.

Frequently asked questions

Why does Backspace not erase my mistake count?

The count describes insertion attempts over the session. Correcting the text restores net correct characters, while the original mistake remains part of accuracy history.

How are Unicode characters counted?

The engine uses Unicode code points, not UTF-16 code units. A multi-code-point grapheme may count as more than one logical character.

Why did the attempt finish before the timer expired?

Entering the entire target or choosing Finish attempt ends a session early. The actual elapsed duration is used in both scoring and history.

Can sound or analytics slow the input?

Sound is optional and local; it fails without blocking practice. Analytics is disabled by default and accepts only fixed event names/counts after consent, never keystrokes or target text.