LevelSelect

Help

Last updated 25 August 2026

New here? The three steps below are the whole shape of the app. Everything after them is reference — read it when you need it, not now.

  1. Add your first game Search for it and the cover, platform and details come with it. Got a library elsewhere? Settings → Your data → Import from CSV brings the lot in at once.
    1 min
  2. Start a session Time what you play. It keeps counting on the Lock Screen, in a widget, and on your watch — and nudges you if you forget to stop it.
    10 sec
  3. Give it a tracker This is the part people stay for. Paste a checklist you already trust from a wiki or guide, or let LevelSelect draft one for the game. How pasting works →
    2 min

Then, when you need it

Pasting a checklist into a tracker

Most games worth tracking already have a good checklist somewhere — a wiki table, a forum post, a guide. Tracker → Paste a List turns one into real tracker categories. Nothing is sent anywhere, no AI is involved, and nothing is invented: every item comes from your text. It does interpret as it reads — stripping list syntax, working out which part of a line is the name and which is the location — and the rest of this section explains exactly how, so you can predict what it will do.

Two formats work

A table, with a header row. Column names are matched loosely, so most wiki tables work as-is:

| Item      | Effect              | Location   | Notes            |
| --------- | ------------------- | ---------- | ---------------- |
| Lace Glove| Raises Attack by one| Ossex      | Reward from Ack  |

Recognised headers include Item, Name, Trinket, Title, Collectible for the name; Location, Area, Region, Zone for where it is; Effect, Description, Details; and Notes, How, Source, Hint. Anything unrecognised is skipped and reported rather than guessed at.

Or headed sections of numbered or bulleted lines:

## Heart Coins
### Koala Village
- [ ] Nia's Bedroom
- [ ] Cave behind the house

## Honey Pots
1. Alberto's Farm - Yak Cave

## becomes a category. ### becomes the location for the items beneath it. Checkboxes, numbers and bullets are all stripped.

The one rule worth knowing

In a line like Koala Village - Nia's Bedroom, is the first part a place or the item's name? LevelSelect decides by whether it repeats: a leading phrase that appears on several lines in the same section is treated as a location, and one that's different every time is treated as the item's name.

That gets it right for most lists — "Koala Village" nine times is clearly a place; "Wallet 1, Wallet 2, Bombs 1" are clearly items. Where a section is genuinely mixed, the preview screen shows which reading it chose and lets you flip it with one tap.

If you'd rather not rely on the guess, use ### headings for locations. An explicit heading always wins.

What is deliberately not split

Only - (with spaces around it) separates a line. Commas never do — otherwise "Crab, Eel, Perch, Trout" would shatter into four items. That's why a line written with commas comes through as one long name; renaming it takes a moment, and a parser that split on commas would quietly wreck other lists.

Imported lists are protected

Anything you paste in is locked: regenerating that game's tracker later won't remove or replace it. You brought that list deliberately, so nothing automatic gets to overrule it.

Regenerating a tracker safely

The generate button tells you what it's going to do, and you can change it for a single run by long-pressing.

Generation doesn't name things identically each time, so an item can come back with a different internal id. LevelSelect follows those renames by matching names and carries your progress across, telling you how many it moved — matching is careful but not psychic, so the review screen is there to check before a Replace. If something you'd worked on genuinely isn't in the new tracker, you're offered the chance to keep it as a personal goal rather than losing it.

Your own notes stay yours: no merge mode rewrites them, and a Replace carries each note across wherever its item can still be matched.

Playing blind: hiding hints

Generated and imported checklists usually carry a hint or a location for each item — useful when you're hunting, spoilers when you're not. Settings → Appearance → Show item hints turns them off: rows become just their names, and location headings disappear too.

When you actually want one hint, press and hold that row — a card shows that item's hint, location, and badge, and nothing else. One item at a time, so checking a single objective can't spoil the list below it. Your own notes on items always stay visible; they're yours, not hints.

RetroAchievements

For retro games, LevelSelect can install the real, authored achievement list from RetroAchievements instead of generating an approximation — point values, missable flags, and each achievement's own badge art, in colour once you've earned it and RA's greyed version while you haven't.

Connect your account in Settings and imported sets arrive already ticked with what you've earned, and a sync can only ever add — the app knows RA has no idea you played the cartridge on real hardware last week. Stats gains a wall of your mastered and completed sets, gold-bordered only for hardcore mastery, because that distinction is RA's and the app keeps it. Your API key goes from your device to RetroAchievements directly — it never touches our servers, and it stays in the Keychain on each device.

Doors out are everywhere the set is: the set's page on RA from the tracker, and your own profile from RetroAchievements settings.

Beaten is a moment; 100% is your list

Beating a game and finishing every item on your tracker are different achievements, and LevelSelect records them separately. On any game's page — the Beaten section, or the ⋯ menu — mark Beat the game, 100%, New Game+, or your own words. "100%" means everything on your list, the one you chose to keep; it doesn't claim a platinum.

Dates are stored only as precisely as you know them: an exact day for last night's credits, a month for "sometime that spring," a bare year for the game you beat in 2011 — and shown exactly that vaguely, because the app doesn't pretend to know more than you told it. Logging your history needs no sessions and no retroactive box-ticking. A beat can point at the playthrough it capped; that run wears a checkered flag, and Stats' Beaten & Completed card opens each year into the actual list of what you finished.

Sessions and runs are different things

A session is time played — start it and it counts, including on the Lock Screen and your watch. A run is one attempt at something, for roguelikes: a loadout, an outcome, and a win rate over time.

They're deliberately separate. A run doesn't start a timer, and a session doesn't record a run, so your playtime never gets inflated by counting attempts. Run logging is off until you turn it on for a game (⋯ → Log Runs for This Game), because plenty of games deserve a tracker without one.

Siri, Shortcuts, and your games by name

Every game in your library is a real entity in the Shortcuts app, Siri, and Spotlight — not just the app itself, each game. That means:

Nothing to set up — the shortcuts register themselves when the app is installed. Open the Shortcuts app and search LevelSelect to see the full set.

Widgets

The next build brings a full widget set. A field guide, ahead of it landing:

Getting your data out

Settings → Your data → Export library writes a readable JSON file covering games, playthroughs, sessions, runs, tracker progress and collections, with a manifest of counts at the top.

It carries your library's content: games and their metadata, playthroughs, sessions, runs, tracker schemas and progress, your notes, maps and their markers, videos with per-part playlist positions, and collections — each record with its stable id — plus your appearance settings as a single preferences block.

And it comes back: Import LevelSelect export (same screen) reads the file and restores whatever your library is missing — never touching what's already there, so an old export merges safely onto a current library, and importing twice changes nothing. One honest caveat remains: map images are saved as links rather than embedded. Alongside it, Recently Deleted holds everything you delete until you decide otherwise — restore with a tap, or use the app's only permanent delete, which lives there and nowhere else.

There's no lock-in here and there isn't going to be. Your library syncs through your own iCloud, and what's in the export is genuinely yours to take.

Something missing or wrong here? support@levelselect.app, or send feedback through TestFlight.