Improving subtitle timing for remuxed files and non-standard frame rates

CanzarTV IPTV USA, IPTV UK, Best IPTV Europe, IPTV Subscription

Improving subtitle timing for remuxed files and non-standard frame rates

Last updated August 25, 2026 · Editorially reviewed by CanzarTV

Improving subtitle timing for remuxed files and non-standard frame rates

Subtitle drift after remuxing or when a video uses an unusual frame rate is a common annoyance for people who maintain local libraries or create custom rips. This guide explains why timing problems happen, how to diagnose the issue, and practical, mostly lossless ways to fix subtitles (SRT, ASS/SSA, VobSub, and frame‑based formats) without guessing. Examples use widely available, cross‑platform tools; verify commands against your installed versions.

Quick overview

  • Problem sources: container remuxing, frame rate conversion, variable frame rate (VFR), or subtitles tied to frames rather than timestamps.
  • Two main strategies: adjust the subtitle timestamps, or make the video and subtitles agree (remux/change frame rate). Prefer adjusting subtitles when possible to avoid re‑encoding video.
  • Useful tools: MediaInfo (inspect files), MKVToolNix (remux/mux), Subtitle Edit and Aegisub (visual editing and timing/stretching), FFmpeg (muxing and quick offsets). Links to tools and instructions in References.

Why remuxing and frame rates affect subtitles

Subtitles store timing in different ways:

  • Text‑based formats (SRT, WebVTT, ASS/SSA) use timestamps in absolute time (hours:minutes:seconds.milliseconds). These generally follow playback time, so they should work across containers unless the playback timebase changes.
  • Frame‑based formats (MicroDVD .sub, some DVD/SUB implementations) map subtitle events to frame numbers. If the frame rate expected by the subtitle differs from the actual playback rate, timing drifts.
  • Image‑based subtitles (VobSub/BDSup) are displayed by timestamp or frame mapping depending on how they were created; these can behave like frame‑based subs.

Remuxing can alter the apparent timebase or the declared frame rate in the container header. Also, custom rips sometimes use 23.976 (24000/1001) vs 24.000; 29.97 vs 30.000; or entirely variable frame rates. When a subtitle references frames instead of absolute time, any difference between expected and actual fps produces linear drift.

Diagnose the problem (step‑by‑step)

  1. Inspect the video. Use MediaInfo or a similar tool to read the file’s reported frame rate and whether it’s CFR (constant) or VFR (variable). Note both the “Refined”/rational frame rate if shown (e.g., 24000/1001).

  2. Check the subtitle format. Open the subtitle file in a plain text editor. If timestamps look like 00:02:13,232 it’s time‑based (SRT). If you see entries like {123}{456} it’s likely frame‑based (MicroDVD). ASS/SSA is time‑based but supports frame anchoring for karaoke; VobSub/BDSup are usually image based.

  3. Play and sample times. In a player that shows subtitle timestamps (VLC, MPV, or Subtitle Edit’s preview), note how much the subs lag or lead at the start and at the end of the file. If the offset grows linearly from start to end, that indicates a stretch/scale problem rather than a fixed offset.

  4. Calculate scale vs offset. If the subtitle is off by the same amount throughout, you need a fixed offset. If it drifts (e.g., 0.5s early at 10 minutes, 2.5s early at 60 minutes), you need a stretch (scaling factor) or frame‑rate correction.

Practical fixes (preferred order)

Below are practical solutions ordered by least intrusive (no video re‑encode) to most intrusive.

1) Apply a fixed offset (fast; good for constant shift)

When subs are consistently early or late by the same amount, apply a time shift.

  • Subtitle Edit: Open the file -> Synchronization -> Adjust all times (set positive or negative milliseconds) -> Save.
  • Aegisub: Timing -> Shift times -> enter milliseconds or timecode -> Apply.
  • FFmpeg when muxing: use -itsoffset to add an offset when merging an external SRT into a container. Example:

ffmpeg -i input.mkv -itsoffset 00:00:01 -i subs.srt -map 0 -map 1 -c copy -c:s srt output.mkv

Notes: -itsoffset delays the stream being added by the amount specified. Behavior can vary with container and player; test playback after muxing.

2) Stretch or scale subtitle timestamps (for linear drift)

When the error grows over time, you need to scale timestamps. That usually happens when subs expect a different frame rate or when a video was sped up/ slowed.

  • Determine scale factor: measure the subtitle drift at two points (preferably start and end). Example: if a subtitle that should end at 01:30:00 actually ends at 01:29:54, the video is shorter by 6 seconds on 5400s total → scale = actual_duration / expected_duration.
  • Subtitle Edit: Synchronization -> Change frame rate / Adjust all times -> use the “Stretch times” or “Point sync” feature to map two subtitle timecodes to two new timecodes and let the tool calculate the scale.
  • Aegisub: Open the subtitle and use Timing -> Shift times with the “by percent” or use the Automation/Apply transform to scale times.

Manual math (for text format):
new_time = (old_time * scale) + offset

Where scale = target_duration / original_duration.

3) Convert frame‑based subtitles to timecodes

If the subtitle is frame‑based (e.g., {start}{end}) and the known fps changed during remuxing, convert the script to timecodes using the correct fps.

  • Subtitle Edit: File -> Import -> MicroDVD/.sub, then specify the fps expected by the subtitle (e.g., 25.000) and then export/save as SRT or ASS.
  • If you know the original fps and the playback fps differs, import using original fps, then export after adjusting to the new fps.

4) Re‑mux with a corrected declared frame rate (non‑destructive if only container tags changed)

