Skip to main content

Free Subtitle Editor

Edit SRT/VTT subtitles in a table, preview them live over your video, and export.

Drop a subtitle file, or a video or audio file to auto-generate subtitles

SRT, VTT, SBV, LRC, ASS, SSA, TXT, MP4, MOV, MKV, WEBM, MP3, M4A, WAV, OGG, FLAC, AAC Β· processed on your device

or press Ctrl+V to paste from your clipboard

Browse files

Your files never leave your device. All processing happens locally in your browser.

πŸ”’ Subtitles and video stay on your device β€” nothing is uploaded.

Common uses

  • Edit an SRT FileFix subtitle text and timing fast.
  • Fix Subtitle TimingNudge cues that drift out of sync.
  • Create from ScratchWrite subtitles for your own video.
  • SRT ↔ VTTEdit and switch subtitle formats.
  • Translate SubtitlesReplace text while keeping timing.
  • Caption Clean-UpFix typos in auto-generated captions.

How It Works

Open an SRT or VTT file β€” or start from scratch β€” and edit every cue's start time, end time and text in a clean table. Optionally load your video to see the subtitles rendered live as it plays, click any cue to jump there, shift all timings at once, and export as SRT or VTT.

  1. 1
    Open subtitles
    Drop an .srt/.vtt file, or start with an empty cue.
  2. 2
    Edit the cues
    Times accept HH:MM:SS.mmm; text supports multiple lines.
  3. 3
    Preview on video
    Optional: load the video and watch cues appear live.
  4. 4
    Export
    Cues are sorted and saved as SRT or VTT.

Subtitles and video stay on your device β€” nothing is uploaded.

Guide

Worked example

Click "Or start from scratch". One cue appears, 00:00:00.000 to 00:00:03.000, with the text "Your first subtitle", and the counter reads "1 cues". Replace the text with: We drove all night to reach the coast, and the sunrise over the water was worth every mile of it. That is 97 characters in 3 seconds, so the warning triangle says "Fast reading speed (32 characters per second)" and "Line longer than 42 characters". Open "Line length and timing", keep the "TV / YouTube Β· 42Γ—2" preset and press "Re-split all subtitles". It reports "Done: 1 subtitles became 2." The first cue now ends at 00:00:01.192 with "We drove all night to reach the coast," and the second runs to 00:00:03.000 on two lines. The long-line warning is gone, but both cues keep the speed warning. Pick "SRT (SubRip)" under "Export format" and press "Export" to save subtitles.srt.

Which settings to use, and the limits

  • Start from a file, from scratch or from a draft. Drop an .srt, .vtt, .sbv, .lrc, .ass or .ssa file, or a plain-text file. The format is worked out from the content: a WEBVTT header, ASS "[Script Info]" or Dialogue lines, "-->" timing lines, or LRC time tags. "Or start from scratch" gives one 3-second cue. Your work is autosaved in this browser 0.6 seconds after each change, and "Restore previous draft" with the cue count is offered next time. A draft of 1.5 million characters or more is not saved. "Start over" deletes the draft. Older code pages, such as Windows-1251, are decoded with a guess based on the page language.
  • Edit times by typing them. Each Start and End box shows HH:MM:SS.mmm. Type a new time and click away to apply it. "1:05.5" means 1 minute 5.5 seconds, and "0:01:05,500" works too, with 1 to 3 decimals. Anything else, such as "65", brings up "Invalid time" and resets the box. "+" adds a cue after that row, 3 seconds long and starting where the row ends, and "Γ—" removes it. Rows are not re-sorted while you edit, but export sorts by start time. "Shift all" moves every cue by -1s, -0.5s, +0.5s or +1s, and a negative shift stops when the first cue reaches zero.
  • Read the warning triangles and amber rows. A triangle beside a cue shows "Fast reading speed" with the figure when the text runs above 21 characters a second (line breaks are not counted), "Line longer than 42 characters" when a line is longer than the Characters per line setting, or both. Amber rows, with the note "Some cues overlap or end before they start", mean a cue ends at or before its own start, or starts more than a millisecond before the row above it ends. Warnings never block export.
  • Fit lines to a character limit. Open "Line length and timing". Presets: "TV / YouTube Β· 42Γ—2", "Vertical video Β· 28Γ—2" and "One short line Β· 20Γ—1". The fields take Characters per line 12 to 80, Lines per subtitle 1 to 3, Minimum seconds 0.3 to 3 and Maximum seconds 2 to 15 (defaults 42, 2, 1 and 7). "Re-split all subtitles" re-flows every cue, joins manual line breaks, splits long cues at sentence ends, commas or spaces and shares the time by length, so outer start and end times stay put. A cue shorter than the minimum borrows time from the silence beside it. Speech timing never changes, so fast cues stay flagged.
  • Pick the export format with its limits in mind. "Export format" offers "SRT (SubRip)", "WebVTT", "SBV (YouTube)", "LRC (lyrics)", "ASS / SSA" and "Plain text (TXT)". The file keeps your original name with the extension .srt, .vtt, .sbv, .lrc, .ass or .txt, and a translated file adds the language code, as in talk.es.srt. LRC keeps only start times and joins each cue onto one line. Plain text drops the times altogether. The ASS export carries the burn-in text size, colours, position and outline. Cues are written in start-time order.
  • Add a video to preview, generate or burn in. "Add a video for live preview (optional)" plays it with the current cue drawn over the picture, and the row numbers become β–Ά buttons that jump to that cue. With a video loaded, "Auto-generate subtitles from this file" transcribes the speech on your device: choose "Spoken language" and "Speech model" ("Faster" is the default on phones). Only the first 5 hours on a computer, or 90 minutes on a phone, are transcribed. "Burn subtitles into the video" re-encodes it and saves name_subtitled.mp4. Dropping a video or audio file on the start screen opens the auto-generate screen.

