Subtitle FPS Converter
Use this tool to retime an SRT or WebVTT subtitle file when the source and target video frame rates differ. Choose the two frame rates and add subtitles. Every cue's start and end timestamp is multiplied by source FPS / target FPS, correcting proportional drift instead of applying a fixed offset.
Why a Ratio Instead of a Fixed Offset
Use a fixed-offset shifter when every cue is early or late by the same amount. This tool handles proportional drift: it multiplies every timestamp by source FPS / target FPS. It does not add a fixed offset or read video frames.
How to Retime a Subtitle File
- Choose the source FPS: the frame rate the subtitle timestamps currently assume. The default is
23.976; presets include 24, 25, 29.97, 30, 48, 50, 59.94, and 60. Select Custom... and enter a positive value when needed. - Choose the target FPS: the frame rate of the video you want the subtitles to match. The default is
25; use a preset or Custom... with a positive value. - Add your subtitles: paste text into the box, use Drop a subtitle file here, or click browse files. The picker accepts
.srt,.vtt, and.txtfiles. - Once the subtitle input and both FPS values are valid, every cue is rescaled automatically by the source/target ratio.
- Review the preview: each cue's original and retimed timestamps are shown side by side, with overlap flags when applicable.
- Click Download: export the retimed file as
retimed.srtorretimed.vtt. - Click Clear: clear the subtitle input, hide the result workspace, clear errors, and reset the displayed format label to SRT. The FPS selections are not reset.
Format Detection and Input Requirements
Files ending in .srt are treated as SRT, and files ending in .vtt are treated as WebVTT. Other uploaded files are detected as WebVTT only when their content begins with a valid WEBVTT header; otherwise they are treated as SRT. Pasted text beginning with WEBVTT is treated as WebVTT, and other pasted text defaults to SRT.
SRT timestamps must use HH:MM:SS,mmm. WebVTT requires a WEBVTT header and HH:MM:SS.mmm-style timestamps. The parser reports errors for malformed timing lines, empty input, missing cue text, or an end time before the start.
What the Export Preserves
- Cue order and text - cues stay in order and their text lines are copied unchanged.
- Cue count - no cues are added, removed, split, or merged.
- SRT indexes - output indexes are regenerated sequentially; original SRT identifiers are not preserved.
- WebVTT identifiers and settings - cue identifiers and settings are retained, while timing lines are rebuilt and relevant whitespace is normalized.
- WebVTT blocks -
NOTE,STYLE, andREGIONblocks are skipped and not exported. - Timestamps - exported values are rounded to the nearest millisecond.
Preview Flags and Limitations
The preview shows original and retimed timestamps for each cue. An individual row can be flagged when its retimed cue overlaps the previous or next cue. The issue summary counts cues that overlap the next cue. The current parser accepts only non-negative timestamp syntax and positive FPS values, so negative retimed timestamps cannot be produced through this interface.
Timestamp components are matched by syntax, but minute and second ranges are not explicitly validated. Source cue ordering is not rejected; overlaps are surfaced in the preview instead.
There is no documented maximum input size or unlimited-use guarantee. When an uploaded file is over 300,000 characters, only the textarea preview is truncated; the full uploaded content is still processed. Errors stop the conversion and no result is produced.
Privacy & Security
File reading, parsing, retiming, preview generation, and download occur client-side in your browser. The implementation does not upload the subtitle content as part of this workflow.
Frequently Asked Questions
How is this different from a subtitle timestamp shifter?
A timestamp shifter adds one fixed offset (or a fixed drift) to every cue - useful when subtitles are simply out of sync by a constant amount. This tool instead multiplies every timestamp by a ratio (source FPS / target FPS), which is the correct fix when a subtitle file was authored against one frame rate and the video now plays at a different one, so the mismatch grows or shrinks proportionally across the timeline rather than staying constant.
What ratio does this tool apply?
Every timestamp is multiplied by source FPS / target FPS. For example, converting from 23.976 fps to 25 fps multiplies every timestamp by 23.976/25, or about 0.959. Exported timestamps are rounded to the nearest millisecond.
Does this tool merge subtitles or edit video frames?
No. It only rescales each cue's existing start and end time. Cue text, cue order, and cue count remain unchanged. SRT indexes are regenerated sequentially; WebVTT identifiers and cue settings are preserved. No video or frame data is read or modified.
What does the overlap flag mean?
It means a cue ends after the next cue starts in the retimed timings. Review the source file or FPS choices before downloading. The parser accepts only non-negative timestamp syntax, so this interface cannot produce negative retimed timestamps.
Which SRT and WebVTT elements are preserved?
Cue text, cue order, and cue count are preserved. SRT indexes are regenerated sequentially. WebVTT cue identifiers and cue settings are preserved, but NOTE, STYLE, and REGION blocks are skipped and not exported.
What input formats and timestamp syntax are accepted?
SRT uses HH:MM:SS,mmm timestamps. WebVTT must start with a WEBVTT header and uses HH:MM:SS.mmm-style timestamps, with hours optional. Empty input, malformed cues, missing text, and an end time before the start produce errors.
Does this tool upload my subtitle file anywhere?
No. Parsing, retiming, and the preview all happen locally in your browser. Your subtitle file never leaves your device.