The timer#
The drill timer measures one case. This timer measures a whole solve, optionally broken into its four CFOP phases. It is what feeds your real phase averages, and therefore what eventually replaces the shipped split targets with your own numbers.
Timing a solve#
- A scramble is generated and shown — 18 random twists plus up to 6 more, with no cancelling moves. It pastes straight into csTimer if you want to cross-check. See Scrambling.
- Arm the timer: hold the spacebar (desktop) or press and hold the timer face (phone). It turns green when you have held it long enough.
- Release to start.
- Press once to stop. On a touch screen, tap anywhere on the timer face.
The timer face goes full-bleed while running — no navigation, no chrome, no distraction — and comes back with the result and the buttons for what to do with it.
Phase splits#
Splits are optional. Turn them on with the Splits toggle before you start. With splits on, the interaction changes from one stop to four taps:
| Tap | Ends |
|---|---|
| 1 | Cross |
| 2 | F2L |
| 3 | OLL |
| 4 | PLL — stops the timer |
Each tap records a cumulative time; the app stores the differences as
cross_ms, f2l_ms, oll_ms and pll_ms next to the total.
Splitting costs you a couple of tenths
Reaching for a key mid-solve is not free. Expect split-tracked solves to come out a little slower than untracked ones, and compare splits against splits rather than against your personal best.
If you mis-tap, the result screen lets you correct or clear individual splits before saving, and saving a solve with only some splits filled in is fine — a missing phase is stored as null and simply not counted in that phase's average.
Penalties#
Standard WCA-style penalties are on the result screen:
- OK — the time stands.
- +2 — two seconds added; stored as the raw time plus the penalty flag, so the original is not lost.
- DNF — the solve counts as an attempt but is excluded from every average.
What the app does with your solves#
Every solve is stored with its scramble, so you can reproduce it later — the solve list has a View button that loads the scramble into the 3D viewer.
Your solves drive:
- Session statistics — best, worst, mean, and the rolling averages every cuber expects: ao5, ao12, ao100 (WCA trimmed averages, dropping the best and worst 5%, DNFs counted as worst).
- Phase averages on the assessment overview, which is where split data actually earns its keep. Once you have enough split-tracked solves, the overview shows your real phase times against the targets for your goal, instead of only the projection built from case drills.
- The projected versus actual comparison. The projection adds up your isolated case times; your real splits are always slower, because real solves contain the pauses between phases that case drilling never exercises. The size of that gap is a direct measure of your lookahead.
Keyboard and touch#
| Action | Desktop | Phone |
|---|---|---|
| Arm / start | Hold and release Space |
Press and hold the timer face |
| Stop / split | Space or any key |
Tap the timer face |
| Cancel a running solve | Esc |
The Cancel button |
| New scramble | N |
The ↻ button |
| Toggle splits | S |
The Splits switch |
Everything is reachable without a pointer, and the timer face is a real button with a visible focus ring, so screen-reader and keyboard-only use works.
Inspection#
If your instance sets drills.inspection_seconds above zero, the timer offers
a WCA-style inspection countdown before the solve starts, with the customary
audible-free 8- and 12-second markers shown on screen. It ships disabled
(0), because most practice is more useful without it.
Importing and exporting#
- Copy scramble puts the current scramble on the clipboard in csTimer's format.
- Export solves downloads your solve history as JSON — total, splits, penalty, scramble and timestamp per solve. That file is also what backups contain, in a larger form.
There is no import of external timer histories. Times from another timer have no phase splits and no case attribution, which is most of what this app is for.