Settings

Scheduled runs check Bazarr's wanted list on this cron expression, and only translate items older than the age threshold — giving Bazarr's own providers first chance to find a real subtitle. Settings reference

Translate next batch
Standard 5-field cron expression

A scheduled run only translates items that have been missing a subtitle for at least this many days — freshly-wanted items are left alone so Bazarr's own providers get a chance to find a real subtitle first. Doesn't apply to "Run now" (ignores the age gate) or per-item re-runs.

Max items to translate per day (0 = unlimited). Applies to "Run now" and scheduled runs — per-item re-runs always bypass this. This exists to protect a local/GPU engine (Ollama) from being pegged non-stop for hours on a large backlog — if you're using a remote/cloud engine (Gemini, NVIDIA) instead, there's no local hardware to protect, so 0 (unlimited) is generally safe, subject to that provider's own rate limits.

Brief rest between translations so the GPU isn't pegged non-stop for hours (0 = no pause).

Un-flags every engine currently in a rate-limit/auth cooldown right before a scheduled run starts, same as "Clear all rate limits" on the Jobs page. With a daily cron, a cooldown tripped mid-run one day can otherwise outlive the ~24h gap to the next run and silently skip that engine again. A genuinely still-exhausted engine just re-trips its cooldown after a few failures, same as any other run.

Next scheduled run: {{ nextRun }}

Upload timing
Applies to every translation, regardless of how it was triggered — scheduled runs, "Run now", filtered batches, and single-item re-runs alike

Translated subtitles are cached locally and held as "pending upload" instead of being sent to Bazarr right away — push them all in one batch later from the Jobs page. Useful if uploading wakes a sleeping NAS and you'd rather do that once instead of once per item.

Bazarr sync schedules
Optional, independent crons for the two on-demand Jobs page syncs — leave blank to keep them manual-only

Next run: {{ nextSyncMediaRun }}

Next run: {{ nextSyncSubsRun }}

Sweeps the entire not-yet-checked backlog each fire (same as the Jobs page button). Requires a check engine to be picked on the Jobs page first — a fire with none configured just logs a failed job event. Scheduling this AFTER the translate cron above (the default) lets it audit that night's own batch too, at the cost of any mismatch found waiting until the NEXT translation run to be retranslated; scheduling it BEFORE instead catches a same-night mismatch reset in time for that night's run, but never audits the batch about to run.

Next run: {{ nextLanguageCheckRun }}

Only meaningful when "Queue uploads" above is on — otherwise nothing ever sits queued for this to push. Schedule it after the language check above so mismatched items are caught before their subtitle reaches Bazarr.

Next run: {{ nextPushUploadsRun }}

Database backups
Daily snapshot of the whole database to /data/backups/ — the only recovery path if a mistake (e.g. clear-database) or a bad migration ever needs undoing

On by default. Keeps the last {{ backupKeepCount }} snapshots, oldest pruned automatically. Safe to run anytime — reads the live database without pausing it.

Next run: {{ nextBackupRun }}

● started

● snapshot written, {{ backupResult.pruned }} old snapshot(s) pruned

● {{ backupError }}

Restore from a snapshot

Overwrites the live database in place with the chosen snapshot. A safety snapshot of the current state is taken automatically first, so this is itself always undoable. Blocked while any job is running. Restart the app after restoring — the database is corrected immediately, but a few in-memory settings (Bazarr connection, schedule) only get re-read from it on startup, so they can keep showing stale values until then.

No snapshots yet.
SnapshotSize
{{ formatBackupTime(b.created_at) }} {{ formatBackupSize(b.size_bytes) }}

● restored from {{ restoreResult.restored_from }} — pre-restore state saved as {{ restoreResult.safety_snapshot }}

● {{ restoreError }}

Privacy

Sends a daily ping with a random install ID, app version, OS, which translation engine type(s) are configured, and item/translation counts. Never includes your Bazarr URL, API keys, engine names, file paths, or subtitle content. On by default — turn off anytime.

● sent — check the Jobs page for the result

Fires immediately instead of waiting for the daily schedule — useful to confirm telemetry is reaching Google Analytics. Shows up as a "Usage telemetry" entry on the Jobs page either way.

● saved ● {{ error }}