The format is versioned by the specification, which self-declares its version. Every version is preserved at a permanent URL of the form /spec-v<version>.html; /spec.html is always the current version.
Current specification · permanent URL: /spec-v1.4.html
## Watching, ## Watched, ## Archive, and their aliases) as a default watch status or archived
flag for unmarked lines on that shelf — a compatibility bridge from an early, pre-1.2 draft in which sections defined status. As of v1.4 a shelf's name carries no read semantics at all: ## Watched means exactly what ## Rom-coms means, an unmarked
line is unwatched on every shelf, and an archive-named shelf no longer implies ~.
+ for watched, @ for watching, ~ for archived. Tools SHOULD offer a one-step normalization that bakes the old meaning onto the lines (the reference parser warns whenever it sees unmarked lines under a status-named shelf), and MUST NOT silently
rewrite or silently re-interpret a file. Marked lines are untouched — if your lines already carry their marks, nothing changes.
Permanent URL: /spec-v1.3.html
> (the recommended prose style; renders as a markdown blockquote), // (switch a line off), --, and /* … */ block comments across lines. Comments are whole lines only (no inline
or trailing comments), opaque to parsers, and preserved byte-for-byte by writers. Back-compat carve-out: v1.2 read these line shapes as (nonsense) titles; no real title starts with a comment marker.
Services: Netflix | Hulu | Max — one line, readable anywhere in the file (conventionally last); | alone delimits, so names keep their +. Writers now emit this form; the legacy ## Streaming Services shelf
reads forever. Same back-compat carve-out class as comments (v1.2 read a Services: line as a nonsense title).
\* as * (a real-world copy-paste artifact that otherwise swallows the year and rating into the title) and the legacy @YYYY-MM-DD spelling as a watched date;
writers MUST emit the canonical * and +YYYY-MM-DD.
Permanent URL: /spec-v1.2.html
@ watching > + watched > _ explicitly unwatched > nothing = unwatched); ~ archived is an orthogonal flag, never a status.## headings are shelves — pure user organization that never decides status; well-known shelf names only default unmarked lines (retired in v1.4).* favorite, ^ masterpiece, !–!!! priority. Ratings as n/5, n/10, bare decimals anywhere, and trailing bare integers (the Ocean's 8 rule). Bracket marks [ ] [_] [@] [x] [+] [~] as a leading spelling of the same channel.#tags, | note, @s2e6/@1:20:00 progress, +YYYY-MM-DD watch dates (repeatable), the ## Streaming Services shelf, and the bare-list rule (a file with no structure is already valid).Versions before 1.2 were unpublished drafts; 1.2 is the first public version of the format.