Subtitle Editor
The Subtitle Editor opens whenever you click Edit on a sidecar pill in the Library or in Activity. It’s a single modal with three tabs — Cues, Timing, Translation — plus a separate Waveform tab documented on its own page. Edits are staged in memory; nothing touches disk until you press Save.
Opening it
Section titled “Opening it”The editor is reachable from anywhere a sidecar pill is shown:
| Surface | How |
|---|---|
| Library → Series/Movie | Click the language pill on an episode/movie row. |
| Activity → History | Click Edit on a recently downloaded item. |
| Activity → Queue | After a translation finishes, click Edit in the toast. |
| Subtitle Editor → header | Cycle to the previous/next subtitle of the same item with < / >. |
The Cues tab
Section titled “The Cues tab”This is the default tab when the editor opens. It’s a virtual list of every cue in the file with timestamps, duration, and the subtitle text.
| Column | Effect |
|---|---|
| # | Cue index. |
| Start | HH:MM:SS.mmm. Click to edit inline. |
| End | Same. |
| Dur | Computed end − start, in seconds. Red when below the 80 ms minimum. |
| Text | Raw cue text. Multi-line cues are rendered with line breaks. Click to edit. |
Inline edits commit on Enter or Tab; Escape discards. The header pill flips to “Edited” once anything is staged.
The Timing tab
Section titled “The Timing tab”Coarse-grained adjustments that apply to every selected cue. Three fields, each with their own preview:
| Field | Effect |
|---|---|
| Offset (ms) | Shifts every selected cue forward (positive) or backward (negative). |
| Speed factor | Multiplies start/end by the factor (e.g. 25/23.976 for PAL→NTSC). |
| Anchor | When set, the speed factor is applied around the anchor cue, so it stays at the same time and the others stretch around it. |
The preview row shows the first and last cue before/after the transformation so you can sanity-check the deltas before applying.
The Translation tab
Section titled “The Translation tab”If translation is enabled, this tab kicks off a job that translates the current subtitle into the target language using your active backend. The job streams progress back into the modal so you can watch it advance cue-by-cue without leaving the page.
| Control | Effect |
|---|---|
| Source language | Auto-detected from the file. Override if detection is wrong. |
| Target language | Defaults to the series/global setting; pick another for a one-off. |
| Backend | Override the active backend just for this job (e.g. swap to Claude for a tricky episode). |
| Glossary | Toggle whether the global + series glossary is injected into the prompt. |
| Run | Queues the job. The modal stays open and renders progress per cue. |
The Waveform tab
Section titled “The Waveform tab”A full editing surface, not just a viewer — frame-accurate timing with snap-to-keyframe, scene-detect support, and Aegisub-style shortcuts. Documented in detail at Waveform Editor.
Saving and discarding
Section titled “Saving and discarding”| Action | Effect |
|---|---|
| Save | Writes the staged edit back to the original sidecar. The previous version is kept as .bak for the configured retention. |
| Save As | Writes to a new file (different language code or suffix). The original is untouched. |
| Discard | Drops in-memory changes. The header pill flips back to “Clean”. |
| Close (Esc) | If staged changes exist, prompts for confirmation. |
Format support
Section titled “Format support”The editor reads and writes:
| Format | Read | Write | Notes |
|---|---|---|---|
| SRT | yes | yes | Plain text + basic markup. |
| VTT | yes | yes | Cue settings preserved. |
| ASS / SSA | yes | yes | Styles and override tags preserved. Karaoke is display-only on the waveform; retiming stays in Aegisub. |
| SUP / SUB+IDX | no | no | Image-based formats — convert to text via the OCR pipeline first. |
Read-only mode
Section titled “Read-only mode”If the user running Sublarr can’t write to the source file (e.g. read-only volume, restrictive POSIX permissions), the editor still opens but the Save button is disabled. The header shows a “Read-only” badge so you don’t waste time staging edits that can’t land.