Leitner is a flashcard review tool that uses spaced repetition to help you memorize vocabulary efficiently. Cards you find easy are shown less and less often; cards you find hard keep coming back. Your progress saves automatically between sessions.
Paste your word list into the text area on the Setup screen — one entry per line. Separate the term and its definition with a colon (:), a pipe (|), or a tab. Lines starting with # are ignored (use them as section headers or comments). Then click Load Deck.
Example input:
ephemeral : lasting for a very short time
laconic | using very few words
# the next line uses a tab separator
sanguine optimistic despite difficulty
Each card shows one side — by default, the definition, and you try to recall the term. Click the card (or press Space / Enter) to flip it and reveal the answer. Then rate how well you recalled it:
| Button | Key | Meaning | Effect |
|---|---|---|---|
| Easy | 1 | Recalled instantly, no hesitation | Interval multiplied by ease factor; shown much later |
| Good | 2 | Recalled with some effort | Interval grows modestly |
| Hard | 3 | Forgot or nearly forgot | Interval resets to 1 day; ease factor decreases |
Up to 10 new (unseen) cards are introduced per session alongside your due cards. When the queue empties, you'll see the Session Complete screen.
The app starts in definition → term mode: you see the definition and recall the word. This is the easier direction — recognition before recall. Once you've seen every card at least once, a banner suggests switching to term → definition mode, which is harder and builds deeper retention.
You can toggle the mode at any time with the switch in the study screen's top-right. Each direction tracks separately which cards it has introduced, but a card keeps one review schedule shared by both directions — switching doesn't reset your work, and a rating in either direction adjusts that shared schedule.
Done for today? Just close the tab. Your progress is saved and cards will be waiting when they're next due.
Want to drill again immediately? Click Review All Now to force every card in the deck back into the queue right now — useful for cramming or a second pass. Cards you've already reviewed today will not have their scheduled intervals changed; only your first review each day affects scheduling.
The Export Save button downloads a .json backup of your entire deck and progress. Use Import Save on the Setup screen to restore it. This is also how you move progress between file:// and https:// (see Saving below).
Each card carries an interval (days until next review) and an ease factor (a multiplier starting at 2.5). After you rate a card:
| Rating | New interval | Ease factor change |
|---|---|---|
| Easy | interval × ease factor | +0.15 |
| Good | interval × (ease − 0.15) | no change |
| Hard | reset to 1 day | −0.20 (floor: 1.3) |
The first two reps of any new card use fixed short intervals (1 day, then 2–3 days depending on your rating) before the multiplier kicks in. A card you always rate Easy might follow a schedule like 1 → 3 → 7 → 18 → 46 days. A card you keep rating Hard stays near 1–2 days until it sticks.
This is a simplified version of the SM-2 algorithm, which underlies Anki and most modern flashcard apps.
Progress saves automatically to your browser's localStorage after every card rating. This works whether the file is opened via https:// or file:// — but note that localStorage is origin-scoped, so data saved under one protocol is not visible under the other.
To move progress between the two, use Export Save to download a .json file, then Import Save to load it back in the other context. The JSON contains your full deck and all scheduling data.
New Deck clears all saved data and returns to Setup. You'll be asked to confirm. Export your save first if you want to keep your progress.
| Key | Action |
|---|---|
| Space / Enter | Flip card |
| 1 | Rate Easy (after flip) |
| 2 | Rate Good (after flip) |
| 3 | Rate Hard (after flip) |
| ? | Open / close this manual |
| Esc | Close this manual |
One entry per line. Separate term and definition with :, |, or a tab.
Lines starting with # are comments and will be ignored.