How this works

The rules, in the open: what counts, how rank is earned, what we verify, and what we will never sell.

This page describes how vimkatas works: how a result is scored, where rank comes
from, and what a subscription buys. It's public on purpose — rules you can't read
usually turn out to be unfair.

Everything in sections 1–6 works right now. Section 7 is planned, and says so.

1. The metric is keystrokes, not seconds

A vimkatas result is keystrokes, with time as the tiebreak.

That's the whole point of Vim: a command is a sentence, and the more directly you
said what you meant, the better you said it. Typing the wrong command quickly is
not an achievement. Pressing x five times and pressing dw once look identical
on screen — they are not the same command of the language.

So the leaderboard sorts by keystrokes first, and only compares time when
keystrokes tie.

2. Par

Every kata has a par — the keystrokes a canonical solution needs.

Par isn't a guess. Each kata carries its reference solution in the code, and a
test on every build checks that the solution really does solve the kata in
exactly par. If we lied about par, the build would fail.

You can hit par. Beating it usually isn't possible — par is the short way.

3. Rank

Rank is computed from your progress across every kata: for each one you've
cleared we take par / your keystrokes (capped at 1), and average that over
all katas in the campaign. That gives a percentage and a tier:

:readonlyhjkl rideroperatortext-object ninjadot commanderVim wizard

Two consequences worth understanding:

4. We verify every run

When you solve a kata, your browser records the keystrokes with timestamps and
sends that recording to the server. The server replays it through the same
engine
and derives the keystrokes and time itself.

We don't trust the number you send — we reproduce it. Forging a score in the
request is pointless: the number isn't used.

A side effect that matters for racing: a recording's timestamps are relative to
your own start, so latency can't affect your score. You never lose a live
race to your connection.

5. Ghost races

A ghost is someone's recorded run (or your own) replayed beside you. Who you get:

6. Subscription

A subscription buys features and cosmetics. It does not buy progress, rank or
leaderboard position — see §3.

Free forever: the whole campaign, ghost races, live races, the leaderboard, and
the lesson builder with a limit.

7. Planned — none of this exists yet

Marked honestly: nothing below is built. These are design decisions. We
publish them early so the rules can't change after the fact.

What will never happen

Pay-to-win. Rank, leaderboard place and progress are earned by skill alone.
The only things money buys are features and appearance. That isn't a promise
about the future — it's a constraint we design against every time.