Subtitles

Subtitle Studio

Convert between nine subtitle formats, fix timing and frame-rate drift, check reading speed against a broadcast spec, and edit every cue by hand — without uploading anything.

Nine formats in and outFrame-rate and two-point resyncNetflix and BBC reading-speed checks
Subtitles in

Load a subtitle file and every cue becomes editable here.

Subtitles out
The converted file appears here.
Keep goingThe file travels with you — no download, no re-upload

How it works

1

Drop the file in

Paste it, open it, or drag it onto the box. A file waits for the button — nothing is read until you say so.

2

See what is wrong

Reading speed, line length, duration, overlaps and gaps, checked against the spec you are delivering to.

3

Fix the timing

Shift everything, convert the frame rate, or resync from two points you know. Undo is always one key away.

4

Take the format you need

SRT, WebVTT, ASS, TTML, SBV, LRC, JSON, CSV or a plain transcript.

Nine formats, both ways

SRT, WebVTT, SBV, ASS/SSA, TTML/DFXP, LRC, JSON, CSV and plain text — read and written, with the cue identifiers, layout settings and style names kept instead of dropped.

Frame-rate drift, solved

The classic 25 to 23.976 mismatch rescaled in one click, plus a two-point resync that fixes an offset and a drift together.

Checked against real specs

Netflix, BBC and YouTube reading-speed and line-length limits built in, and every number editable when your house style differs.

Every cue editable

Timestamps and text, inline, with the failing cues coloured and one click from the checklist to the row that needs work.

Repairs that are just arithmetic

Overlaps, short and long cues, tiny gaps and out-of-order files fixed in one pass — and nothing that needs a human decision touched.

Nothing leaves the tab

Parsers, timing maths and exporters all run in your browser. No API, no upload, no account.

subtitle converter

The subtitle tool that also tells you what is wrong with the file

Subtitle Studio reads SRT, WebVTT, SBV, ASS/SSA, TTML/DFXP, LRC, JSON, CSV and plain transcripts, and writes all nine back. It keeps what each format carries — cue identifiers, positioning, style and speaker names — repairs timing, and measures every cue against the reading-speed and line-length limits broadcasters actually enforce.

Nine formats in and out
Frame-rate and two-point resync
Netflix and BBC reading-speed checks
Editable cue list with undo

Nothing dropped in silence

A block the parser cannot read is reported with its line number instead of skipped, so a file with three broken cues never comes back three cues shorter without saying so.

Written for the file somebody else made

The formats that actually turn up

A UTF-8 byte order mark at the head of the file, a WebVTT cue with positioning settings, an ASS line whose text contains commas, a TTML paragraph that gives a duration instead of an end — all of them are the normal case, and all of them are handled.

Entirely in your browser

There is no API behind this page. Parsing, the timing maths, the quality checks and every exporter are JavaScript running in your tab, so an unreleased script never leaves your machine.

Frequently Asked Questions

QIs my data sent to any server?+

No. Parsing, the timing maths, the quality checks and every exporter run inside your browser. A file you open here never leaves the tab.

QWhich formats are supported?+

SRT, WebVTT, SBV, ASS/SSA, TTML/DFXP, LRC, JSON and CSV are read and written. Plain text can be read as a transcript — it has no timings, so they are allocated at a reading speed you can change — and written as one.

QMy subtitles start right and drift later. What is wrong?+

Almost always a frame-rate mismatch: the file was authored for 25 fps and the video plays at 23.976, or the other way round. Pick the two rates on the Timing tab and the whole track is rescaled. If the drift is not uniform, use the two-point resync instead.

QWhat does "cps" mean?+

Characters per second — how fast the viewer has to read. It is the number every broadcast spec is written in. Netflix allows 17 for adult Latin-script titles, the BBC works to about 15. A cue above the limit is flagged so you can shorten the text or give it more time.

QDoes converting lose anything?+

Only what the target cannot represent, and never in silence. WebVTT cue identifiers and positioning survive a WebVTT round trip; ASS style and speaker names survive an ASS one. Going to SRT, tags that SRT cannot render are removed rather than left as literal text, and speaker names can be folded into the line instead.

QCan I edit the cues, not just convert them?+

Yes. Every timestamp and every line is editable in place, you can insert and delete cues, and Ctrl+Z undoes up to sixty steps. The checks colour the rows so the ones needing work are the ones you land on.

QWhat does the repair button change?+

Only what is arithmetic: it re-sorts the file, drops empty and reversed cues, pulls overlaps apart, closes tiny gaps and brings durations inside the minimum and maximum. Reading speed and line length need the text rewritten, so it deliberately leaves those alone.

Keywords

subtitle convertersrt to vttvtt to srtass to srtttml convertersubtitle timingsubtitle frame rateresync subtitlessubtitle reading speedcharacters per second subtitlessubtitle editor onlinesrt editor
Part of the oLoveTools suite
oLoveTools

