Skip to content

Settings — Sync Engines

Settings → System → Sync Engines shows the sync engine chain and the most recent sync attempts. The page is read-only: it reports what is installed and what happened, it does not change how sync behaves. The user-facing sync workflow — what a sync changes and when it is refused — lives at Multi-Engine Sync.

EngineWhat it doesAvailability
ffsubsyncSpeech detection against the video’s audio track.Bundled in the Docker image.
alassAligns against a reference subtitle.Needs the alass binary; see Installing alass.

Each engine shows available or unavailable and its timeout. Below the list, the Sanity threshold in milliseconds: an engine whose measured offset exceeds it is rejected. It comes from sync_sanity_threshold_ms (default 45000, 45 s), which is set through the settings API; changing it takes effect without a restart.

Every sync attempt — success, skip, refusal or error — is listed with its engine, status, measured offset, duration, time and, where there is one, the reason. The same rows are available from GET /api/v1/sync/runs and are described under Audit trail.

The settings that decide whether and how a downloaded subtitle is synced live elsewhere:

SettingWhereDefaultEffect
Auto-SyncSettings → Automation → Post-processingoffSync every downloaded subtitle against its video.
Auto-Sync engineSettings → Translation → BackendsffsubsyncEngine for the automatic sync. alass is skipped there, because it needs a reference track.

Manual syncs start from the subtitle tools and the Sync compare view.