Skip to main content

Subtitle Editor — Edit .srt and .vtt Files Online

Open a .srt or .vtt subtitle file and shift timestamps, scale playback speed, find/replace text, strip styling, or convert between formats. Pairs with the AI Subtitle Generator for a complete subtitle workflow.

No sign up requiredFiles stay in your browser100% free

Tap to select a file

Supports SRT, VTT, up to 25MB

Runs entirely in your browser

How it works

  1. 1Drop a .srt or .vtt subtitle file. The first 6 cues preview so you know the file parsed correctly.
  2. 2Pick the output format (same as input, .srt, or .vtt) and any edits — time shift, time scale, trim, find/replace, strip styling.
  3. 3Click Apply changes. The processor parses every cue, applies the edits, and re-emits the file in the chosen format.
  4. 4The result downloads automatically. Round-trip safety: .srt → .vtt is loss-free; .vtt → .srt drops .vtt-only styling extensions.

What to do next

About Subtitle Editor

The Subtitle Editor solves the common subtitle-editing cases in a single browser tool. Most video editors let you import a .srt or .vtt file but make every other operation (retiming, find-and-replace across cues, format conversion) painfully clicky. Drop in any .srt or .vtt file, apply the edits you need, export back as .srt, .vtt or plain text. The entire pipeline runs locally in the browser tab.

The parser handles both formats correctly: SubRip indices and timestamps with comma-separated milliseconds, WebVTT with optional cue identifiers, optional positioning settings, the WEBVTT header, NOTE blocks, and dual hour-or-no-hour timecode formats. Cues that lack a separator line are still parsed because the format-detector falls back gracefully on malformed inputs. The five most common edits — time shift, time scale, find-and-replace (regex or literal), strip styling, trim leading silence — each compose with the others, so you can shift by +2.5 seconds, scale by 24/25 for a frame-rate change, regex-replace a repeated misrecognised word, and convert the result from .srt to .vtt in a single pass.

Time scaling is the operation that makes this tool worth bookmarking. When you have a 24-fps subtitle file that needs to play against a 25-fps video edit, every cue is roughly 4% out of sync — and the misalignment compounds over the timeline so the last cue is a full minute off. Time scaling multiplies every cue's start and end by your factor (24/25 = 0.96 in this case) and the result is in sync end to end. The same operation handles recap edits, fast-cut versions, and the every-PAL-vs-NTSC headache that plagues international content distribution. The tool reports the cue count and the source/output formats so the metrics panel doubles as an audit trail.

The most common pairing in practice is with the AI Subtitle Generator: that tool transcribes a video to a fresh .srt with Whisper-tiny, and then this editor cleans up the misrecognised words, splits any over-long cues, and shifts the timeline if the output drifted. Together they cover the full automated-subtitle workflow — generate, clean, export — without requiring a paid SaaS account or a desktop install. The editor is also useful as a standalone format converter: drop a .vtt downloaded from YouTube, export as .srt for a video editor that does not import VTT.

How it works

  1. 1Drop a .srt or .vtt subtitle file onto the upload area. Files up to 25 MB are accepted (more than enough for hundreds of hours of subtitles).
  2. 2The parser auto-detects the format and loads every cue with its start time, end time, and text.
  3. 3Apply edits: shift seconds, scale factor (e.g. 24/25 for fps conversion), trim before, find/replace with regex support, strip inline styling.
  4. 4Pick the output format — .srt, .vtt, or plain .txt with no timestamps for paste-into-notes use.
  5. 5The tool emits a fresh subtitle file in memory; you download it directly.
  6. 6Pair with AI Subtitle Generator for transcription, then with Add Subtitles to Video to burn the cues into the video frames.

Common use cases

  • Shift a 23.976 fps subtitle file to align with a 24 fps edit by applying a small time scale factor
  • Clean up a Whisper-generated .srt by find-replacing the model’s consistent misrecognition of a brand name
  • Convert a YouTube .vtt download into .srt so it imports cleanly into a professional video editor
  • Trim away two minutes of leading silence from a podcast subtitle file before publishing
  • Strip styling from a fan-translated .srt so it plays cleanly on a TV that does not parse VTT cues
  • Shift an entire subtitle track by -3.4 seconds to match a remastered video where the opening titles run slightly longer

FAQ

Which subtitle formats are supported?

SubRip (.srt) and WebVTT (.vtt) for both input and output. The two share a similar cue model so converting between them is loss-free for plain text. Style and positioning extensions specific to .vtt are stripped if you export to .srt.

How does time-shifting work?

Enter a positive or negative offset in seconds (or hh:mm:ss format) and every cue start and end shifts by that amount. Useful when an .srt is N seconds out of sync with the video edit it ships alongside.

What is time-scaling?

