Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


A Livesplit-inspired speedrunning split timer for terminal / command-line.

Animated demo GIF

All screenshots


  • Global hotkeys
  • 🌈 Animated rainbow best splits
  • 24-bit terminal color
  • Undo / delete split
  • Pause / resume
  • Splits and history stored in single human-editable file
  • 60 FPS rendering with low CPU usage
  • Robust time computations: float math is mostly avoided


Flitter has been tested on Linux, but in theory it should work on MacOS as well. Windows is not supported.

OCaml Dependencies

Flitter is mostly written in OCaml.

Install opam: opam install instructions

Set up opam and install OCaml dependencies:

$ opam init
$ opam switch create 4.07.0
$ opam install dune core lwt re color sexp_pretty uutf lwt_ppx uuseg notty

Python Dependencies

Flitter uses a tiny amount of Python to provide global hotkeys.

Install pip for Python 3. For example, on Ubuntu / Debian:

$ sudo apt install python3-pip

Install Python package dependencies:

$ pip3 install --user pynput

Install Flitter

$ git clone --recursive
$ cd flitter
$ dune build
$ dune install


Create your splits:

Copy examples/splits.scm somewhere. Edit it and add your game and split information. The personal best splits, world record splits, and gold segments are not required.

Launch Flitter with your splits file:

$ flitter my-splits.scm

Warning: Don't edit your splits file while Flitter is running, your changes will be overwritten.


Keybindings are all global hotkeys; they will work even when the terminal is not focused.

Keys Action
Space Start / split / save and reset if run finished
J Start / split
K Undo split
D Delete last segment
Backspace Pause / reset (save run if finished and save golds)
Delete Pause / delete run (don't save anything)
Q Quit (if not currently timing)


Feel free to make an issue or a pull request!