Caret is an independent, open-source typing test. It offers multiple test modes, languages, themes, live speed and accuracy feedback, and account-based result history.
Take a free typing test, learn how to practice typing, or explore code typing practice.
This project began from the Monkeytype codebase and now has its own roadmap. We retain the original contributors' work and attribution in the Git history. Caret is licensed under GPL-3.0.
Caret does not support self-hosting. For self-hosting, use Monkeytype.
Use Node 26.13.0 and Vite+ (vp) for every command; pnpm 12.16.1 is the package manager under the hood. Follow the development setup guide for Better Auth and backend configuration. See the architecture overview for the codebase and stack.
vp install
vp exec cp frontend/.dev.vars.example frontend/.dev.vars
# Set DATABASE_URL and CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_HYPERDRIVE
# in frontend/.dev.vars to the same development Neon branch first.
vp run --filter @caret/frontend db:migrate
vp run devThe TanStack Start app, its API and a development Neon branch run at http://localhost:3000.
Typing rules run in the platform-independent Rust engine.
The website loads its Wasm SDK only in the
browser; Cloudflare continues serving SSR, auth and APIs. Install the toolchain
pinned in rust-toolchain.toml with its Wasm target. Build bootstrap generates the
bindings automatically; vp run engine:parity checks native and built-browser
behavior against immutable original references. vp run engine:lint and
vp run engine:fmt check Rust. Measured budgets are in
performance budgets.
The native Ratatui app uses the same engine
on Linux/macOS without Wasm. It includes English words/quotes, five typing modes, settings,
durable local history and JSON export. No account, sync or first-run download.
vp run terminal:dev runs it; vp run terminal:test and
vp run terminal:test:pty check native behavior and terminal lifecycle.
vp run terminal:test:emulator -- --emulator kitty --command /usr/bin/kitty
checks actual Kitty keyboard input in a private Linux display; Ghostty and
Alacritty are also supported by the harness. See the terminal docs for tools.
vp run terminal:package prepares a licensed binary archive. Installed users
need no development runtime. See release verification/status
for tested platforms and pending real-terminal checks; no release published yet.
See CONTRIBUTING.md and the code of conduct. Report bugs in the Caret repository.
Public site: caret.voltcrash.com. Maintainers use production operations for the official site's deployment and updates.
Use GitHub discussions for general questions and feature ideas, and the security policy for private vulnerability reports.
