Subtitle sync fixer
Fix subtitles that are out of sync, from one movie to a whole season
Tell it how far off your subtitles are and it moves every line by exactly that amount, stretches the file between two lines you have checked, or converts it from one frame rate to another. It works on SRT, VTT, ASS, SSA, SBV, TTML, SUB and SAMI files and gives each file back in its own format. Jobs with up to 3,000 lines are free in full; a bigger job, such as a season in a ZIP, is $5 paid once. It does not listen to the audio: you give it the amount, which you can read from your player's subtitle delay setting or from two lines you check.
- Shift every line earlier or later, for example by 2.5 or -1.2 seconds
- Shift only the lines after a given time, for a file that slips after an intro or ad break
- Stretch between two checked lines, for drift that grows toward the end
- Frame rate conversion between 23.976, 24, 25, 29.97, 30, 50, 59.94 and 60
- ASS and SSA styles and tags kept; only start and end times change
- A whole season in one ZIP for $5; jobs up to 3,000 lines free
What you get back
Each file comes back under its own name with .synced added, for example episode-01.synced.srt, in the same format you uploaded, or as SRT if you prefer. Several files download as one ZIP. Before you download, the new times are shown on screen, along with the first line's old and new start time.
- Only the times change. Text, order, numbering and formatting stay as they were.
- ASS and SSA files keep their styles, fonts, override tags and comment lines; only the Start and End of each Dialogue line are rewritten.
- A line that would move before the start of the video starts at 0 instead.
- SAMI and SubViewer files come back as SRT; every other format comes back as itself.
- UTF-8 with a byte order mark, and SRT with Windows line endings, for older TVs and players.
Re-timing subtitles with a chatbot, and with this tool
A chatbot understands what "move everything 2 seconds later" means, and on a short file it can often do it. The trouble starts when every time code in a full movie has to be recalculated and retyped without a slip.
| Your situation | A chatbot | This tool |
|---|---|---|
| A short file, one fixed shift | Can often do it correctly | Does it too, and keeps the file in its format |
| A full movie, every line shifted | Has to retype every time code; long replies tend to stop partway or slip on the arithmetic | Moves every line by exactly the amount you give, up to 50,000 lines per job |
| Drift that grows over the film | Needs a proportional formula applied to every line, which is easy to get subtly wrong | Stretches the file between two lines you check, every time computed the same way |
| Subtitles made for 25 fps, video at 23.976 | May shift by a fixed amount instead of scaling | Multiplies every time by the exact ratio between the two frame rates |
| An ASS file with styles and karaoke | May drop style lines or rewrite tags while retyping | Changes Start and End only; everything else is left as it was |
| The same delay on every episode of a season | One chat per file | One ZIP, one setting, every episode re-timed |
How to fix subtitle timing
-
1
Find out how far off it is
In your video player, adjust the subtitle delay until a line lands on the speech, or note when a line is actually spoken. If the gap grows over the film, note the correct time of an early line and a late line.
-
2
Upload and choose the fix
Drop in the file, several files or a ZIP. Choose shift, stretch or frame rate and enter the amount, for example 2.5, -1.2 or 00:00:02,500.
-
3
Check and download
Compare a line or two on screen with your video, edit any line if needed, and download. Jobs up to 3,000 lines are free; bigger jobs unlock for $5.
Why re-timing a long subtitle file trips up general AI assistants
Shifting subtitles sounds trivial: add two and a half seconds to every time. In a chat, though, the assistant has to read each time code, do the sum, carry seconds into minutes, and write the result back in the exact format, twice per line, for every line in the file. On a few dozen lines that is fine. A full movie often has well over a thousand lines, and a single reply tends to stop partway or let a slip through somewhere in the middle, where it is hard to spot.
Drift is harder still. When subtitles start in sync and end several seconds off, every line needs its own correction, proportional to how far into the film it is. That is a formula applied to every time, and a chatbot doing it by hand is likely to approximate.
This tool does the arithmetic in code. Times are read in milliseconds, changed by exactly the rule you choose, and written back in the file's own format. Text and order are never touched.
Which fix to choose
- Shift: every line is early or late by the same amount. Enter seconds, with a minus sign for earlier, or a time such as 00:00:02,500. Add "only lines after" if the file is right until a certain point, such as the end of an intro or an ad break.
- Stretch: in sync at the start, further off later. Give the line number and correct start time of an early line and a late line, as you see them in your player; every line is moved proportionally. One file at a time.
- Frame rate: the subtitles were made for a release at a different speed, typically 25 fps for European TV and DVD releases against 23.976 for most films. Every time is multiplied by the ratio between the two rates.
What people fix
- A downloaded subtitle that appears a couple of seconds early or late
- Subtitles from a European release on a 23.976 copy of the film
- A file that is fine until an intro or ad break, then late by a fixed amount
- A whole season where every episode has the same delay
- Styled ASS subtitles that need new times without losing the styling
- Subtitles that drift slowly because they were timed to a different cut or encode
Limits worth knowing
It does not listen to the audio or watch the video, so it cannot find the offset by itself. You supply the amount, and the result is only as good as that amount. The quickest way is your player's subtitle delay setting: when the words line up, the number it shows is the shift.
Stretch refuses two points that would speed the file up or slow it down by more than double or less than half, because that almost always means a wrong line number was entered. It works on one file at a time, since two points from one film do not fit another episode. If a release has scenes added or cut in the middle, the offset changes at each edit; "only lines after" handles one such jump per run.
Image-based subtitles, such as VobSub .sub/.idx and Blu-ray .sup, and subtitles burned into the video cannot be re-timed here.
By language and situation
Shift subtitles earlier or later
When every subtitle shows up the same amount too early or too late, the fix is a shift: add or subtract that a...
Read more →Fix subtitles that drift further out of sync
If the subtitles match at the beginning of a film but are a few seconds off by the middle and worse by the end...
Read more →Convert subtitles from 25 fps to 23.976
Subtitles made for a 25 fps release, common for European TV and DVDs, start out close and then fall further ou...
Read more →Fix the subtitle delay for a whole season
When the subtitles for a whole series come from one source and your episodes come from another, every episode...
Read more →What it costs
Short jobs, first part
Free
Jobs with up to 3,000 subtitle lines in total are re-timed in full, downloads included; one movie is usually under that. Bigger jobs show the first block on screen. 1 job a day without an account, 3 with a free account.
Whole job
$5
One payment for every file in the job: up to 50 files or a ZIP, and 50,000 lines. No subscription.
Unlimited
$19 / week
Every tool on the site, with subtitle jobs of up to 200,000 lines.
Questions and answers
Can ChatGPT fix subtitle sync?
For a short file and a single fixed shift it often can. On a full movie it has to recalculate and retype every time code, so replies tend to stop partway or contain slips, and proportional drift is easy to get wrong by hand. This tool changes the times in code, exactly by the amount you give.
How do I know how much to shift?
Use your player's subtitle delay setting until a line matches the speech, and enter the amount it shows in seconds. Or compare when a line is spoken in the video with the time in the file; the difference is the shift.
Does a positive number make subtitles later?
Yes. 2.5 makes every line appear 2.5 seconds later, and -2.5 makes it appear 2.5 seconds earlier. You can also write the amount as a time, such as 00:00:02,500.
My subtitles start in sync but get worse. What do I do?
Use stretch: give the correct start time of an early line and a late line, and every line in between is moved proportionally. If the subtitles were made for 25 fps and your video is 23.976, the frame rate option does the same job without you checking any lines.
Can I fix a whole season at once?
Yes, with shift or frame rate. Upload up to 50 files or a ZIP and the same setting is applied to every episode, which come back together in one ZIP. Stretch works on one file at a time.
Will it change the styling of my ASS file?
No. In ASS and SSA files only the Start and End of each Dialogue line change; styles, fonts, override tags and comment lines are left as they were.
Is it free?
Jobs with up to 3,000 subtitle lines in total are free in full, downloads included, with no account. Bigger jobs show the first block free; the whole job, up to 50 files and 50,000 lines, is $5 paid once. Unlimited is $19 a week.
Which files can I upload?
SRT, VTT, ASS, SSA, SBV, TTML, DFXP, MicroDVD and SubViewer .sub and SAMI files, up to 20 MB each, or a ZIP of them. Image-based VobSub and Blu-ray .sup subtitles are not supported.
Are my files private?
Only you can open your job. No AI model is involved, so the subtitle text is not sent to any model provider. Jobs uploaded without an account are deleted after 7 days, and you can delete any job yourself at any time.
Updated October 25, 2026 · APPFACT STUDIO LTD