> Source: https://meetrix.io/features/subtitle-sync/
> Markdown copy of that page. Cite the URL above, not this file.

# Subtitle Sync Tool

Fix subtitle timing against your actual video - free, private, no upload.

This tool fixes subtitle timing against your actual video, entirely in your browser - shift a constant offset, scale away frame-rate drift, or sync to a point while the video plays. Nothing is uploaded, and both files stay on your device.

Open subtitle file  No file loaded

Open video (optional)  No video loaded

**100% private.** Your subtitle file and video stay on this device - nothing is uploaded. Undo, export and autosave all run locally in your browser.

No video loaded - the editor works without one.

   0:00  

Load a video to see its waveform. Drag a cue block's edges to adjust timing.

Bulk actions

#### Shift all timings

 seconds

 From the selected cue onward only 

#### Scale for frame-rate drift

Fixes subtitles that start fine but drift further out of sync as the video plays.

#### Sync to a point

Select a cue, play the video, then press M (or the button) exactly when that cue should start. Every cue shifts to match.

#### Find and replace

 Regex  Case-sensitive 

Validation 0

Keyboard shortcuts

<table class="se-shortcuts-table" data-astro-cid-ldgjcdkm=""><tbody data-astro-cid-ldgjcdkm=""><tr data-astro-cid-ldgjcdkm=""><td data-astro-cid-ldgjcdkm=""><kbd data-astro-cid-ldgjcdkm="">Space</kbd></td><td data-astro-cid-ldgjcdkm="">Play / pause</td></tr><tr data-astro-cid-ldgjcdkm=""><td data-astro-cid-ldgjcdkm=""><kbd data-astro-cid-ldgjcdkm="">[</kbd> / <kbd data-astro-cid-ldgjcdkm="">]</kbd></td><td data-astro-cid-ldgjcdkm="">Previous / next cue</td></tr><tr data-astro-cid-ldgjcdkm=""><td data-astro-cid-ldgjcdkm=""><kbd data-astro-cid-ldgjcdkm="">I</kbd></td><td data-astro-cid-ldgjcdkm="">Set selected cue's start to the playhead</td></tr><tr data-astro-cid-ldgjcdkm=""><td data-astro-cid-ldgjcdkm=""><kbd data-astro-cid-ldgjcdkm="">O</kbd></td><td data-astro-cid-ldgjcdkm="">Set selected cue's end to the playhead</td></tr><tr data-astro-cid-ldgjcdkm=""><td data-astro-cid-ldgjcdkm=""><kbd data-astro-cid-ldgjcdkm="">Ctrl/Cmd</kbd>+<kbd data-astro-cid-ldgjcdkm="">Enter</kbd></td><td data-astro-cid-ldgjcdkm="">Split the focused cue at the cursor</td></tr><tr data-astro-cid-ldgjcdkm=""><td data-astro-cid-ldgjcdkm=""><kbd data-astro-cid-ldgjcdkm="">Ctrl/Cmd</kbd>+<kbd data-astro-cid-ldgjcdkm="">M</kbd></td><td data-astro-cid-ldgjcdkm="">Merge selected cue with the next</td></tr><tr data-astro-cid-ldgjcdkm=""><td data-astro-cid-ldgjcdkm=""><kbd data-astro-cid-ldgjcdkm="">M</kbd> (during sync)</td><td data-astro-cid-ldgjcdkm="">Mark sync point</td></tr><tr data-astro-cid-ldgjcdkm=""><td data-astro-cid-ldgjcdkm=""><kbd data-astro-cid-ldgjcdkm="">Ctrl/Cmd</kbd>+<kbd data-astro-cid-ldgjcdkm="">Z</kbd></td><td data-astro-cid-ldgjcdkm="">Undo</td></tr><tr data-astro-cid-ldgjcdkm=""><td data-astro-cid-ldgjcdkm=""><kbd data-astro-cid-ldgjcdkm="">Ctrl/Cmd</kbd>+<kbd data-astro-cid-ldgjcdkm="">Shift</kbd>+<kbd data-astro-cid-ldgjcdkm="">Z</kbd></td><td data-astro-cid-ldgjcdkm="">Redo</td></tr><tr data-astro-cid-ldgjcdkm=""><td data-astro-cid-ldgjcdkm=""><kbd data-astro-cid-ldgjcdkm="">Ctrl/Cmd</kbd>+<kbd data-astro-cid-ldgjcdkm="">S</kbd></td><td data-astro-cid-ldgjcdkm="">Export / download</td></tr></tbody></table>

 0 cues

Autosave is on - **saved in your browser only**.

 Format   UTF-8 BOM  

## Why use this sync tool

