Polyatic subtitle-tools
All tools

subtitle‑tools

Retime, clean & convert captions locally — subtitles never leave your device.

1 · Load a file

2 · Pick a transform

One click runs four safe passes at broadcast-typical defaults — trim overlaps, open a minimum gap, hold a readable min/max duration, then re-wrap long lines. Every change is listed below, and anything that can’t be fully fixed (a cue too short to reach the minimum, a word longer than the line) is shown honestly as a residual — never forced into an overlap or dropped. The fixed file is downloadable.

e.g. 2.5 pushes every cue 2.5 s later; -1.5 pulls them 1.5 s earlier. Times below zero clamp to 00:00:00.

Result

Load a subtitle file to begin.

Your subtitles never leave the device. Every parse, retime and convert runs in this page; the only third-party request is a cookieless pageview count from stats.dankdev.com, which records the URL and never your file. Timing math comes from the golden-tested core.js loaded beside this page.

What this tool does — and what it refuses to do

What it is for. A caption file that runs a second and a half late, was written for the wrong frame rate, is cluttered with [DOOR SLAMS], or simply will not open in your player. Drop the file in, pick one of the 19 transforms — grouped as one-click cleanup, retime, transform text/format, and extract & analyse — then read the result and copy or download it. It reads SubRip (.srt), WebVTT (.vtt), ASS/SSA, MicroDVD (.sub), YouTube SBV, TTML/DFXP and LRC lyrics, and writes SRT, VTT, SBV, TTML and LRC. Nothing is uploaded: the file is read by the browser on your own machine, and every transform runs inside this page.

A worked example: the track that slides

A fixed offset cures captions that are late by the same amount from beginning to end. It does nothing for a track that starts in sync and slips further behind as the film runs — the signature of a file authored at one frame rate and played back at another. That is what Two-anchor linear resync is for. Find one line you can see in the picture near the start and one near the end, and type where each one is now and where it should be. Leave anchor A at 00:00:04.000 → 00:00:04.000 and move anchor B from 01:00:00.000 to 01:00:03.600, and the tool solves scale = (newB − newA) / (oldB − oldA), here 1.0010011, and offset = newA − scale × oldA, here −4.0044 ms, then applies t' = round(scale × t + offset) to every cue start and end. A cue sitting at 00:30:00.000 comes back at 00:30:01.798 — 1.8 s of the eventual 3.6 s error, because it is halfway through the file. If you already know the two frame rates, Frame-rate resync takes them directly and scales every timestamp by from ÷ to instead.

Honest limits

ASS/SSA and MicroDVD are read-only here: they convert out to SRT, VTT, SBV, TTML or LRC, but nothing writes them back, and ASS positions, colours and fonts cannot survive a plain-text caption, so they are dropped while the words, timing and line breaks are kept. SRT → VTT → SRT is byte-for-byte lossless and inline tags survive both ways, but VTT cue settings do not: a cue written with align:start position:10% comes back without them, because SRT has nowhere to put them. Writing LRC drops every cue's end time, since an LRC line carries only a start stamp — you get an honest warning above the result when LRC is the target. Reading LRC has the mirror problem: each line's end is synthesised as the next line's start, capped at 8 seconds, and the last line gets exactly 8 seconds, so a lyric sheet with a 19-second instrumental break yields an 8-second cue and 11 seconds of blank screen rather than a guess. MicroDVD stores frame numbers rather than clock time, so its frame rate is asked for and never inferred; a wrong value stretches or squeezes every timestamp proportionally.

What it refuses to do

It will not invent or discard your words to make a threshold come out clean. A cue too short to reach the minimum display duration without colliding with the next one is stretched only as far as is legal and then listed as a residual, never forced into an overlap and never dropped. Rebalancing keeps a word longer than the line limit whole on its own line instead of cutting it, and flags that cue. Splitting into two files cuts between cues and never mid-cue: a cue straddling the split point stays whole in part 1. Stripping speaker labels only touches ALL-CAPS words followed by a colon at the very start of a line, so Dr. Smith: is left alone, and a line mixing a sound tag with real dialogue keeps the dialogue. The reading-speed (CPS) and quality-control passes change nothing at all — they are reports, showing each finding per cue as a measured value against the threshold you set, with nothing to download.

Made with AI tools.