Skip to content

Repository files navigation

zanzibarr

zanzibarr

Stream anything from Usenet. Own nothing. Wait for nothing.

Windows build Android build platforms tests Support on Buy Me a Coffee Support on Ko-fi


zanzibarr turns Usenet into your personal streaming library. Point it at any .nzb and the video starts playing in seconds — no download queue, no waiting for the full file, no disk space sacrificed. Scrub to the final scene of a 4K remux before the first act would have finished downloading. It feels like magic; it's really just a very disciplined engine.

Screenshots

zanzibarr demo

Home — dark

Player

More screenshots

Indexer search

Video & audio settings

Smart Canvas

Settings

Home — light

Why zanzibarr is different

Play instantly, never download The Rust engine maps every seek position to the exact Usenet segments that hold it, fetches only those, decodes yEnc on the fly and serves the result through a lazy, range-aware local stream. Pause the player and the network goes quiet. Close the app and nothing is left behind on your disk.

Find it and play it — without leaving the app Hook up any Newznab-compatible indexer and the home screen becomes your launchpad: capability discovery, release names parsed into quality badges (2160p · HEVC · DV · HDR10+ · TrueHD · Atmos · group), and a single tap streams the NZB straight into the player. No browser round-trips, no download manager, no queue.

Seek like it's a local file Byte offsets are resolved from the decoded yEnc begin/end positions of every segment — never guessed from article sizes. The result is frame-accurate seeking across thousands of segments, even mid-segment, even on 100+ GB releases.

It opens the archives others won't Straight video NZBs, multi-volume RAR5 sets, legacy RAR4 volumes and split 7z releases — LZMA/LZMA2-compressed and AES-256 encrypted sets included — are reassembled into a single virtual, seekable file entirely in memory. Nothing is extracted to disk. Compressed RAR (method > STORE, -hp encrypted included) plays too: the compressed set is spooled to a temporary directory and decoded ahead by a vendored libunrar, so the decoded prefix is seekable instantly and the rest streams in as it decodes — temporary disk is reclaimed when you close the player.

Scratches don't stop the show Missing or corrupt Usenet segments no longer kill the movie: hit Repair with PAR2 on the error screen and the engine verifies every slice of the recovery set, rebuilds the damaged ones with Reed-Solomon (byte-exact against par2cmdline) and serves them from a local overlay. Playback resumes exactly where it failed.

A picture pipeline that respects your content

  • Dynamic range selector that adapts to the file: SDR · HDR · HDR10 · Dolby Vision — modes the content doesn't carry stay visibly disabled, so you always know exactly what you're watching.
  • Dolby Vision handled honestly: Profile 5 is reshaped on the GPU via libplacebo — on macOS via Vulkan → Metal, on Android via a custom mpv 0.41 + FFmpeg 8.1.2 + libplacebo build with an 8-bit reshape path that survives drivers lacking 16-bit linear sampling (Samsung Xclipse) as well as Adreno. HDR10-based profiles ride the natural decoder path — no pink-and-green fakeouts, and the player shows live engine status when a device can't run the correction.
  • BT.2390 tone mapping with per-frame peak detection for clean SDR conversion.
  • Custom libmpv 0.41 + full FFmpeg 8.1 build: TrueHD / Atmos, DTS-HD MA, AV1 and everything else your releases actually use.
  • Video presets (Natural / Cinema / Vivid), GPU scaling quality, and audio presets (Balanced / Dialogue / Night) — one tap, no filter graphs.
  • Hardware or software decoding, your call.

Smart Canvas Letterboxed rip? Draw your own crop with draggable handles, preview the aspect ratio live, and apply it on the GPU surface without touching hardware decode.

A player that gets out of the way Auto-hiding controls, double-click to seek ±10 s, click-to-pause, frame stepping, speed control, audio sync nudge, volume slider, Picture-in-Picture, and external audio/subtitle loading alongside the embedded tracks.

