Hardware-accelerated subtitle sync and translation from the command line

Subtitles out of sync, in the wrong language, or just missing. Anchor fixes all three - using Whisper for audio-based timing and NLLB for context-aware translation.

Runs on NVIDIA, Apple Silicon, AMD, and CPU. Drop it in wherever you process video.

Audio Sync Translation Auto-download NVIDIA CUDA Apple MPS AMD ROCm CPU
$ pip install anchor-sub-sync
anchor
Anchor Subtitle Sync 1.4.0 ⚡ Hardware Detected: NVIDIA RTX 2000E (16 GB) Engine: cuda Model: large-v3 Precision: float16 Translation: OpenNMT/nllb-200-3.3B-ct2-int8 ⚡ Select task 1. 🔊 Audio Sync (Automatic Sync via Whisper) 2. 📌 Point Sync (Sync via reference Subtitle) 3. 🌐 Translate (Translate subtitle text) Select Mode (1): 1 🚀 Starting Sync (1 file)... Task 1/1 A.44.Minute.Example.Video.pt.srt Video: A.44.Minute.Example.Video.mkv Metadata language detected: EN Subtitle language detected: PT ⚠ Mismatch: Audio EN, Subtitle PT. Translating... Translation complete (PT → EN). Model loaded. Transcribing audio (Batch Size: 16, Compute: float16)... Transcription complete. Phoneme alignment complete. Calculating sync offsets... Valid Anchors: 576 (Rejected 26 outliers) Reconstructing Timeline (Interpolation)... ✨ Success! (79.2s) Lines Processed: 669 Outliers Rejected: 26 ✨ Sync Complete in 97.3s

The name comes from the core sync algorithm. When re-timing a subtitle, Anchor transcribes the audio and looks for points where it can match subtitle lines to the transcript with very high confidence. Only those high-confidence matches become anchors - everything uncertain gets rejected as an outlier. The timeline is then reconstructed from those anchors alone. Because the algorithm never commits to a shaky match, it works reliably on any subtitle, no matter how drifted, recut, or badly timed the original is.

Everything subtitle-related, in one tool

From fixing timing to generating subtitles from scratch, Anchor handles the full workflow.

🔊 Audio Sync

Re-times subtitles by transcribing the audio with Whisper and aligning phonemes. Works even when the subtitle was made for a different cut - and even when the subtitle is in a different language than the audio.

📌 Point Sync

Syncs using a reference subtitle as the source of truth. Handles cross-language pairs - sync a PT subtitle using an EN reference without needing audio.

🌐 Translation

Context-aware translation via NLLB into 200+ languages. Choose between small, medium, or large models depending on the quality vs. speed tradeoff you need.

📝 Generation

Generate subtitles from scratch by transcribing audio with Whisper when no subtitle file exists at all.

📦 Extract, Embed, Burn

Extract subtitle tracks from video containers, embed .srt or .ass files back in, strip them out entirely, or burn them hard into the video stream.

🛠️ Repair and Convert

Repair malformed subtitle files, clean up formatting artifacts, and convert between .srt and .ass formats.

⬇️ Auto-download

Search and download subtitles automatically from SubDL, OpenSubtitles, Addic7ed, and Podnapisi before processing.

🔌 API Mode

Expose Anchor as a local API server. Compatible with the Subtitle Edit external tool interface for GUI workflows.

Hardware-accelerated. Runs fast on whatever you have.

GPU acceleration cuts sync time drastically. Anchor auto-detects your hardware and configures itself.

NVIDIA CUDA
27-75x
realtime speed
CPU fallback
2.7-12x
realtime speed
Apple MPS
supported
AMD ROCm
supported