Timing
Shift, scale, re-frame and re-align subtitle timing: frame-rate conversion, overlap and gap repair, trimming to a range and splitting a file into parts.
29 tools
Convert Subtitle Frame Rate
Scale every subtitle timestamp by source frame rate over target frame rate — for any pair, including 23.976, 24, 25, 29.97, 50 and 60.
Fill Gaps Between Subtitles
Close the blank screen between one cue and the next by holding the earlier cue longer — both cues keep their own text and timing.
Fix 23.976 fps Subtitles to 25 fps
Multiply every timestamp by 0.95904 to move NTSC film subtitles onto a PAL version — the 4.096 percent correction, not the round 4 percent.
Fix 23.976 fps Subtitles to 29.97 fps
Multiply every timestamp by 0.8 when frame numbers were divided by the film rate instead of 29.97 — and why 3:2 pulldown is not a reason to convert.
Fix 24 fps Subtitles to 25 fps
Multiply every timestamp by exactly 0.96 for the 4 percent PAL speed-up — the clean film-master pair, with the reading speed cost named.
Fix 25 fps Subtitles to 23.976 fps
Multiply every timestamp by 1.0427094 to spread PAL subtitles back onto an NTSC film version — and why 25 to 29.97 is the wrong pair.
Fix 29.97 fps Subtitles to 23.976 fps
Multiply every timestamp by 1.25 when a film timeline was counted at the NTSC container rate — the mirror of the 0.8 fix, for subtitles that run early.
Fix 50 fps Subtitles to 25 fps
Halve every timestamp to put 50 fps or field-counted subtitle timing back onto a 25 fps version — the one error in the group visible in the file's length.
Merge Overlapping Subtitles
Turn cues that share screen time into one cue holding both texts, running from the earliest start to the latest end — nothing uploaded.
Merge Subtitle Cues
Join neighbouring cues into one when the gap between them is under your limit, with the pause filled and every word kept — in your browser.
Point Sync Subtitles
Name a moment in the file and where it belongs: one pair of points fixes an offset, two also stretch a file that drifts out towards the end.
Remove Overlapping Subtitles
Make every subtitle cue start where the previous one ended — trim or drop, with moved and removed counts reported separately.
Scale Subtitle Timing
Multiply every subtitle timestamp by a percentage to stretch or compress the timeline — the tool for PAL speed-up and drift that grows towards the end.
Set a Minimum Gap Between Subtitles
Leave at least a set number of milliseconds of blank screen between cues, so two lines never read as one — the earlier cue gives up the time.
Set a Minimum Subtitle Duration
Hold any cue shorter than your limit on screen for longer — the extra time comes out of the gap after it, and the last cue simply extends.
Shift Subtitle End Times
Move only the end time of every subtitle cue, leaving each start where it was — make captions linger or take them off screen sooner.
Shift Subtitle Start Times
Move only the start time of every subtitle cue, leaving each end where it was — cues get shorter or longer by the offset you give.
Shift Subtitles
Move every subtitle cue earlier or later by an exact millisecond offset — timings only, text and cue numbers untouched.
Shift Subtitles by Frames
Shift every subtitle cue by a number of frames converted through the frame rate — for 23.976, 24, 25, 29.97 and 30 fps sources.
Shift Subtitles by Timecode
Shift every subtitle cue by a timecode such as 00:00:02,500, including negative values — both edges move, so no cue changes length.
Shift Subtitles in a Time Range
Shift only the cues that start inside a time range and leave the rest of the file alone — fix one scene without retiming the whole file.
Snap Subtitles to Frames
Move every subtitle boundary onto the nearest frame at 25, 23.976, 29.97 or any rate — frame-accurate output with the timeline's length left alone.
Split Long Subtitles
Cut cues holding more than your character limit into readable pieces — text divided at word boundaries, timing shared by length.
Split Subtitles at Sentences
Put one sentence per cue, breaking on full stops, question marks and line breaks — abbreviations and decimals left intact.
Split Subtitles by Duration
Divide any cue on screen longer than your limit into evenly timed pieces — the pieces and their times worked out from the duration.
Split Subtitles Into Multiple Files
Cut one subtitle file into parts by the clock — every cue keeps its own timings and number, and the parts come back as one zip.
Stretch Subtitles to Match Video
Give the length of the video and the subtitle file is stretched or compressed to fit it — the ratio is measured from the file itself.
Sync Subtitles to a Timecode
Move a whole file so its first subtitle starts at the time you give — 00:00:00,000 removes a lead-in, and no cue can be pushed off the front.
Trim Subtitles to a Time Range
Keep only the stretch inside a time window — cues entirely outside are dropped, cues across an edge are cut there, and nothing is uploaded.
Other categories
Format conversion
Move subtitles between SRT, WebVTT, ASS, SSA, SBV, SMI, LRC, MicroDVD, TTML, JSON, plain text and CSV — and see what each conversion drops before it runs.
Text and styling
Change case, strip tags and SDH descriptions, recolour or reposition lines, merge or split bilingual tracks, find and replace, rewrap lines, fix encoding.
Quality checks
Detect structural subtitle defects: overlaps, gaps, empty cues, non-monotonic timing and unusual cue durations — one page per problem or all at once.
Accessibility compliance
Check subtitles against reading speed, line length and display-duration thresholds from EN 301 549, WCAG 1.2.2, FCC, Ofcom, Netflix and BBC rules.
Timecode
Re-label subtitle timecodes between 30 fps non-drop and 29.97 drop-frame, two conventions that drift 3.6 seconds apart every hour, in both directions.
Export and integration
Turn subtitles into an HTML track element, a YouTube chapter list, a plain text transcript or a printable PDF — outputs no subtitle format can carry.
Media input
Extract subtitle tracks from video, transcribe speech with Whisper, OCR PGS and VobSub bitmaps, voice subtitles and resync audio — all inside your browser.