A multiplier applied to every cue’s start and end. Useful when a 24-fps subtitle file needs to play against a 25-fps video (use 24/25 = 0.96), or when a recap edit shortened a clip and the cues need to retime proportionally.

Can I edit the cue text by hand?

Yes — every cue is editable. Spell-correct, fix recognised words from a Whisper run, or tighten phrasing. The original timestamps are preserved unless you touch them explicitly.

Will my subtitle file upload anywhere?

No. The parser runs in your browser, the cue list lives in memory, and the export is a fresh download. Nothing leaves the device.

Why is the time scale factor 24/25 specifically?

A subtitle file produced for a 24-frame-per-second master plays back too fast on a 25-frame-per-second edit because every cue advances proportionally faster. Multiplying by 24/25 (= 0.96) compensates exactly. The reverse case (25→24) uses 25/24 (≈ 1.0417). Same maths handles 23.976→24, 29.97→30, and any other fps-pulldown shift.

What gets lost converting .vtt to .srt?

Plain text and timecodes carry over identically. .vtt-only extensions — colour codes, positioning, voice tags, region definitions — are stripped because .srt does not have an equivalent encoding. The tool does not warn loudly because most downstream consumers strip them anyway, but the metrics panel will show them as removed.

Can I edit individual cues by hand?

Yes. Every cue’s text is editable in the preview pane. The original timestamps stay locked to whatever they were unless you change them explicitly via the time-shift / time-scale options.

Does the find-and-replace support regex?

Yes. Toggle the regex switch and the find pattern is interpreted as a regular expression with global flag enabled by default. Common gotchas like back-references, character classes, and word-boundary anchors all work. If your pattern fails to compile, the tool falls back to a literal-string interpretation so the operation never silently fails.

Will my subtitle file upload anywhere?

No. The parser, the edits, and the emitter all run inside your browser tab. Nothing leaves the device.

How does it pair with the AI Subtitle Generator?

Generate a .srt with the AI Subtitle Generator (it runs Whisper.cpp locally on your video), drop the result into this editor for cleanup, and export the cleaned file. Most Whisper outputs need three tweaks on average — the editor handles all three in one tool without retranscribing.

Does it support .ass or .ssa subtitle formats?

Not yet. Those carry rich styling that loses fidelity in a round-trip through .srt or .vtt; supporting them properly needs a dedicated editor that exposes the styling controls. For now, convert to .srt in your video editor first and bring the simplified version here for retiming or text edits.

Related tools

About Subtitle Editor

The Subtitle Editor solves the common subtitle-editing cases in a single browser tool. Most video editors let you import a .srt or .vtt file but make every other operation (retiming, find-and-replace across cues, format conversion) painfully clicky. Drop in any .srt or .vtt file, apply the edits you need, export back as .srt, .vtt or plain text. The entire pipeline runs locally in the browser tab.

The parser handles both formats correctly: SubRip indices and timestamps with comma-separated milliseconds, WebVTT with optional cue identifiers, optional positioning settings, the WEBVTT header, NOTE blocks, and dual hour-or-no-hour timecode formats. Cues that lack a separator line are still parsed because the format-detector falls back gracefully on malformed inputs. The five most common edits — time shift, time scale, find-and-replace (regex or literal), strip styling, trim leading silence — each compose with the others, so you can shift by +2.5 seconds, scale by 24/25 for a frame-rate change, regex-replace a repeated misrecognised word, and convert the result from .srt to .vtt in a single pass.

Time scaling is the operation that makes this tool worth bookmarking. When you have a 24-fps subtitle file that needs to play against a 25-fps video edit, every cue is roughly 4% out of sync — and the misalignment compounds over the timeline so the last cue is a full minute off. Time scaling multiplies every cue's start and end by your factor (24/25 = 0.96 in this case) and the result is in sync end to end. The same operation handles recap edits, fast-cut versions, and the every-PAL-vs-NTSC headache that plagues international content distribution. The tool reports the cue count and the source/output formats so the metrics panel doubles as an audit trail.

The most common pairing in practice is with the AI Subtitle Generator: that tool transcribes a video to a fresh .srt with Whisper-tiny, and then this editor cleans up the misrecognised words, splits any over-long cues, and shifts the timeline if the output drifted. Together they cover the full automated-subtitle workflow — generate, clean, export — without requiring a paid SaaS account or a desktop install. The editor is also useful as a standalone format converter: drop a .vtt downloaded from YouTube, export as .srt for a video editor that does not import VTT.

