livesplit-core can read splits files produced by a wide variety of speedrun timers. The composite parser automatically detects the format and hands off to the appropriate format-specific parser, so you typically do not need to know which format a file uses.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/LiveSplit/livesplit-core/llms.txt
Use this file to discover all available pages before exploring further.
Supported Formats
The following formats are supported for reading:| Format | Notes |
|---|---|
LiveSplit (.lss) | Native format — also the only format supported for saving. |
| Face Split | |
| Flitter | |
| LibreSplit | |
| Llanfair | |
| Llanfair (Gered’s fork) | |
| OpenSplit | |
| Portal 2 Live Timer | |
| Shit Split | |
| Source Live Timer | |
| Speedrun IGT | |
| Splitterino | |
| SplitterZ | |
| Splitty | |
| Time Split Tracker | |
| WSplit |
Only the LiveSplit
.lss format is supported for saving. All other formats are read-only.Parsing a File
Usecomposite::parse when the file format is unknown. It tries each parser in turn and returns the first successful result.
ParsedRun owns the Run and a kind: TimerKind value identifying the detected format.
Parsing Without a File Path
When no file system is available — for example, when receiving bytes over a network — passNone as the path. External resources (icons) will not be loaded, but the run data itself is parsed normally.
Parsing and Fixing
parse_and_fix extends the standard parse by also repairing known issues in the run data — for example, correcting decreasing split times or filling in missing information. Prefer this when loading files that users may have hand-edited or that come from older versions of a timer.
Saving a Run
Only the LiveSplit.lss format is supported for saving. Use livesplit::save_run to write any Run value, or livesplit::save_timer to save the run currently loaded in a timer (which also captures the in-progress attempt if one is active).
Save a Run directly
IoWrite is a thin adapter that lets any io::Write implementor be used as the fmt::Write expected by the saver.
Save from a live Timer
save_timer rather than save_run when the timer is actively running, so that the current attempt is included in the attempt history of the saved file.
Save to a String
Because the writer accepts anyfmt::Write, you can also save to an in-memory string:
The LSS Format
The LiveSplit splits file (.lss) is an XML-based format. A saved file includes:
- Game name, category name, and linked layout path.
- Run metadata: run ID, platform, region, Speedrun.com variables, and custom variables.
- Attempt history with start/end timestamps and pause times.
- Per-segment data: name, icon (base64-encoded), split times for each comparison, best segment time, and segment history.
- Auto splitter settings (stored as an opaque XML blob).
1.8.0.