Skip to content
rick-rami94Public

About

Open-source DVD and Blu-ray to MKV ripper with a sandboxed, hardened engine

Topics

Resources

Contributing

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Repository files navigation

Spinarr

CI Release build Latest release Downloads License: GPL-3.0-or-later

macOS Windows Linux

Electron 44 Node 20+ FFmpeg 8 Lossless remux Sandboxed engine Fuzz tested

Last commit Issues PRs welcome Stars

An open-source DVD and Blu-ray → MKV ripper for macOS, Windows and Linux, with a modern UI. It's a friendlier, auditable take on MakeMKV.

Spinarr copies titles losslessly. You get the original MPEG-2 video, every audio track (AC3, DTS, LPCM, MPEG), VobSub subtitles, chapters and language tags, remuxed into MKV with no re-encoding. The test suite proves it: decoded video is bit-identical to the source, and every audio packet survives byte for byte.

Spinarr showing a Blu-ray's main feature with its audio and subtitle tracks expanded

Install

Download the installer for your computer from the latest release. Everything Spinarr needs is inside: there's nothing to build.

Your computer Download
Mac with Apple silicon (M1 and later), macOS 12+ Spinarr-<version>-mac-arm64.dmg
Mac with an Intel chip, macOS 12+ Spinarr-<version>-mac-x64.dmg
Windows 10 or 11 (64-bit) Spinarr-<version>-win-x64.exe
Linux: Ubuntu, Debian, Mint, Pop!_OS Spinarr-<version>-linux-<arch>.deb
Linux: any other distribution Spinarr-<version>-linux-<arch>.AppImage

Releases aren't code-signed yet, so the first launch takes one extra step:

  • macOS: open the .dmg and drag Spinarr to Applications. The first time, right-click it and choose Open. On macOS 15 or later, go to System Settings → Privacy & Security and click Open Anyway.
  • Windows: run the installer. If SmartScreen appears, click More info → Run anyway. Spinarr installs for your user only, with no admin prompt.
  • Linux (.deb): sudo apt install ./Spinarr-*.deb. This also installs bubblewrap, which sandboxes the engine.
  • Linux (AppImage): chmod +x Spinarr-*.AppImage, then run it. Install bubblewrap from your package manager so the engine runs sandboxed.

Encrypted DVDs (libdvdcss)

Full guide: Encrypted DVDs and Blu-rays covers DVDs, Blu-ray key files, and what every message means.

Most store-bought DVDs are encrypted with CSS. Spinarr doesn't ship the library that reads them, so install it once:

System Command
macOS brew install libdvdcss
Ubuntu, Debian, Mint sudo apt install libdvd-pkg && sudo dpkg-reconfigure libdvd-pkg
Fedora sudo dnf install libdvdcss (from RPM Fusion)
Arch sudo pacman -S libdvdcss
Windows Choose your own 64-bit libdvdcss-2.dll in Settings → System. Spinarr checks it and never downloads or ships it.

Settings → System shows whether it was found, with the right command for your system. Unencrypted discs, disc images and folders work without it.

Features

  • Finds discs on its own. Inserted discs are detected automatically. You can also open, or drag in, an ISO, a disc folder or a VIDEO_TS folder.
  • Picks out the movie. The main feature is preselected. Logos, menus and duplicate playlist titles (a common copy-protection trick) are hidden.
  • Shows what's on each title. Every title gets a chapter timeline plus language, codec and channel chips. Pick exactly which audio and subtitle tracks to keep.
  • Rip queue. Shows progress, speed and time left, with cancel and Show in Finder. It checks free space first, never overwrites files, and never leaves partial files behind.
  • Honest failures. A scratched or unreadable disc fails with a clear message instead of a silently truncated file.
  • Light and dark mode.
  • Blu-ray (early). Playlists, chapters and track languages; lossless rips (Blu-ray LPCM → FLAC, everything else copied). Unencrypted discs work today. For AACS discs, install libaacs and choose your own KEYDB.cfg in Settings → System (guide). Spinarr copies it to where libaacs looks. It never ships, downloads or links to keys. BD+ and 4K UHD aren't supported. Tested on generated discs; real-drive testing is pending.

Screenshots

A rip in progress: one title done, the main feature at 48%, one waiting
Ripping. Live progress on each title card and in the Rips list.
The start screen with a large disc and an Open image or folder button
Start screen. Insert a disc, or open or drop an image or folder.
The disc view in light mode
Light mode. Follows your system appearance.

Keyboard

On Windows and Linux, use Ctrl where this table says ⌘.

