Skip to content

Statistics

The Statistics page is Sublarr’s analytics dashboard. It collects everything Sublarr does — subtitle downloads, machine translations, sync runs, provider performance, and host health — into six sections that share a single time-range selector. Open it from the sidebar; the page fetches each section independently and shows a spinner until the first data arrives.

subtitle_downloads translation_events sync_job_runs stats_rollup daily 04:00 UTC idempotent · backfills 90d Trends chart downloads · MT · sync live query · cached ~5 min Snapshot tiles Overview · Providers Translation · System
Statistics data flow

A row of buttons in the header controls the window for the time-sensitive sections. The default is 30 days.

RangeWindow
24hLast 24 hours
7 daysLast 7 days
30 daysLast 30 days
AllEvery record, no cut-off

The range applies to Overview counts, the Trends chart, the Subtitles breakdowns, and the Translation section. The Providers table and the System section are always live snapshots and ignore the range.

Six headline tiles summarising the current state and the selected window:

TileMeaning
Subtitle filesTotal subtitle downloads recorded (all time).
DownloadsSubtitle downloads within the selected range.
TranslationsTranslation events within the selected range.
WantedItems currently in the wanted backlog.
MT awaiting originalProvisionally machine-translated items still waiting for a real source to finalise.
Avg download scoreMean match score of downloads in range.

A multi-series line chart over the selected range, plotting three daily counts:

  • Downloads — subtitle files written per day
  • Translations — successful translation events per day
  • Syncs — successful sync runs per day

The chart reads from a pre-aggregated daily rollup rather than scanning the raw event tables, so it stays fast even over long windows. See How the data is produced.

Three breakdown panels covering downloads within the selected range:

PanelBreaks down by
By sourceWhere the subtitle came from (e.g. provider download, embedded extract, translation).
By languageLanguage of the downloaded subtitle.
By providerWhich subtitle provider supplied it.

Each panel is a horizontal bar list; empty dimensions collapse to a “no data” note.

Four tiles plus a per-backend breakdown, all scoped to the selected range and counting only successful (ok) translation events:

TileMeaning
Characters translatedSum of output characters across successful translations.
Estimated costEstimated spend in USD, derived from per-event cost estimates.
Quality-gate pass rateShare of translation events that passed (successful events divided by all events).
Avg latencyMean translation latency in milliseconds.

The By backend panel breaks the successful translations down by the engine that produced them (for example your configured LLM or DeepL).

A live table of every subtitle provider that has recorded activity. Rows with no searches and no downloads are hidden. Sorted by download count.

ColumnMeaning
ProviderProvider name. A · disabled marker appears when the provider has been auto-disabled by the circuit breaker.
SearchesTotal searches issued to the provider.
Hit rateSuccessful searches divided by total searches.
DownloadsSuccessful downloads from the provider.
Avg scoreMean match score of its downloads.

This section is a live snapshot of the provider statistics table and is not affected by the time-range selector.

A live snapshot of the host and database:

TileMeaning
CPUCurrent CPU usage of the host.
MemoryCurrent memory usage.
DiskDisk usage of the root volume.
UptimeHow long the Sublarr process has been running.
Database sizeOn-disk size of the database (SQLite file size, or the reported database size on PostgreSQL).

Most sections query Sublarr’s live tables directly — subtitle downloads, translation events, provider statistics, and the wanted backlog — and cache the result briefly at the API layer.

The Trends chart is the exception. A scheduled rollup job aggregates each calendar day’s downloads, translations, and syncs into a single row per date, so the chart never has to scan the raw tables:

  • The stats_rollup scheduler job runs once a day and rewrites today and yesterday (to catch late-arriving records), then fills in any missing historical day within a 90-day window.
  • On first run against an existing library it backfills up to 90 days of history, skipping days with no activity so a new install doesn’t accumulate long runs of empty rows.
  • The job is idempotent — re-running it for any date recomputes and overwrites that date’s row.

You can trigger a rollup on demand from Settings → System → Scheduler by running the stats_rollup job, which is useful right after first install to populate the trend chart immediately.