Convert, retime and quality-check subtitles in nine formats, entirely in your browser.

Nothing dropped in silence

A block the parser cannot read is reported with its line number instead of skipped, so a file with three broken cues never comes back three cues shorter without saying so.

The formats that actually turn up

A UTF-8 byte order mark at the head of the file, a WebVTT cue with positioning settings, an ASS line whose text contains commas, a TTML paragraph that gives a duration instead of an end — all of them are the normal case, and all of them are handled.

Entirely in your browser

There is no API behind this page. Parsing, the timing maths, the quality checks and every exporter are JavaScript running in your tab, so an unreleased script never leaves your machine.

subtitle convertersrt to vttvtt to srtass to srtttml convertersubtitle timingsubtitle frame rateresync subtitlessubtitle reading speedcharacters per second subtitlessubtitle editor onlinesrt editor

Frequently Asked Questions

Is my data sent to any server?

No. Parsing, the timing maths, the quality checks and every exporter run inside your browser. A file you open here never leaves the tab.

Which formats are supported?

SRT, WebVTT, SBV, ASS/SSA, TTML/DFXP, LRC, JSON and CSV are read and written. Plain text can be read as a transcript — it has no timings, so they are allocated at a reading speed you can change — and written as one.

My subtitles start right and drift later. What is wrong?

Almost always a frame-rate mismatch: the file was authored for 25 fps and the video plays at 23.976, or the other way round. Pick the two rates on the Timing tab and the whole track is rescaled. If the drift is not uniform, use the two-point resync instead.

What does "cps" mean?

Characters per second — how fast the viewer has to read. It is the number every broadcast spec is written in. Netflix allows 17 for adult Latin-script titles, the BBC works to about 15. A cue above the limit is flagged so you can shorten the text or give it more time.

Does converting lose anything?

Only what the target cannot represent, and never in silence. WebVTT cue identifiers and positioning survive a WebVTT round trip; ASS style and speaker names survive an ASS one. Going to SRT, tags that SRT cannot render are removed rather than left as literal text, and speaker names can be folded into the line instead.

Can I edit the cues, not just convert them?

Yes. Every timestamp and every line is editable in place, you can insert and delete cues, and Ctrl+Z undoes up to sixty steps. The checks colour the rows so the ones needing work are the ones you land on.

What does the repair button change?

Only what is arithmetic: it re-sorts the file, drops empty and reversed cues, pulls overlaps apart, closes tiny gaps and brings durations inside the minimum and maximum. Reading speed and line length need the text rewritten, so it deliberately leaves those alone.

© 2026 oLoveToolsAbout

SubtitlesBolt | Convert SRT, VTT, ASS and TTML subtitles

Convert subtitles between SRT, WebVTT, SBV, ASS/SSA, TTML, LRC, JSON, CSV and plain text. Shift timings, fix frame-rate drift, resync from two points, check reading speed and line length against Netflix or BBC specs, and edit every cue. Nothing is uploaded.

Frequently Asked Questions

Is my data sent to any server?

No. Parsing, the timing maths, the quality checks and every exporter run inside your browser. A file you open here never leaves the tab.

Which formats are supported?

SRT, WebVTT, SBV, ASS/SSA, TTML/DFXP, LRC, JSON and CSV are read and written. Plain text can be read as a transcript — it has no timings, so they are allocated at a reading speed you can change — and written as one.

My subtitles start right and drift later. What is wrong?

Almost always a frame-rate mismatch: the file was authored for 25 fps and the video plays at 23.976, or the other way round. Pick the two rates on the Timing tab and the whole track is rescaled. If the drift is not uniform, use the two-point resync instead.

What does "cps" mean?

Characters per second — how fast the viewer has to read. It is the number every broadcast spec is written in. Netflix allows 17 for adult Latin-script titles, the BBC works to about 15. A cue above the limit is flagged so you can shorten the text or give it more time.

Does converting lose anything?

Only what the target cannot represent, and never in silence. WebVTT cue identifiers and positioning survive a WebVTT round trip; ASS style and speaker names survive an ASS one. Going to SRT, tags that SRT cannot render are removed rather than left as literal text, and speaker names can be folded into the line instead.

Can I edit the cues, not just convert them?

Yes. Every timestamp and every line is editable in place, you can insert and delete cues, and Ctrl+Z undoes up to sixty steps. The checks colour the rows so the ones needing work are the ones you land on.

What does the repair button change?

Only what is arithmetic: it re-sorts the file, drops empty and reversed cues, pulls overlaps apart, closes tiny gaps and brings durations inside the minimum and maximum. Reading speed and line length need the text rewritten, so it deliberately leaves those alone.

Keywords

subtitle converter, srt to vtt, vtt to srt, ass to srt, ttml converter, subtitle timing, subtitle frame rate, resync subtitles, subtitle reading speed, characters per second subtitles, subtitle editor online, srt editor