Speaks your language 14 fully localized interfaces: English, Türkçe, Español, Deutsch, Français, Português, Italiano, Русский, 中文, 日本語, 한국어, हिन्दी, العربية and فارسی — with proper RTL layout. Dark and light themes, of course.

Built for the couch and the desk Native apps for macOS, Windows, Android and Android TV (leanback launcher, remote-friendly focus, hardware decode). One codebase, no Electron, no compromises.

Your credentials stay yours Your Usenet login lives exclusively in the operating system's secure keychain — never in files, never in logs, never on a server. zanzibarr is fully on-device: no accounts, no telemetry, no cloud.

How it works

 .nzb ──▶ NZB parser ──▶ segment map (yEnc begin/end)
                              │
                 NNTP pool (TLS, pipelined)
                              │
              fetch → yEnc decode → CRC32 verify
                              │
        archive layer (RAR5 / 7z STORE·AES → virtual file)
                              │
              localhost HTTP server (Range requests)
                              │
                     libmpv / media_kit

Everything heavy — parsing, decoding, archive surgery, NNTP networking — is Rust (flutter_rust_bridge under the hood). Everything you touch is Flutter. The engine only ever downloads the slices you actually watch.

Getting started

  1. Grab the latest build for your platform from Releases (Windows .zip, macOS .zip, Linux .tar.gz, Android .apk — pick arm64-v8a for phones and TV boxes).
  2. Open the settings gear and add your Usenet provider's NNTP host, port, username and password. They're stored in the OS keychain.
  3. Drop in any .nzb from your favorite indexer and press play.

You need your own Usenet provider account and NZB sources — zanzibarr is the player, not the library.

Building from source

Requirements: Flutter (stable), Rust toolchain, and for macOS the Xcode command line tools.

git clone https://github.com/envermeister/zanzibarr.git
cd zanzibarr
flutter pub get
flutter gen-l10n
flutter run            # macOS / Windows / Linux desktop
flutter run -d android # Android device / TV box

Run the test suites:

flutter test           # Flutter side
cargo test             # inside rust/ — engine side

CI produces the Windows .zip, macOS .zip, Linux .tar.gz, Android .apk and iOS (unsigned .ipa) artifacts on demand (see .github/workflows/).

The Linux build links against the system libmpv — install the runtime first (sudo apt install libmpv2 on Ubuntu/Debian; DV tone-mapping needs a libplacebo-enabled build, which Ubuntu 24.04 ships). Detailed notes: docs/BUILDING.linux.md.

Roadmap

  • Streaming playback with true seek (STORE releases)
  • Multi-volume RAR5 & split 7z (STORE, AES-256) as virtual files
  • HDR / HDR10 / Dolby Vision mode selection & tone mapping
  • Android TV, 14 languages, dark & light themes
  • Newznab indexer search (browse & play without leaving the app)
  • Compressed 7z (LZMA/LZMA2, solid) stream-seek & RAR4 STORE sets
  • PAR2 engine: packet parsing, slice health check, Reed-Solomon repair (verified byte-exact against par2cmdline)
  • PAR2 repair wired into playback (user-triggered from the player error screen; repaired slices served from a local overlay)
  • Compressed RAR stream-seek (vendored libunrar; decode-ahead onto a temp spool with range-serving)
  • Linux build (system libmpv, Ubuntu 24.04 verified)
  • iOS build (unsigned .ipa via CI; sideload with AltStore/Sideloadly — TestFlight needs a paid developer account setup)

Support the project

zanzibarr is free and open source, built in spare time. If it saved you a download queue, you can buy the next coffee that funds the engine on Buy Me a Coffee or Ko-fi. One-off or monthly — both keep the commits coming.

A note on responsibility

zanzibarr is a neutral playback engine. You are responsible for the content you access and for complying with the laws of your jurisdiction and the terms of your Usenet provider.

About

zanzibarr streams NZB content from Usenet without downloading — instant start, true seek, PAR2 repair, Dolby Vision. Windows · macOS · Linux · Android · Android TV · iOS.

Topics

Resources

Stars

14 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Contributors

Languages