A free typing test with realistic mechanical keyboard sounds
Try it live »
Website
·
Issues
·
Request Feature
Table of Contents
Keythm is a free online typing test with realistic mechanical keyboard sounds and real-time WPM tracking. Practice with timed tests, word counts, quotes, or zen mode — featuring an interactive on-screen keyboard, satisfying key sounds, and detailed accuracy stats.
| Area | What you get |
|---|---|
| Test modes | Time (15s–120s), word count, quotes (length presets), zen |
| Mechanical key sounds | Realistic per-key audio feedback via Web Audio; multiple keyboard themes |
| Virtual keyboard | Interactive on-screen keyboard that highlights keys as you type (desktop) |
| Results | WPM, raw speed, accuracy, character breakdown, consistency, elapsed time, WPM-over-time chart |
| Keyboard themes | 6 color schemes — Classic, Mint, Royal, Dolch, Sand, Scarlet — each tints the entire UI |
| Typing fonts | 9 fonts — Geist Mono, JetBrains Mono, Fira Code, IBM Plex Mono, Source Code Pro, Inter Tight, Space Grotesk, Nunito, Atkinson Hyperlegible |
| Settings | Theme (light/dark/system), accent color, font picker, show keyboard, sound volume, live WPM, ghost mode |
| Haptics | Optional vibration on supported hardware |
Settings persist in localStorage.
Keythm is built using the following technologies:
- TypeScript: Typed superset of JavaScript.
- Next.js 16: React framework with App Router.
- React 19: UI library.
- Tailwind CSS: Utility-first CSS framework.
- Base UI: Unstyled, accessible component primitives from MUI.
- shadcn/ui: Pre-styled component recipes.
- Motion: Animation library for React.
- Recharts: Composable charting library.
- Drizzle ORM + LibSQL: Type-safe database layer.
- Biome: Fast linter and formatter.
- Serwist: PWA / service worker toolkit.
- Vercel: Deployment platform.
-
Fork this repository and clone your fork:
git clone https://github.com/<your-username>/keythm.git cd keythm
-
Install dependencies and start the dev server:
bun install bun dev
-
Open http://localhost:3000 in your browser.
| Command | Description |
|---|---|
bun dev |
Development server |
bun run build |
Optimized production build |
bun start |
Serve the production build |
bun run lint |
Lint with Biome |
bun run lint:fix |
Lint and auto-fix with Biome |
bun run format |
Format with Biome |
bun run typecheck |
Type-check with TypeScript |
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the repo
- Create a new branch (
git checkout -b improve-feature) - Make the appropriate changes in the files
- Commit your changes (
git commit -am 'Improve feature') - Push to the branch (
git push origin improve-feature) - Create a Pull Request
| Method | Description | Action |
|---|---|---|
| 🔧 Manual Build | Create an optimized production build. | bun run build |
| ▲ Vercel (Recommended) | Deploy instantly on the Vercel platform. | |
| 🌐 Netlify | Deploy easily on Netlify. |
For more details, check the Next.js deployment docs.
If you found this project useful, give it a star to help more people discover it!
