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.
Load a subtitle file and every cue becomes editable here.
The converted file appears here.How it works
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.
See what is wrong
Reading speed, line length, duration, overlaps and gaps, checked against the spec you are delivering to.
Fix the timing
Shift everything, convert the frame rate, or resync from two points you know. Undo is always one key away.
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.
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.
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
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.
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.