Skip to content
  • Unlock Pro
  • Log in with GitHub
Challenge
Step 1: Start challenge
Free+
  • HTML
  • CSS
  • JS
2junior

Typing speed test

Build a typing speed test that calculates words per minute (WPM) and accuracy. A fun project to practice DOM manipulation and working with timers.

Join 1 people who have taken this challenge

πŸ“Brief

This challenge is part of the Frontend Mentor 30-Day Hackathon, with submissions closing on Monday, January 19th. Find hackathon details here. During the hackathon, this challenge is free+ (everyone gets free Figma access), and it will revert to free afterward.

Your challenge is to build out this typing speed test app and get it looking as close to the design as possible.

You can use any tools you like to help you complete the challenge. So if you've got something you'd like to practice, feel free to give it a go.

We store the passage data in a local data.json file. You can use that to randomly select passages of varying difficulty.

Your users should be able to:

Test Controls

  • Start a test by clicking the start button or by clicking the passage and typing
  • Select a difficulty level (Easy, Medium, Hard) for passages of varying complexity
  • Switch between "Timed (60s)" mode and "Passage" mode (timer counts up, no limit)
  • Restart at any time to get a new random passage from the selected difficulty

Typing Experience

  • See real-time WPM, accuracy, and time stats while typing
  • See visual feedback showing correct characters (green), errors (red/underlined), and cursor position
  • Correct mistakes with backspace (original errors still count against accuracy)

Results & Progress

  • View results showing WPM, accuracy, and characters (correct/incorrect) after completing a test
  • See a "Baseline Established!" message on their first test, setting their personal best
  • See a "High Score Smashed!" celebration with confetti when beating their personal best
  • Have their personal best persist across sessions via localStorage

UI & Responsiveness

  • View the optimal layout depending on their device's screen size
  • See hover and focus states for all interactive elements

Download the project and go through the README.md file. This will provide further details about the project and help you get set up.

Want some support on the challenge? Join our community and ask questions in the help channel.

πŸ—ƒAssets provided

  • Figma design files (included with Free+ challenges)
  • Mobile, tablet & desktop layouts
  • Professional design system for colors, fonts, etc.
  • Optimized image assets
  • README file to help you get started
  • HTML file with pre-written content

πŸ’‘Ideas to test yourself

  1. Add multiple test durations (15s, 30s, 60s, 120s)
  2. Add different text categories to type, such as famous quotes, song lyrics, or code snippets
  3. Track WPM and accuracy over time using local storage
  4. Add a keyboard heatmap showing errors and keypress frequency
  5. Create shareable result cards for social media

Challenge FAQs

  • How can I get help if I'm stuck on a challenge?

    The best (and quickest) way to get help on a challenge is in our Discord server. There are thousands of other developers in there, so it's a great place to ask questions. We even have a dedicated "help" channel! If you haven't joined yet, you can get an invite to our Discord server here.

  • How do I submit my solution?

    We'd recommend reading our complete guide to submitting solutions . If you get stuck and need help, please feel free to ask questions in our Discord server, and we'll help you submit your project.

  • Is there an official solution I can take a look at?

    We don't provide "official" solutions for the challenges. This is because there is no single perfect way to complete a challenge. Instead, you're encouraged to review other people's code in the community. You can learn so much by seeing how other people have approached the same challenges and giving them feedback.

  • Do I get a code review when I post my solution?

    Frontend Mentor is a collaborative learning community where everyone can give feedback to each other. If you'd like to receive feedback from the community, please be sure to post a question when you submit your solution. The more specific you can be, the better. Being clear with your questions means you're much more likely to receive valuable feedback from others.

  • Can I use libraries/frameworks on these projects?

    Yes! Our challenges provide professional designs but there are no rules on what tools to use. So feel free to use anything you like to build your projects.

  • Can I use these projects in my portfolio?

    Definitely! Please do feel free to use whatever you build in your portfolio. Helping developers add professional-looking projects to their portfolio was one of the reasons we created this platform!

  • How often are new challenges added?

    We launch a new challenge every two weeks. We alternate between free and premium challenge launches, so we launch one free and one premium challenge each month.

  • What is the difference between the desktop-design, mobile-design, and desktop-preview images in my starter code?

    The desktop-design and mobile-design images show you how the layout should look at large and small screen sizes. The desktop design is 1440px wide, and the mobile design is 375px. However, try building projects to look good on all screen sizes. The desktop-preview image is a preview image used in the README file. You don’t need to reference this while building the project.

  • Can I use these challenges within my own free or commercial content/tutorials/projects?

    Please visit our License page to learn more about how our challenges can be used within your own content. If you're unsure about anything, please feel free to contact us at [email protected] and we'll be more than happy to answer your questions.

Join our Discord community

Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!

Join our Discord

Stay up to datewith new challenges, featured solutions, selected articles, and our latest news

Frontend Mentor

  • Unlock Pro
  • Contact us
  • FAQs
  • Become a partner
  • Use cases

Explore

  • Learning paths
  • Challenges
  • Solutions
  • Articles

Community

  • Discord
  • Guidelines

For companies

  • Hire developers
  • Train developers
Β© Frontend Mentor 2019 - 2025
  • Terms
  • Cookie Policy
  • Privacy Policy
  • License