#### Nothing is uploaded

Your subtitle file and video stay on your machine.

#### Three ways to fix timing

Shift for a constant offset, scale for frame-rate drift, or sync live against the video.

#### It's the full editor underneath

Text edits, undo, autosave and export all work here too, not just timing.

## How to sync subtitles to a video

1.  Open your subtitle file and your video.
2.  Watch the video and check whether subtitles are early/late throughout, or drift further out as it plays.
3.  Constant offset: use **Shift all timings** by the number of seconds you're off.
4.  Progressive drift: use **Scale** with the matching frame-rate preset, or your own custom rates.
5.  Still not lined up? Select a cue, click **Start sync**, and press M exactly when that cue should start - every cue shifts to match.

## Common subtitle sync problems and fixes

-   **Subtitles are out of sync from the start:** if every line is early or late by roughly the same amount throughout, that's a constant offset - use **Shift all timings**.
-   **Subtitles drift further out as the video plays:** that's a frame-rate mismatch, not an offset - use **Scale**, not Shift. The common case is 23.976fps timed subtitles played against a 25fps video, or the reverse; there's a preset for exactly that.
-   **The start lines up but it drifts later, or vice versa:** you likely need both - scale first to fix the drift rate, then shift the small remaining constant offset.
-   **You don't know the exact offset or frame rates:** use **Sync to a point** instead - play the video, mark the moment a specific line should start, and let the tool work out the shift for you.

Once your timing is fixed, convert formats with [SRT to VTT](https://meetrix.io/features/srt-to-vtt/), [VTT to SRT](https://meetrix.io/features/vtt-to-srt/), [SBV to SRT](https://meetrix.io/features/sbv-to-srt/) or [ASS to SRT](https://meetrix.io/features/ass-to-srt/), or open the full [subtitle editor](https://meetrix.io/features/subtitle-editor/) for text edits and validation. No subtitle file yet? Generate one with the [subtitle generator](https://meetrix.io/features/subtitle-generator/). You can also browse [all Meetrix features](https://meetrix.io/features/).

## Frequently Asked Questions

Is this subtitle sync tool free?

Yes, free to use with no sign-up and nothing to install.

Is my subtitle file or video uploaded anywhere?

No. Both are read and edited entirely in your browser and are never sent anywhere.

What's the difference between Shift and Scale?

**Shift** moves every cue by the same fixed amount - use it when subtitles are early or late by a constant amount from start to finish. **Scale** stretches or compresses all the timing by a ratio - use it when subtitles start fine but drift further out of sync as the video plays, which is almost always a frame-rate mismatch.

What does the 23.976fps to 25fps preset actually fix?

A file timed for 23.976fps (common for film) played against a 25fps video (common for PAL broadcast) drifts by about 4% over the runtime - small at the start, seconds off by the end. Scaling by that exact ratio corrects it across the whole file in one action.

How does Sync to a point work?

Select the cue you're using as a reference, click Start sync, then press M at the exact moment that cue's line should start playing. The tool calculates the difference between where it currently starts and works out from your video and shifts the entire file by that amount.

Do I need to load the video to fix timing?

For Shift and Scale, no - you can apply them blind if you know the offset or the frame rates. Sync to a point needs the video, since it times against actual playback.

Meetrix Store

Self-host the open source software your team already uses, on your own AWS or Google Cloud account.

 [Coturn TURN/STUN for WebRTC, no per-minute relay fees](https://meetrix.io/store/coturn/) [Browse the store](https://meetrix.io/store/)

## Run open source tools on your own cloud

Meetrix Store has pre-configured images for Jitsi Meet, Coturn, RustDesk, OpenVPN and 40+ more open source tools, ready to launch on AWS or Google Cloud in minutes.

[Browse the store](https://meetrix.io/store/) [Talk to Us](https://meetrix.io/contact-us/)

Meetrix Store New

Open source tools, ready to launch on your own AWS or Google Cloud.

-    [Coturn TURN/STUN for WebRTC, no per-minute relay fees](https://meetrix.io/store/coturn/)
-    [Jitsi Meet Self-hosted video calls for 50 to 500 users](https://meetrix.io/store/jitsi-meet/)
-    [RustDesk Remote desktop AMI, a TeamViewer alternative](https://meetrix.io/store/rustdesk/)
-    [OpenVPN Encrypted remote access, no per-user fees](https://meetrix.io/store/openvpn/)
-    [Supabase Postgres, Auth, Storage and Realtime, self-hosted](https://meetrix.io/store/supabase/)
-    [Plane Issues, cycles and roadmaps, a Jira alternative](https://meetrix.io/store/plane/)

[Browse all products](https://meetrix.io/store/)
