Theme System Overview
Themes in Monkeytype control:- Background colors
- Text colors
- Caret color
- Sub-element colors (timers, buttons)
- Error colors
- Navigation colors
All themes are stored as CSS files in
frontend/static/themes/ and are loaded dynamically.Built-in Themes
Monkeytype includes 56 professionally designed themes. Here’s a selection of popular themes:Popular Themes
9009
Clean, minimal theme with keyboard-inspired colors.Style: Minimal, professional
Dracula
The famous dark theme with purple and pink accents.Style: Dark, colorfulSpecial: Custom navigation colors
Nord
Arctic, north-bluish color palette.Style: Cool, muted
Solarized Dark
Popular developer theme with warm contrast.Style: Dark, balanced
Monokai
Classic code editor theme.Style: Dark, vibrant
Gruvbox
Retro groove theme with warm colors.Style: Warm, vintage
Complete Theme List
All 56 available themes:View All Themes (A-M)
View All Themes (A-M)
- 9009
- Aether
- Aurora
- Beach
- Bingsu
- Blueberry Dark
- Blueberry Light
- Camping
- Catppuccin
- Chaos Theory
- Cheesecake
- Dark Note
- Desert Oasis
- DMG
- Dots
- Dracula
- Dualshot
- Ez Mode
- Fire
- Froyo
- Fruit Chew
- Fundamentals
- Future Funk
- Graen
- Grape
- Horizon
- Husqy
- Incognito
- Ishtar
- Lavender
- Lil Dragon
- Matrix
- Metropolis
- Milkshake
View All Themes (M-Z)
View All Themes (M-Z)
- Modern Ink
- Moonlight
- Mr Sleeves
- Oblivion
- Phantom
- Rainbow Trail
- Retrocast
- RGB
- Sewing Tin
- Sewing Tin Light
- Shadow
- SNES
- Solarized Osaka
- Stealth
- Suisei
- Sunset
- Taro
- Terrazzo
- Trackday
- Trance
- Vesper
- Vesper Light
Browsing & Applying Themes
Theme Selector
Browse Themes
- Scroll through theme previews
- Hover to see live preview
- Search by name
- Filter favorites
Theme Features
- Favorite Themes
- Random Theme
- Auto Switch
Save Your Favorites:
- Star themes to add to favorites
- Quick access to preferred themes
- Favorites list in settings
- Stored in config:
favThemesarray
frontend/src/ts/config-metadata.ts:790-795Custom Themes
Creating Custom Themes
Custom themes require an account to save and sync across devices.
Choose Colors
Select colors for each element:
- Background (
--bg-color) - Main text (
--main-color) - Caret (
--caret-color) - Sub elements (
--sub-color) - Sub alt color (
--sub-alt-color) - Text color (
--text-color) - Error color (
--error-color) - Error extra color (
--error-extra-color) - Colorful error color (
--colorful-error-color) - Colorful error extra color (
--colorful-error-extra-color)
Managing Custom Themes
Add Theme
- Create new custom theme
- Name and color configuration
- Maximum themes per account (configurable)
backend/src/api/controllers/user.ts:828-836Edit Theme
- Modify existing custom theme
- Change colors or name
- Live preview updates
backend/src/api/controllers/user.ts:847-855Remove Theme
- Delete custom theme
- Cannot be undone
- Reverts to default if currently active
backend/src/api/controllers/user.ts:838-845Share Themes
- Export custom theme as JSON
- Share theme code with others
- Import themes from community
Custom Theme Storage
Account Storage:- Custom themes saved to user account
- Retrieved on login:
backend/src/api/controllers/user.ts:817-826 - Stored as array with ID, name, and colors
- Full theme data structure:
customTheme: Boolean to enable custom themecustomThemeColors: Array of 10 color values- Validation ensures all colors are different:
frontend/src/ts/config-metadata.ts:812-825
Theme Modifiers
Color Adjustments
Flip Test Colors
Flip Test Colors
Feature:
flipTestColorsInverts the main color and background color in the test area.Use case:- Light text on dark background (or vice versa)
- Better contrast for some themes
- Accessibility preference
frontend/src/ts/config-metadata.ts:706-710Colorful Mode
Colorful Mode
Feature:
colorfulModeUses theme accent colors for various UI elements:- Stats display
- Buttons and navigation
- Charts and graphs
- More vibrant appearance
frontend/src/ts/config-metadata.ts:712-716Custom Backgrounds
Background Customization
Background Customization
URL Backgrounds:Settings:
customBackground: Image URLcustomBackgroundSize: cover, contain, or maxcustomBackgroundFilter: Array of filter values [blur, brightness, opacity, saturation]
- Blur: 0-10px
- Brightness: 0-200%
- Opacity: 0-100%
- Saturation: 0-200%
- Personal photos
- Aesthetic images
- Branding
- Subtle textures
frontend/src/ts/config-metadata.ts:718-738Theme Structure
Themes are CSS files that define CSS custom properties:Color Variables
Variable Reference
Variable Reference
Core Colors:
--bg-color: Main background--main-color: Primary text and active elements--caret-color: Typing cursor--text-color: General UI text
--sub-color: Inactive/secondary elements--sub-alt-color: Tertiary elements, dividers
--error-color: Standard error indication--error-extra-color: Extra error indication (unused letters)--colorful-error-color: Colorful mode error--colorful-error-extra-color: Colorful mode extra error
Advanced Customization
Some themes include additional CSS rules for specific elements:- Built-in:
frontend/static/themes/*.css - Custom: Stored in database, generated dynamically
Tips for Choosing Themes
For Accuracy
Choose themes with:
- High contrast
- Clear error colors
- Distinct caret color
For Long Sessions
Choose themes with:
- Lower contrast (easier on eyes)
- Muted colors
- Darker backgrounds
For Speed
Choose themes with:
- Minimal distractions
- Single-color focus
- Clear word boundaries
For Fun
Choose themes with:
- Vibrant colors
- Unique styles
- Animated elements
Accessibility
When creating or choosing themes, consider:
- Color blindness (avoid red/green only differences)
- Contrast ratios (WCAG AA: 4.5:1 minimum)
- Motion sensitivity (some themes have animations)
- Screen reader compatibility (themes don’t affect this)
Community Themes
While custom themes are account-specific, users can:- Share theme configurations (color arrays)
- Submit themes to the project on GitHub
- Browse community theme collections
- Import/export theme settings
Source Code References
- Theme files:
frontend/static/themes/ - Theme configuration:
frontend/src/ts/config-metadata.ts:705-825 - Custom theme API:
backend/src/api/controllers/user.ts:817-855 - Theme colors config:
frontend/src/ts/config.ts