smacke/ffsubsync

Automagically synchronize subtitles with video.

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 40 minutes ago
Added to GitGenius on September 8th, 2026
Created on February 24th, 2019
Open Issues & Pull Requests: 69 (+0)
GitHub issues: Enabled
Number of forks: 322
Total Stargazers: 7,869 (+0)
Total Subscribers: 72 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 9.7 days
Mean response time: 118.5 days
90th percentile: 480.6 days
Tracked items: 25

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 13
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 711 days
Stale 30+ days: 13
Stale 90+ days: 13

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • bug (14)
  • out-of-sync (4)
  • enhancement (3)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

FFsubsync is a command-line tool that automatically synchronizes subtitles with video by detecting and correcting timing misalignment.

The tool solves the problem of out-of-sync subtitles by using voice activity detection and speech recognition to align subtitle timing with audio. It works language-agnostically by analyzing the audio track to identify speech patterns, then matching those patterns against the subtitle text to determine the correct starting point. The approach uses fast Fourier transforms and string alignment algorithms to find the optimal synchronization offset.

FFsubsync suits anyone dealing with misaligned subtitles across any language pair. It works with any subtitle format that ffmpeg can read and accepts video, audio, or correctly-synced reference subtitles as input. The tool offers both a command-line interface for scripted or bulk operations and a browser-based version that requires no installation and processes files entirely client-side. For users with multiple subtitle files in the same directory, the tool can auto-detect and sync them all at once. Remote references are supported via HTTP, RTMP, RTSP, and FTP protocols, though local files are more reliable for large sources.

Development activity shows consistent maintenance with regular updates addressing edge cases and user-reported issues. The project maintains backward compatibility across Python versions and actively incorporates user feedback into refinements of the synchronization algorithm. Documentation is thorough, covering both common workflows and advanced use cases like using reference subtitles instead of audio. The maintainer has made the tool accessible through multiple interfaces—command-line, browser, and programmatic—suggesting responsiveness to different user needs.