ffsubsync
Language agnostic automatic subtitle synchronization that runs in your browser
Gallery
About ffsubsync
ffsubsync is a tool that fixes out of sync subtitles by aligning them to a reference, either another subtitle file, a video file, or an audio track. You give it the broken subtitles and the reference, and it calculates the time shift needed to make them match. The algorithm uses speech detection and Fast Fourier Transform to find the optimal offset, which means it works regardless of language. You can sync English subtitles to a French audio track or align fan subs to an official video without caring about what language anyone is speaking.
The tool started as a command line Python project and won an honorable mention at HackIllinois 2019. Since then it has grown to over seven thousand stars on GitHub and become the go to open source solution for subtitle alignment. The browser version, hosted at smacke.net/ffsubsync, compiles the Python code to WebAssembly via Pyodide and runs entirely on your machine. Nothing is uploaded. You pick your files, wait for the processing, and download the fixed subtitles. For people who do not want to install Python or run terminal commands, this is the easiest way in.
The supported formats include SRT, ASS, and SSA, which covers the vast majority of subtitle files you will encounter. Advanced options let you correct framerate mismatches, handle mid file timing breaks, and use golden section search for tricky alignments. If you are syncing a rip where the video was sped up or the subtitles came from a different cut, these options help the algorithm find the right fit.
Audio decoding in the browser uses ffmpeg.wasm, which means you can sync against video files without extracting the audio track first. For command line users, the Python package supports remote files over HTTP, RTMP, RTSP, and FTP, which is useful for batch processing or automating workflows. Legacy character encodings are handled automatically, so you do not need to convert files to UTF 8 before processing.
The use case is straightforward. You downloaded a movie and the subtitles do not line up. Maybe they are three seconds off throughout, or maybe they drift over time because of a framerate mismatch. Either way, you drop the files into ffsubsync and get a synced version back. Media archivists, torrent communities, and anyone who deals with mismatched subtitles regularly will find this useful.
The project is open source under the MIT license, which means you can use it for personal or commercial purposes without restriction. The browser version is free to use with no signup. If you want to run it locally or integrate it into your own tooling, the Python package is available via pip. The creator, smacke, maintains the project on GitHub.
Key Features
- Language agnostic subtitle alignment
- Browser based processing via WebAssembly
- Support for SRT, ASS, and SSA formats
- Framerate correction and golden section search
- No file uploads required
- Command line and remote file support
Pros & Cons
What we like
- Runs entirely in browser with no server uploads
- Works regardless of subtitle or audio language
- Open source under MIT license
- Handles legacy character encodings automatically
Room for improvement
- Browser version slower than native Python on large files
- Requires basic understanding of subtitle formats
- No graphical preview of sync quality
- Complex drift issues may need multiple attempts
Frequently Asked Questions
What is ffsubsync?
Does ffsubsync upload my files?
Is ffsubsync free?
What subtitle formats does ffsubsync support?
Best For
Featured in
Alternatives to ffsubsync
View all
Apatero AI
The creator studio for AI image, video, audio, 3D, and avatars, now at apatero.ai.

Apatero Studio
Creator studio for AI image, video, audio, 3D, and avatars. Every model worth using, in one workspace.
Melodex
Turn your idea into an AI-generated music video

Speel
AI UGC video generator that makes realistic AI avatars hold and talk about your product for ads
Reviews (6)
Two months in, no regrets
Found ffsubsync on a Show HN thread and I am glad I clicked. Their take on handles legacy character encodings automatically is genuinely good. It slotted into my routine without much fuss. Worth it for what I get out of it.
Does the job, a few gripes
Three months of ffsubsync later, here is what holds up. The open source under mit license is more useful than I expected. It just works, day after day, without surprises. Mostly using it for syncing subtitles across different cuts of a film. It would be a five if not for complex drift issues may need multiple attempts. Glad I made the switch.
Worth a look
Started using ffsubsync casually, now it is pinned in my dock. Their take on no file uploads required is genuinely good. The defaults are sensible, so I was not fighting settings on day one. No regrets so far.
Solid daily driver
Tried ffsubsync on a side project first, then rolled it out everywhere. It just works, day after day, without surprises. Glad I made the switch.
Quietly excellent
Tried ffsubsync on a side project first, then rolled it out everywhere. What stands out is how it handles browser based processing via webassembly. It fits well for syncing subtitles across different cuts of a film. Glad I made the switch.
Powerful once it clicks
Found ffsubsync on a Show HN thread and I am glad I clicked. The works regardless of subtitle or audio language is more useful than I expected. It fits well for aligning fan subs to official video releases. My only gripe is requires basic understanding of subtitle formats. Easy yes for anyone weighing the same trade offs.
Related Tools

LocalClip
Local-first AI video clipper for Mac that turns long videos into vertical clips
Melodex
Turn your idea into an AI-generated music video

Apatero Studio
Creator studio for AI image, video, audio, 3D, and avatars. Every model worth using, in one workspace.

Apatero AI
The creator studio for AI image, video, audio, 3D, and avatars, now at apatero.ai.