Common problems and how to fix them

It says "Could not read this subtitle file. Use a valid SRT, VTT, SBV, LRC or ASS/SSA file."
The file loaded but no cues came out, or it could not be read. The reader looks for "-->" timing lines (SRT and WebVTT), "start,end" timing lines (SBV), [mm:ss.xx] tags (LRC) or Dialogue: lines (ASS/SSA), and drops any cue with no text. A plain script, a frame-based .sub file or an XML caption file has none of these. Open the file in a text editor to check that the timing lines are there, or convert it to SRT first.
It says "Invalid time" and the box went back to its old value.
Times are checked when you leave the box. They need minutes and seconds with a colon between them, optional hours, and 1 to 3 decimals after a point or comma, as in 1:05.5, 0:01:05,500 or 00:01:05.500. A bare number such as 65 or 1.5 is rejected. The box is restored to the previous time and outlined in red for about two seconds.
It says "Transcription failed. Try the faster speech model, or a shorter file."
This is the general message when the speech engine fails after the audio was read and the model loaded. Pick the "Faster" option under "Speech model", which is the smaller model, or use a shorter file. If part of the run had finished, you see "Transcription stopped at 12:30 because of an error" instead, with your own time, and the finished part is already in the table. "Stop" also keeps the work done so far.
It says "That file could not be saved. Check that downloads are allowed here, or try a different browser."
"Export" shows this when the browser gives no way to save the file, as in an in-app browser with no share sheet or a blocked new tab. The saved burn-in video reports the same thing. Open the page in your normal browser, allow downloads for the site and press "Export" again. Your cues are still in the table, and the draft is saved in this browser.
It says "The burn-in fonts cover Latin, Cyrillic, Greek, Arabic, Persian, Urdu and Hebrew. These characters will be missing from the video: ζ—₯本θͺž."
The video engine has no system fonts, so the tool supplies three font files of its own: Noto Sans, Noto Sans Arabic and Noto Sans Hebrew. Characters outside them, such as Chinese, Japanese, Korean, Thai or Hindi, are not drawn into the video. The note appears before the burn starts. Export an SRT or WebVTT file and let the player show the text instead.

How it compares

This editor works on a table: you change text and times by typing them, with no waveform, no timeline to drag cues along and no find and replace. ASS/SSA files are read for their text and italic, bold and underline tags only, so styles, positions and effects in the original are lost on import. In return everything runs in your browser. The page says "Subtitles and video stay on your device", and the speech model and video engine download once to the device. Auto-generated text needs proofreading, and so does machine translation, which is offered only in browsers that report a built-in translator.

Related Tools

Frequently Asked Questions