A browser-based tool for mapping the branching structure of gamebooks (Fighting Fantasy, Choose Your Own Adventure, etc.) across multiple playthroughs. Supports multiple users and multiple books per account.
The login and books screens share a three-panel layout:
Left — Book covers: A grid of randomly selected book covers from any book that has a cover uploaded. Hover over a cover to see the book title. Click a cover to open an activity dialog showing public runs and profiles linked to that book. The selection changes on each page load. The panel is hidden if no covers have been uploaded yet.
Centre — Activity feed: Displays completed runs (deaths and victories) from all users over the last 30 days, grouped by day (Today, Yesterday, or a full date). No login is required to see the feed.
Each entry shows who played, whether they died or won, and which book they were reading. The feed refreshes automatically whenever you navigate to the login or books screen.
Right — Login / Books: The login form or your books list.
Each side panel has a small collapse button (‹ / ›) on its inner edge. Click it to slide the panel away and give the activity feed more room. Click again to restore it.
On first launch you will see the Login screen.
Your session is remembered in the browser. Click Log out on the books screen to sign out.
After logging in you land on the Books screen. All your books are listed here. Each card shows a subtle progress bar indicating how many sections you have visited across all your runs.
New accounts start with a demo book — Demo Book — already set up with a fully mapped 50-section graph, 2 completed runs (one death, one win), an in-progress run, notes, and priority markings on several sections, so you can explore all the features right away. There is exactly one death outcome and one win outcome, both reached via the final section of the book. You can delete the demo book at any time.
| Button | What it does |
|---|---|
| Open | Opens the book and enters the tracker |
| ✕ | Permanently deletes the book and all its progress (with confirmation) |
To add a new book, fill in the New Book form at the bottom: enter a name, the total number of sections, an optional ISBN, and an optional cover image, then click Create. The ISBN field accepts ISBN-10 or ISBN-13 (with or without hyphens). Leave it blank if unknown.
The screen is split into two areas:
Click ← Books at the bottom of the sidebar to return to your books list.
Click + New in the Runs panel to begin a new playthrough. The tracker always starts at section 1.
When you reach a section that has not been mapped yet, a text input appears. Enter the section numbers the book offers as choices, comma-separated:
34, 67, 112
Special values:
-1 — the section can lead to death0 — the section can lead to victoryPress Record & Choose (or Enter). The choices are saved, and buttons appear for each destination. Press the one you actually took.
If a section has only one choice, the tracker auto-advances without asking.
When you return to a section that was already mapped in a previous run, the choice buttons appear immediately — no re-entry needed.
An Undo button appears below the current section during an active run. Each press removes the last step and returns you to the previous decision point — if several sections in a row had no branch (only one possible destination), they are all skipped in a single undo.
Each run has a limited number of undos based on your level:
| Level range | Undos per run |
|---|---|
| 1 – 30 | 3 |
| 31 – 40 | 4 |
| 41 – 50 | 5 |
| 51 – 60 | 6 |
| 61 – 70 | 7 |
| 71 – 80 | 8 |
| 81 – 90 | 9 |
| 91 – 100 | 10 |
The button shows how many undos remain and disables when none are left.
The Runs list in the sidebar shows every playthrough:
| Button | What it does |
|---|---|
| Private / Public (completed runs only) | Toggles the run's visibility. Shows Private when hidden and Public when visible to others. Only public runs can be linked from the activity feed — making your profile public does not expose private runs. |
| Load (in-progress) | Resumes that run as the active one |
| Load (completed) | Shows that run's path in the trail and highlights its nodes in the graph |
| ✕ | Permanently deletes the run (with confirmation) |
You can have multiple in-progress runs at once. Only one is active at a time.
Every section number you have ever encountered appears as a node. Edges show which sections lead to which.
| Colour | Meaning |
|---|---|
| Red | This edge leads inevitably to death — the destination has no branching path that avoids death |
| Green | This edge leads inevitably to victory |
| Grey (default) | No inevitable outcome |
"Inevitable" means the destination node (and any chain of single-choice nodes after it) leads only to death or only to victory with no branching. If a node has more than one choice, the chain stops and the edge is grey.
| Colour | Meaning |
|---|---|
| Orange (solid) | Where you are right now |
| Blue (solid) | Visited in the active or viewed run |
| Red (solid) | The section where a death run ended |
| Green (solid) | The section where a victory run ended |
| Dark with red outline | This section has a death choice |
| Dark with green outline | This section has a victory choice |
| Purple (solid) | Mapped — choices recorded, no terminal choices |
| Grey (solid) | Discovered — referenced but not yet mapped |
Nodes with death/victory choices have a thicker border.
Drag any node to reposition it. Positions are saved automatically and persist across sessions and JSON exports.
Your zoom level and pan position are saved automatically and restored the next time you open the same book.
High and Low markings are stored with the graph data and persist across sessions. They can be set on any section, including ones not yet mapped.
Any section can have a text note attached (e.g. "need the brass key to reach this"). Right-click the node and choose Edit note. Nodes with a note display a small green book icon. Hover over the node to see the note text in the tooltip.
| Stat | Meaning |
|---|---|
| Mapped | Sections where choices have been recorded, with percentage of total sections |
| Discovered | All sections seen so far (mapped + referenced but unmapped), with percentage of total sections |
| Playthroughs | Total number of runs (active and completed) |
Click Character Sheet (bottom-right corner of the tracker screen) to open the character sheet dialog. This lets you track any stats, items, or attributes for the current run.
The sheet is per run — each run has its own independent sheet. The button is only active when a run is in progress. When viewing a completed run the overlay shows that run's saved values but the sheet cannot be edited. When no run is loaded the button and overlay are hidden.
Drag the ⠿ handle on the left of any field row to reorder it. The new order is applied when you press Save or Save as Template.
Click + Add field to create a new field. Each field has:
| Setting | Description |
|---|---|
| Visibility toggle | Whether the field appears in the compact overlay on the graph screen. The pill switch is blue when visible, grey when hidden. |
| Name | Label shown in the overlay and the dialog |
| Type | One of: Number, Boolean, Text, List, Enum |
| Value | Current value — edit inline in the dialog |
| Type | Use for | Value format |
|---|---|---|
| Number | SKILL, STAMINA, Gold, etc. | Integer or decimal — use the − / + buttons or type directly |
| Boolean | Has item / ability yes/no | Checkbox (Yes / No) |
| Text | Freeform notes | Any text |
| List | Inventory | Comma-separated items |
| Enum | Character class, faction, stance | Pick one from a defined option set |
For Enum fields, type the available options (comma-separated) in the small grey box above the select — the dropdown updates immediately.
| Button | What it does |
|---|---|
| Save | Writes the current dialog state to the active run's sheet |
| Save as template | Saves the current dialog state as the book's template — new runs will start from this |
| Cancel | Discards all unsaved changes |
There is one template per book. Pressing Save as template overwrites the previous one.
Visible fields are shown as plain text at the bottom-right of the graph screen, above the Character Sheet button. Only fields with a non-empty name and the visibility toggle enabled are shown. The overlay updates when you press Save. It has no background and does not block interaction with the graph.
Character sheet data is saved with the rest of the book state and is included in JSON exports.
.json file containing all graph data, positions, and run historyUse export to back up progress or move it between machines or accounts.
Click the avatar circle next to your username on the Books screen to open your profile.
Your profile also shows your current level, title, and progress toward the next level. These update automatically as you use the tracker.
Click Save to apply changes. The dialog closes immediately on success. Password and username changes take effect immediately.
As you track your playthroughs, map sections, and engage with your books, you earn experience and level up. Your current level and title are shown in your profile.
Levels are gained by doing things naturally — playing through books, recording choices, completing runs, and filling out your profile. There is no need to do anything special; progress happens on its own as you use the tracker.
Your level and title are also visible on your public profile, if you choose to make it public.
Books can be edited from two places:
The ISBN field (ISBN-10 or ISBN-13, hyphens optional) is shown in the books list next to the section count. Books with the same ISBN are effectively the same title — useful for linking different-language editions or books with variant titles.
Both the New Book form and the edit book dialog include a cover upload section showing a 2:3 preview or a "No cover" placeholder. Click Upload Cover to select an image file — the preview updates immediately. For new books the cover is uploaded right after creation; for existing books it is uploaded when you press Save.
Once uploaded, the cover appears in the left panel of the landing page (visible to anyone, no public profile required).
Hovering over a book name (in either the sidebar or the books list) shows the full name in a tooltip if it is truncated.
Reset Book wipes all graph data, positions, and run history for the current book. The book entry itself is kept. This cannot be undone — export first if you want a backup.
To fully delete a book, use the ✕ button on the Books screen.