Keys Action
⌘O Open an image or folder
⌘↩ Rip the selected titles
⌘A Select or deselect every visible title
↑ ↓ Move between titles
Space Select the focused title
↩ / → / ← Expand or collapse the focused title's tracks
⌘, Settings

Security

A DVD is untrusted input parsed by C code, so Spinarr treats it that way:

  • Sandboxed engine. The scanner and ffmpeg run with no network, no access to your files except the disc, and write access only to your output folder.

    System Sandbox
    macOS Built-in sandbox profile, which also blocks starting other programs
    Linux bubblewrap: fresh namespaces and read-only system files. The .deb installs it; for the AppImage, install it yourself.
    Windows None yet. Settings → System says so, and because the engine sandbox is off, Spinarr asks before every scan. The engine still uses the patched, fuzzed parsers below.
  • Patched, fuzzed parsers. libdvdread is built from verified source with memory-safety fixes found by fuzzing. Those fixes are being sent upstream.

  • Locked-down UI. No Node.js in the UI, a strict CSP, and every request to the backend validated.

See SECURITY.md and the full security testing report.

How it works

Piece Role
engine/dvdinfo.c, engine/bdinfo.c Small libdvdread / libbluray tools that dump a disc's titles or playlists (durations, chapters, sizes, tracks, encryption) as JSON in one pass
engine/bin/ffmpeg, ffprobe Remux-only ffmpeg 8 build with the dvdvideo demuxer, statically linked against patched libdvdread/libdvdnav
engine/patches/ Spinarr's fixes to ffmpeg (lossless AC3, 5× faster real-drive reads, short Blu-ray playlists), libdvdread and libbluray (memory safety, found by fuzzing)
libdvdcss Loaded at runtime from your install to read CSS-encrypted discs. Spinarr doesn't ship it.
app/ Electron shell: hardened main process, a preload bridge, and a plain HTML/CSS/JS UI

Build from source

You only need this to develop Spinarr. Everyone else should use the installers.

# 1. Build tools
#    macOS:   xcode-select --install && brew install meson ninja nasm pkg-config libdvdcss
#    Ubuntu:  sudo apt install build-essential meson ninja-build nasm pkg-config curl patch xz-utils bubblewrap
#    Windows: install MSYS2, then in its MINGW64 shell:
#             pacman -S make patch tar xz curl mingw-w64-x86_64-{gcc,meson,ninja,nasm,pkgconf}
# 2. Engine and app
npm install
npm run engine      # downloads verified sources, applies patches, builds engine/bin (~5 min)
npm start
npm run dist        # optional: build an installer for this system into dist/

On Windows, run npm run engine from the MSYS2 MINGW64 shell (CC=gcc sh engine/build.sh) and everything else from a normal terminal.

Testing

brew install ffmpeg dvdauthor cmake   # test-media generators (tsMuxeR is built from source) and independent oracle
npm run fixtures                # builds a set of test DVDs (NTSC/PAL, 4:3/16:9, 5.1, subtitles, multi-titleset, broken, hostile)
npm test                        # unit → security corpus → engine → end-to-end
npm run test:linux              # the same suite on Linux, in Docker (engine sandboxed by bubblewrap)

CI runs the full suite on macOS and Linux. On Windows it builds the engine, runs the unit tests and drives the real app end to end, using test discs authored on Linux. Every PR that touches packaging also builds all five installers.

Every feature maps to a user story with acceptance criteria: docs/USER_STORIES.md. Real-drive results: docs/HARDWARE_TESTING.md. See CONTRIBUTING.md for details.

Roadmap

  • Code-signed releases (the release pipeline is ready and only needs certificates; see docs/RELEASING.md)
  • An engine sandbox on Windows (AppContainer)
  • More real-hardware coverage (multi-angle, seamless branching, damaged discs, Windows and Linux drives)
  • Blu-ray: real-drive testing, multi-clip and multi-angle playlists, 3D/MVC (UHD stays out of scope)

Legal

Spinarr is for making personal backups of discs you own. Getting around copy protection may be restricted where you live (for example, DMCA §1201 in the US). Spinarr doesn't include libdvdcss or any decryption keys.

License

GPL-3.0-or-later. Spinarr links GPL components of ffmpeg and libdvdread. The UI bundles the Inter and Archivo typefaces (SIL Open Font License; licences in app/renderer/fonts/).

About

Open-source DVD and Blu-ray to MKV ripper with a sandboxed, hardened engine

Topics

Resources

Contributing

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages