#typing #terminal #termion #fun #tui-rs

app typeracer

A terminal typing game. Race to see the fastest time you can get!

6 stable releases

✓ Uses Rust 2018 edition

1.2.2 Sep 28, 2019
1.2.1 Sep 27, 2019
1.2.0 Aug 31, 2019
1.1.1 Jul 27, 2019

#2 in #fun

Download history 19/week @ 2019-07-15 33/week @ 2019-07-22 8/week @ 2019-07-29 27/week @ 2019-08-05 9/week @ 2019-08-12 5/week @ 2019-08-19 52/week @ 2019-08-26 32/week @ 2019-09-02 24/week @ 2019-09-09 42/week @ 2019-09-16 30/week @ 2019-09-23 40/week @ 2019-09-30 15/week @ 2019-10-07 16/week @ 2019-10-14 87/week @ 2019-10-21

89 downloads per month

GPL-3.0 license

1.5K SLoC


pipeline status

An open source terminal based version of Typeracer written in rust.

Gives you a random passage and you type it out. While you type it will tell you where you're making errors and give you a set of words per minute.

User typing away having a great time in their terminal

Or see it in action here!


We're on crates.io! Grab the latest version with:

$ cargo install typeracer

Or if you prefer, binaries are included with each release.

Binaries are statically linked and available for a few platforms (currently x86_64 Linux and macOS). To use them, download and execute like any regular binary.

Releases here


$ typeracer
# Or if you want to take the passage from somewhere else
$ typeracer -r $(echo 'racing using a passage from elsewhere')

Hit ^C at any time to quit.


What good would a typing game be without a config file?

Where you can find your config file:



And roughly in:





-- Note typeracer uses whatever the proper mechanism is for data and config folders are for your OS. If you customized the variables used, it may be elsewhere.

With your config, you can enable or disable language packs.

whitelisted = ["default"]
blacklisted = ["harry-potter"]

You can also choose where to get language packs. Default langpack is https://gitlab.com/ttyperacer/lang-packs.git, you can override this in the configuration file using repo key. You can also specify the version with repo_version.

For all lang pack versions, see [here!][https://gitlab.com/ttyperacer/lang-packs/-/branches] Bear in mind there may be incompatibilities between older lang packs and newer typeracers and the other way around.

repo = "https://example.com/your-lang-pack.git"
repo_version = "lang-0.2"


You need rust version 1.33.0 or higher (using some newer time APIs) and git. If you're on macOS, you'll probably need to install openssl too.

$ cargo build --release

The binary you'll get is called typeracer and runnable immediately!

Cross compile is currently broken

If you're trying to cross compile to macOS from Linux you'll need:


and to add the apple target via rustup:

$ rustup target add x86_64-apple-darwin

You can then build just the macOS target with

$ make mac


I'd love to have more contributors! If you're looking to make any drastic changes (e.g. Redis integration or something like that) consider contacting me via email first so we can discuss.

All rust should be formatted with rustfmt. And if you're adding a new feature, please add some tests too!

License is GPLv3 in the spirit of open source.


~306K SLoC