Keep your Trakt viewing history in sync while you watch.
Mireki is a privacy-conscious Firefox extension that follows playback across supported streaming services and automatically reports it to Trakt. It keeps working when the popup is closed, when the source tab is in the background, and when a site replaces its player during navigation.
A Trakt account is optional: without one, Mireki still provides a simple global view of what is currently playing across your open tabs.
- Continuous playback detection — observes supported streaming tabs without requiring a toolbar click.
- Automatic Trakt scrobbling — starts, pauses, and completes viewing history automatically.
- Configurable completion threshold — marks an item watched at a local 80–100% threshold that defaults to 90%.
- Cautious matching — supports localized titles, aliases, common episode formats, and absolute anime numbering.
- Manual match correction — search Trakt from the popup, choose an exact movie or series episode, and reuse that local correction for the same media.
- Privacy and scrobbling controls — pause for 15 minutes, one hour, or until browser restart; ignore the current playback; or disable scrobbling globally or per provider.
- One global playback status — keeps the current playing source stable when several tabs or embedded players are active.
- Background resilience — recovers observation after Firefox unloads and restarts the extension background.
- No telemetry — Mireki does not maintain analytics or collect unrelated browsing history.
Mireki can observe standard media playback on:
- Crunchyroll
- Netflix
- Prime Video
Provider support depends on metadata exposed by each website and by Firefox. Netflix and Prime Video include dedicated, player-scoped fallbacks for series and episode labels when standard metadata is insufficient. Crunchyroll uses the provider-neutral media observer.
Connect Trakt from Firefox Add-ons → Mireki → Preferences. Once connected, Mireki resolves the selected media and sends meaningful playback transitions rather than an update every second.
Best-effort scrobbling: Streaming services, players, and exposed metadata change over time. Mireki cannot guarantee detection, matching, or scrobbling for every movie, series, episode, language, or provider. When information is missing or uncertain, it prefers not to scrobble rather than report the wrong media.
Mireki can resolve an episode from a unique canonical or translated title within the matched series, using the within-season episode number as an additional hint when a service exposes it. It deliberately leaves media as Unmatched, Ambiguous, or Episode unknown when metadata is insufficient, and never silently invents a season or chooses between multiple candidates.
When automatic matching is insufficient or wrong, Find on Trakt opens a focused correction view from the current playback card. Movie selections are validated against Trakt; series selections require explicit season and episode coordinates. Mireki stores the confirmed mapping locally for the exact normalized provider media and lets the user remove it to restore automatic matching. Contextual controls in the popup can ignore only the current playback or pause all scrobbling for 15 minutes, one hour, or until the browser restarts. Persistent global and per-provider switches live in Preferences, where a timed pause can also be resumed immediately.
Continuous playback detection requires access to the supported streaming domains listed above. Trakt connection and scrobbling use only the configured Mireki OAuth broker and api.trakt.tv. Mireki does not request access to unrelated websites, generic Amazon retail pages, HTTP, local files, or FTP.
Raw tab and frame observations remain local and expire quickly. When Trakt is connected, only the selected title or episode metadata, Trakt identifiers, and playback progress needed for matching and scrobbling are sent to Trakt. OAuth tokens stay in browser extension storage and are never exposed to streaming pages, the popup, or logs. Disabling or pausing scrobbling prevents matching requests and playback updates from being sent to Trakt. Mireki continues minimal local detection so the popup can show the current playback and let you resume; an ignored playback is held only in memory for the current browser session and is cleared when its media identity changes.
Disconnecting removes local credentials and Mireki's local completion state, while also attempting to revoke remote Trakt access. Browser extension storage is controlled by the extension but is not encrypted against someone with access to the local browser profile or operating system account.
Firefox users can download the Mozilla-signed .xpi file from the matching GitHub release and open it with Firefox.
Releases also include browser-specific ZIP archives. The Firefox ZIP supports temporary loading through about:debugging; permanent Firefox installation requires the Mozilla-signed XPI. The Chrome ZIP supports Load unpacked developer mode after extraction and is not a Chrome Web Store package.
Mireki uses native JavaScript and has no runtime dependencies. Node.js 24 or newer generates isolated browser targets:
node tools/build-extension.cjsOr generate one target with the optional just command runner:
just build-firefox
just build-chrome
just build-firefox-zip
just build-chrome-zipThis creates ignored build/firefox and build/chrome directories. Regenerate the target after source changes; web-ext then reloads the updated output.
Run a temporary Firefox profile:
npx --yes web-ext@10.5.0 run --source-dir build/firefox --devtoolsFor manual loading, open about:debugging, select This Firefox, choose Load Temporary Add-on…, and select build/firefox/manifest.json. Firefox removes temporary extensions when the browser closes.
Run Chrome or Chromium:
npx --yes web-ext@10.5.0 run --target chromium --source-dir build/chromeUse --chromium-binary google-chrome when automatic browser discovery does not select the intended executable. For manual loading, open chrome://extensions, enable Developer mode, choose Load unpacked, and select build/chrome.
node --test
node tools/build-extension.cjs
npx --yes web-ext@10.5.0 lint --source-dir build/firefoxMireki is available under the MIT License.