Skip to content

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.

The editor is reachable from anywhere a sidecar pill is shown:

SurfaceHow
Library → Series/MovieClick the language pill on an episode/movie row.
Activity → HistoryClick Edit on a recently downloaded item.
Activity → QueueAfter a translation finishes, click Edit in the toast.
Subtitle Editor → headerCycle to the previous/next subtitle of the same item with < / >.

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.

ColumnEffect
#Cue index.
StartHH:MM:SS.mmm. Click to edit inline.
EndSame.
DurComputed end − start, in seconds. Red when below the 80 ms minimum.
TextRaw 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.

Coarse-grained adjustments that apply to every selected cue. Three fields, each with their own preview:

FieldEffect
Offset (ms)Shifts every selected cue forward (positive) or backward (negative).
Speed factorMultiplies start/end by the factor (e.g. 25/23.976 for PAL→NTSC).
AnchorWhen 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.

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.

ControlEffect
Source languageAuto-detected from the file. Override if detection is wrong.
Target languageDefaults to the series/global setting; pick another for a one-off.
BackendOverride the active backend just for this job (e.g. swap to Claude for a tricky episode).
GlossaryToggle whether the global + series glossary is injected into the prompt.
RunQueues the job. The modal stays open and renders progress per cue.

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.

ActionEffect
SaveWrites the staged edit back to the original sidecar. The previous version is kept as .bak for the configured retention.
Save AsWrites to a new file (different language code or suffix). The original is untouched.
DiscardDrops in-memory changes. The header pill flips back to “Clean”.
Close (Esc)If staged changes exist, prompts for confirmation.

The editor reads and writes:

FormatReadWriteNotes
SRTyesyesPlain text + basic markup.
VTTyesyesCue settings preserved.
ASS / SSAyesyesStyles and override tags preserved. Karaoke is display-only on the waveform; retiming stays in Aegisub.
SUP / SUB+IDXnonoImage-based formats — convert to text via the OCR pipeline first.

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.