Sometimes the video is fine but the container declares an incorrect FPS or timebase. If you can confirm the raw frames are in the intended rate, simply remuxing with a corrected header can work.

  • MKVToolNix GUI: Load the file -> Tools or track properties -> adjust frame rate metadata for the video track -> start multiplexing. This does not re‑encode video; it changes the container metadata.

Caution: editing track headers can fix player behavior in many cases, but some players ignore container tagging; test after remuxing.

5) Convert VFR to CFR (when VFR is the root cause)

Variable frame rate complicates frame‑based subtitles. Converting to constant frame rate will simplify timing but usually requires re‑encoding or frame interpolation.

  • FFmpeg: converting to CFR typically implies re‑encoding, e.g., ffmpeg -i input.mkv -r 24000/1001 -c:v libx264 -preset medium -crf 18 -c:a copy output_cfr.mkv. Re‑encoding has quality and time costs—consider a high‑quality preset.

Prefer adjusting subtitles if you want to avoid long re‑encodes.

Comparison: tools at a glance

TaskSubtitle EditAegisubMKVToolNixFFmpeg
Inspect and edit timecodes (SRT/ASS)Excellent (visual sync, stretch)Good (visual timing, karaoke)N/ALimited (scripting/filters)
Convert MicroDVD/frame‑based to SRTYes (import)LimitedN/ANot directly
Remux and change container/frame metadataNoNoYes (safe, lossless remux)Yes (muxing, stream offset)
Batch automated timing adjustmentsYes (scripting)LimitedN/AYes (scripting, filters)

This is a simplified comparison—features and UI vary by version and OS.

Example workflows

Workflow A — SRT drifts linearly (no video re‑encode):
1. Open subs in Subtitle Edit.
2. Identify a subtitle near start and near end and note expected vs actual times.
3. Use “Point sync” to map the two points and apply stretching.
4. Save as SRT and test in your player.

Workflow B — Frame‑based subs after remuxing:
1. Use MediaInfo to confirm video fps before and after remuxing.
2. Import the .sub/.sub/.idx into Subtitle Edit specifying the original fps used when subs were authored.
3. Export as time‑based SRT/ASS.
4. If needed, apply a small offset or stretch as in Workflow A.

Workflow C — Quick offset during mux (when you have video and external SRT):
ffmpeg -i video.mkv -itsoffset 0.5 -i subs.srt -map 0 -map 1 -c:v copy -c:a copy -c:s srt out.mkv

Test the output in a few players; behavior can differ depending on container and player handling of subtitle timecodes.

Tips and precautions

  • Work on copies. Always keep the original video and subtitle files until you’re sure changes solved the issue.
  • Prefer time‑based subtitles when possible. They’re more robust across containers and player differences.
  • Test in multiple players (e.g., VLC, MPV, and your target TV/client) because players handle subtitle tracks differently.
  • For frame‑based subtitles, get the correct original fps from whoever made the subtitles or from a trusted source (if you can’t, experiment with common values: 23.976, 24, 25, 29.97, 30).
  • When using FFmpeg commands, confirm behavior with your installed FFmpeg version and test small samples first.

FAQ

Q: Why do subtitles slowly drift instead of staying offset by the same amount?
A: That usually indicates a scale mismatch—subtitles were authored for a different duration or FPS. For example, subtitles tied to frame numbers will drift if the playback frame rate differs from the original.

Q: Can I fix everything without re‑encoding video?
A: Often yes. Converting frame‑based subs to timecodes or applying a timing scale to SRT/ASS works without touching the video. Only convert video to CFR if VFR is causing unfixable sync issues for frame‑based subtitles.

Q: Does changing the container (MKV, MP4) affect subtitle timing?
A: Containers carry metadata that can influence playback timebase. Simple remuxes usually preserve timing, but a container header with incorrect fps can cause player differences. Remuxing with corrected metadata is usually non‑destructive.

Q: Are players on TVs more picky about subtitle timing?
A: Some smart TVs or streaming devices are less forgiving and may handle subtitle tracks differently. Always test on the target device, and be prepared to export a differently formatted subtitle (e.g., bitmap vs text) if compatibility requires it.

Disclosure

Settings and compatibility can differ by TV, device, operating system, region, and firmware version. Always verify behavior on your actual playback device and consult current manufacturer or software documentation.

Conclusion

Subtitle timing issues after remuxing or when dealing with non‑standard frame rates are usually solvable without heavy lifting. The practical approach is: diagnose whether the issue is a simple offset or a scaling (frame rate) problem; prefer editing subtitle timestamps (text formats) or converting frame‑based subs to timecodes; use remuxing for metadata fixes; and only re‑encode video when VFR truly forces it. With tools like Subtitle Edit, Aegisub, MKVToolNix, and FFmpeg you can repair most problems while keeping video quality intact.

If you maintain a local collection, build a small test workflow (inspect with MediaInfo, edit in Subtitle Edit, remux with MKVToolNix) and keep copies so you can refine an approach that works for your devices.

Further reading and tool downloads are linked in References below. For more on playback configuration and device compatibility, see Devices & Setup and Apps & Tools. Technical context and community tips appear regularly on our Blog and in Streaming Guides.

Canzar

✓ CanzarTV Editorial · Streaming & Entertainment

CanzarTV Editorial team — streaming, devices, and entertainment specialists covering cord-cutting, live TV, and the best ways to watch what you love.

Ready to stream? Pick your plan

Live TV, movies, sports and 10,000+ channels on any device — Firestick, Android TV, Smart TV, phone.

View Subscription Plans Compare Pricing

Moderation: Comments are reviewed before publishing. Be respectful and on-topic.

Guidelines: Share streaming tips, device help, or content recommendations. No spam, no promotions, no off-topic links.

Leave a comment