How it works

  1. 1Drop a .srt or .vtt subtitle file onto the upload area. Files up to 25 MB are accepted (more than enough for hundreds of hours of subtitles).
  2. 2The parser auto-detects the format and loads every cue with its start time, end time, and text.
  3. 3Apply edits: shift seconds, scale factor (e.g. 24/25 for fps conversion), trim before, find/replace with regex support, strip inline styling.
  4. 4Pick the output format — .srt, .vtt, or plain .txt with no timestamps for paste-into-notes use.
  5. 5The tool emits a fresh subtitle file in memory; you download it directly.
  6. 6Pair with AI Subtitle Generator for transcription, then with Add Subtitles to Video to burn the cues into the video frames.

Common use cases

FAQ

Which subtitle formats are supported?

SubRip (.srt) and WebVTT (.vtt) for both input and output. The two share a similar cue model so converting between them is loss-free for plain text. Style and positioning extensions specific to .vtt are stripped if you export to .srt.

How does time-shifting work?

Enter a positive or negative offset in seconds (or hh:mm:ss format) and every cue start and end shifts by that amount. Useful when an .srt is N seconds out of sync with the video edit it ships alongside.

What is time-scaling?

A multiplier applied to every cue’s start and end. Useful when a 24-fps subtitle file needs to play against a 25-fps video (use 24/25 = 0.96), or when a recap edit shortened a clip and the cues need to retime proportionally.

Can I edit the cue text by hand?

Yes — every cue is editable. Spell-correct, fix recognised words from a Whisper run, or tighten phrasing. The original timestamps are preserved unless you touch them explicitly.

Will my subtitle file upload anywhere?

No. The parser runs in your browser, the cue list lives in memory, and the export is a fresh download. Nothing leaves the device.

Why is the time scale factor 24/25 specifically?

A subtitle file produced for a 24-frame-per-second master plays back too fast on a 25-frame-per-second edit because every cue advances proportionally faster. Multiplying by 24/25 (= 0.96) compensates exactly. The reverse case (25→24) uses 25/24 (≈ 1.0417). Same maths handles 23.976→24, 29.97→30, and any other fps-pulldown shift.

What gets lost converting .vtt to .srt?

Plain text and timecodes carry over identically. .vtt-only extensions — colour codes, positioning, voice tags, region definitions — are stripped because .srt does not have an equivalent encoding. The tool does not warn loudly because most downstream consumers strip them anyway, but the metrics panel will show them as removed.

Can I edit individual cues by hand?

Yes. Every cue’s text is editable in the preview pane. The original timestamps stay locked to whatever they were unless you change them explicitly via the time-shift / time-scale options.

Does the find-and-replace support regex?

Yes. Toggle the regex switch and the find pattern is interpreted as a regular expression with global flag enabled by default. Common gotchas like back-references, character classes, and word-boundary anchors all work. If your pattern fails to compile, the tool falls back to a literal-string interpretation so the operation never silently fails.

Will my subtitle file upload anywhere?

No. The parser, the edits, and the emitter all run inside your browser tab. Nothing leaves the device.

How does it pair with the AI Subtitle Generator?

Generate a .srt with the AI Subtitle Generator (it runs Whisper.cpp locally on your video), drop the result into this editor for cleanup, and export the cleaned file. Most Whisper outputs need three tweaks on average — the editor handles all three in one tool without retranscribing.

Does it support .ass or .ssa subtitle formats?

Not yet. Those carry rich styling that loses fidelity in a round-trip through .srt or .vtt; supporting them properly needs a dedicated editor that exposes the styling controls. For now, convert to .srt in your video editor first and bring the simplified version here for retiming or text edits.

AI Subtitle Generator

Generate accurate .srt subtitles from any video. Whisper.cpp transcribes the audio entirely in your browser and outputs a timestamped subtitle file ready to drop into your editor.

Compress Video

Reduce video file size while preserving quality. 100% browser-based — your video never leaves your device.

Convert Video

Convert videos between MP4, WebM, MOV, MKV, and animated GIF — entirely in your browser. Your file never leaves your device.

Video to GIF

Convert any video clip to an animated GIF entirely in your browser. Pick the start, length, frame rate, and width — your file is processed locally with FFmpeg WebAssembly and never uploaded.

Screen Recorder

Record your screen, a window, or a browser tab directly in your browser. Optionally include system audio and your microphone. Capture, preview, and download the video without installing any app — and without uploading anything.

Webcam Recorder

Record your webcam directly in your browser with optional microphone audio. Pick the resolution (480p, 720p, or 1080p), frame rate, and mirror mode, then capture and download the result without installing any app.

Screen + Webcam Recorder

Record your screen with your webcam composited into a picture-in-picture corner — perfect for tutorials, course videos, demos, and reaction recordings. Pick the camera position, size, and audio sources, then capture and download in your browser.

Video Slideshow Maker

Turn a stack of photos into an MP4 slideshow with per-slide durations, crossfades, and an optional soundtrack. Pick the resolution (up to 1080p), frame rate, and transitions, then download a single MP4 — all processed in your browser with FFmpeg WebAssembly.

View all Video Tools