Typing Trainer & Typer

Two ways to practice touch typing. Both compile from Rust to WebAssembly and run entirely in your browser — no server, no tracking, no excuses.

Why Touch Typing Still Matters

You spend hours a day at a keyboard. Even modest improvements in speed and accuracy compound into weeks of saved time per year. Yet most people never practice deliberately — they just keep reinforcing the same bad habits.

These trainers give you a focused, distraction-free environment to build real muscle memory. No accounts, no gamification treadmills, no ads. Just you, a text, and a keyboard.

Two Renderers, One Goal

Typing Trainer (DOM)

The classic variant. Renders directly to the DOM using standard HTML elements. Lightweight, accessible, and works everywhere — including older browsers and screen readers. Real-time WPM and accuracy stats update as you type.

  • Live keyboard layout overlay (EN-INTL)
  • Configurable text length and spacing
  • Custom text input — paste your own material
  • WPM, accuracy, and error count at a glance
Launch Typing Trainer

Typer (WebGL / egui)

The GPU-accelerated variant. Renders to a WebGL canvas via egui and eframe. Identical training logic, but the entire UI — text, cursor, stats, keyboard — is drawn by the GPU at display refresh rate. Smooth and frame-perfect.

  • GPU-rendered UI via WebGL 2.0
  • Same training engine as the DOM variant
  • Cross-platform: same Rust code runs native (Linux, macOS) or in-browser
  • Embedded SVG keyboard layout rendered to canvas
Launch Typer

How It Works

  1. Open either trainer — no install, no signup
  2. A random text appears; start typing to begin the session
  3. Correct characters advance the cursor; mistakes are highlighted immediately
  4. When you finish, review your words-per-minute, accuracy, and error count
  5. Adjust text length, spacing, or paste your own text and go again

Side by Side

Typing Trainer Typer
Rendering DOM (HTML elements) WebGL 2.0 canvas (egui)
Language Rust → WASM Rust → WASM
Runs native Browser only Linux, macOS, browser
Accessibility Screen reader friendly Canvas-based (limited)
Custom text
Keyboard overlay SVG image SVG embedded in canvas
GPU required No WebGL 2.0

Under the Hood

Both trainers are written in Rust and compiled to WebAssembly. The training logic — text generation, cursor tracking, WPM calculation, error detection — lives in shared Rust code. The only difference is the rendering layer.

Typer uses egui (an immediate-mode GUI library) with eframe's WebGL backend. The entire application state is re-rendered every frame, which sounds expensive but is actually how GPU-native UIs work — egui tessellates the UI into triangles and hands them to the GPU. The result is a UI that feels like a native desktop app.

Text is stored as ASCII bytes for O(1) random access. Lorem ipsum words are shuffled per session so you never practice the same sequence twice.

Start Practicing

Pick a renderer and start typing. No signup, no install, no tracking.

DOM Trainer WebGL Typer