---
url: https://findutils.com/guides/subtitle-fps-converter
title: "Fix Subtitle Drift: Convert SRT and VTT Between Frame Rates"
description: "Subtitles that start right and drift further out are a frame-rate problem. Rescale 23.976 to 25 or back, understand the factor, and know why a delay cannot fix it."
category: converters
content_type: guide
guide_type: subtopic
cluster: captions
locale: en
read_time: 8
status: published
author: "olgunozoktas"
published_at: 2026-09-20T12:00:00Z
excerpt: "A second out at ten minutes and two minutes out at the end is not a delay, it is a frame-rate mismatch. Here is how to spot it, which direction to convert, and what the factor means."
tag_ids: ["captions", "subtitles", "srt", "video", "media"]
tags: ["Captions", "Subtitles", "SRT", "Video", "Media"]
primary_keyword: "subtitle frame rate converter"
secondary_keywords: ["subtitle drift fix", "23.976 to 25 subtitles", "subtitle out of sync gradually", "pal ntsc subtitles", "srt fps converter"]
tool_tag: "subtitle-fps-converter"
related_tool: "subtitle-fps-converter"
related_tools: ["subtitle-fps-converter", "subtitle-shifter", "subtitle-merger", "srt-to-vtt", "ass-to-srt"]
og_image: "/images/content/guides/subtitle-fps-cover-20260920.webp"
image_alt: "Two caption timelines whose marks start aligned and drift further apart across the width."
updated_at: "2026-09-20T12:00:00Z"
---

Subtitle drift is captions falling further out of sync the longer a video plays. FindUtils [Subtitle FPS Converter](/media/subtitle-fps-converter/) corrects it by rescaling every timestamp in an SRT or WebVTT file in your browser. The tool does not upload or store your caption file.

This guide explains how to tell drift from a simple delay, which direction to convert, and what the factor under the two dropdowns is telling you.

## Is It Drift or a Delay?

This is the whole diagnosis, and it takes fifteen seconds. Check the **first** subtitle and the **last** one.

- **Out by the same amount at both ends.** A delay. Every cue needs the same correction, which is what the [Subtitle Shifter](/media/subtitle-shifter/) applies.
- **Roughly right at the start, badly out at the end.** Drift. The error grows with elapsed time, so no single delay can line up both ends. This tool is the one you want.

Drift almost always means the video has been converted between frame rates since the subtitles were timed. Film runs at 23.976 frames per second; PAL broadcast and DVD run at 25. Playing film material at 25 makes it finish about four percent sooner, and a subtitle file timed for the original keeps drifting further ahead of the picture.

## Why a Delay Cannot Fix It

A delay adds a constant. Drift is a multiplication.

```
Timed for 23.976, played at 25:

  cue at 10s        ->  9.590s       0.4 seconds out
  cue at 10 min     ->  9 min 35s    25 seconds out
  cue at 1 hour     ->  57 min 33s   2 min 27s out
```

Delay the file by 25 seconds to fix the ten-minute mark and the opening is now 25 seconds late and the ending is still two minutes out. The error is proportional to elapsed time, so the correction has to be proportional too.

## How to Convert

1. Find the frame rate your subtitles were timed for. It is usually the frame rate of the release they shipped with — 23.976 for most film sources, 25 for PAL.
2. Find the frame rate of the video you are actually watching. Most players show it in a media information panel; in VLC it is under **Tools > Codec Information**.
3. Set **Source FPS** to the first and **Target FPS** to the second.
4. Drop your `.srt` or `.vtt` files. Each is rescaled as it is read.
5. Check the preview and the drift figure, then download. One file downloads on its own; several come back as a ZIP.

## What the Factor Means

The number under the dropdowns is source divided by target — the value every timestamp is multiplied by.

| Conversion | Factor | Effect |
|---|---|---|
| 23.976 to 25 | 0.95904 | track becomes about 4% shorter |
| 25 to 23.976 | 1.04270 | track becomes about 4% longer |
| 23.976 to 29.97 | 0.8 | track becomes 20% shorter |
| 29.97 to 23.976 | 1.25 | track becomes 25% longer |

Seeing it before you convert is a quick sanity check. If the factor is very close to 1.0, the two rates you picked are nearly identical and frame rate is probably not your problem.

## Which Direction?

If you guess wrong the drift doubles instead of disappearing, which is at least obvious. The rule:

- Captions run **ahead** of the speech and the gap grows: your source rate is lower than your target. Converting 23.976 to 25 is the common case.
- Captions fall **behind** and the gap grows: the other way round, 25 to 23.976.

The swap button between the two dropdowns re-runs every loaded file with the rates reversed, so testing the other direction costs one click.

## The Drift Figure

Each converted file reports how far its **last** cue moved. That is the largest change in the file and the most useful number on the page:

- A couple of minutes across a feature is normal for 23.976 to 25.
- A few milliseconds means the two rates are almost the same and nothing meaningful happened.
- A change in the wrong direction means the source and target are the wrong way round.

## About 23.976 and 29.97

These are shorthand. The real rates are 24000/1001 and 30000/1001, artefacts of the transition to colour television in the 1950s. The tool uses the rounded decimals, which are accurate to well under a millisecond across a feature-length file — far tighter than the eye can detect and far tighter than the cue timings themselves.

## Doing Both Corrections

Frame rate and a constant offset can both be wrong at once — a file that drifts *and* starts late. Fix the frame rate first, then shift the result. Doing it the other way means the shift is rescaled along with everything else and has to be redone.

## Limits

- Timestamps only. Cue text, line breaks and WebVTT cue settings are copied exactly as read.
- The output keeps the input format, so a `.vtt` stays a `.vtt`.
- Source and target must differ; identical rates are refused because there is nothing to rescale.
- The tool cannot read the frame rate of a video file. Take it from your player, which is quick and reliable, rather than guessing it from the subtitles.

## Privacy

Files are read in your browser with the File API and rescaled in the tab. Nothing is sent to a server, nothing is stored, and the page keeps working offline once loaded. You can confirm it in your browser's network tab while you convert.
