10FastFingers History


TODO: personal struggles, challenges, growth
TODO: Backup Ghost/Blog Content
TODO: add "evolution image" at the top as eye catcher
TODO: Podcast dubbing

When I first created what would eventually become 10FastFingers in 2007, I never imagined that this simple project would grow into such a defining part of my life—bringing me joy, challenges, financial independence, and countless restless hours—while evolving alongside me.

To everyone who has enjoyed 10FastFingers over the years, shared it with friends, or turned it into a friendly competition—thank you from the bottom of my heart.

Here is our story.


If you understand German and prefer an audio recap of the history, listen here:

audio-thumbnail
10FastFingers Skillbyte Podcast deutsch
0:00
/54:13

Source: Skillbyte Podcast #21: 1 Webseite, 1 Mann, 100 Millionen User


Evolution from Schnell-Schreiben.de to 10FastFingers.com

Before there was 10FastFingers, there was Schnell-Schreiben.de (translation: "type fast"), this was one of the earliest videos I could find:

2008 - speedtest.schnell-schreiben.de

There were already a couple of different languages you could pick from and you received a score at the end with a badge to share on your blog or website:

typing test score and badge

I tried out a different version but in the end didn't like it as much, as the focus wasn't on the typing test anymore:

Watch on YouTube " - schnell-schreiben.de Highscore"

a bit of a fresher look and with additional languages (before switching over to 10FastFingers.com to focus on the international audience).

Watch on Youtube "IngamersUnderstood - Speedtest - Schnelles Schreiben"

before using 10FastFingers.com the typing test was running on 10-fast-fingers.com, for "SEO" reasons, but I'm glad I switched over :)

Watch on Youtube "Ohfu80 - French Typing Speedtest"

More blasts from the past: schnell-schreiben.de on youtube


One of the first websites to feature 10FastFingers was MakeUseOf.com. If I remember correctly, I reached out to them via email to promote my site (marketing has never been my strong suit, so I was thrilled when they decided to cover it). That moment marked the beginning of a surge in new users—but the real growth came from the viral loop: a shareable result badge that users could proudly display on their blogs (yes, blogs were huge back then!). You can check out the article here:

10-Fast-Fingers: Online Touch Typing Speed Test
The first badge in all it's developer design glory

10FastFingers v1 (2007-2011)

The first version was straightforward: you had a word list of the 200 most common words in your language and simply typed as many words as possible within 60 seconds. There was no leaderboard, no login, and no community features—Discord didn’t even exist back then. The only way to compare your speed with others was through a position ranking displayed below the game:

The ranking took into account all results from the past 24 hours (or was it 30days?) for a specific language

At the end of the test, you received your result—but if you wanted to save it, taking a screenshot was the only option. Many users did just that, even sharing their scores on forums, which helped attract even more people eager to test their typing speed.

Despite its simplicity, v1 resonated with users, who kept returning to challenge themselves and improve. Over time, I gradually added more languages and made small design improvements, but my focus remained on other projects—until I finally decided it was time to create a proper typing experience with version 2.

site stats in the early days (v1)

10FastFingers v2 (2012-2025)

After running this "barebones" version of 10FastFingers for about four years—without user accounts, translations or additional modes like typing competitions or text practice—I finally took the leap to upgrade. I moved from basic HTML, CSS, and JavaScript with a touch of SQL to a proper framework (CakePHP) that allowed me to add all those missing features while keeping the project maintainable. There was even a short-lived version 1.5 with a custom-built framework, but I quickly scrapped it in favor of CakePHP, which proved to be the better long-term choice.

If you're wondering what the ultimate developer setup looks like 😉

Even though I’m a coder at heart, I love putting my ideas on paper—preferably in a way that covers my entire wall! Here’s a glimpse of my V2 master plan for 10FastFingers. (Apologies for the blurry quality—mobile cameras weren’t exactly top-notch back then, so I hope your eyesight is up to the challenge! 😉)

Masterplan
This was likely version 1.5—before I scrapped everything and rebuilt it from the ground up in CakePHP.

If you want a more in-depth look at my redesign process in 2011/2012, take a look at this, recovered, blog post from my personal blog: Speedtest Redesign

This was the final result after the site has evolved from 2012 to 2025:

The site grew a lot during the second phase of 10FastFingers, looking forward to version 3:

site stats during the second phase (v2)

10FastFingers v3 (2025-20??)

Version 3 went through a lot of iterations meanwhile I struggled with mental health issues and burnout. Despite struggling with those issues, I still felt I owed it to all the users to deliver something—a better version with long-requested features: more achievements, enhanced community features, additional modes, and an improved multiplayer experience with rankings, leagues, and all that.

I realized that I wouldn't be able to work/complete version 3 by myself so I started to seek outside help, this was a whole new challenge for me and somehow I made it through :)

#TODO: more details, working with others, a team, delegating, etc.

Right now version 3.0 is live and evolving, let's see where we go from here. Happy Typing!


TODO: Screenshots of wip v3 (siehe Figma) und release v3 or linked blogpost? too long?

TODO: Future Plans

TODO: And some nostalgia to round it all out/finish up:

Logo Evolution

Funny Side-Story about non-premature optimization

#TODO: remove or reposition?

Even in version one, I used a MySQL database to store scores—anonymously, since there was no account system yet. Instead of writing an efficient query to fetch only the relevant scores, I simply pulled all of them! To be fair, in the beginning, that was just a few hundred entries, so it didn’t seem like an issue. Sorting was then handled directly in PHP.

That worked fine—until one day, my database kept crashing, and, of course, I had no idea why. But hey, at least it finally gave me a reason to optimize my code!

Sometimes, I miss those days—when I could blissfully ignore the dangers of poor optimization. But we all have to pick our battles, right?