Skip to content

macOS

freemkv comes in two builds for macOS. Install one or the other; both are the freemkv command and use the same ripping engine. Choose Apple Silicon or Intel for your Mac on the Download page.

  • freemkv (the app): a native desktop app plus every CLI command.
  • freemkv CLI: the command line only, as a single binary.
  • macOS 11 or later.
  • An Apple Silicon (aarch64) or Intel (x86_64) Mac. Homebrew picks the right build.
  • Homebrew for Apple Silicon, or a direct download for Intel Macs.
  • An optical drive. See OEM (stock) drives and Unlocked drives for drive support.
Terminal window
brew install --cask freemkv/tap/freemkv

This installs freemkv.app and puts freemkv on your PATH. Open freemkv, select a disc, image or folder, choose the titles and tracks, select an output location and press Rip. You can also drag a supported media file onto the window.

The app includes the full CLI: run freemkv disc:// mkv://Movie.mkv in any terminal; a bare freemkv opens the window.

Terminal window
brew install freemkv/tap/freemkv-cli
freemkv --version

A bare freemkv prints usage. See the CLI reference for ripping commands and options.

The freemkv cask and freemkv-cli formula both provide freemkv, so uninstall one before installing the other.

On the Download page, choose Intel x86_64 under the app or CLI section.

  • App: extract freemkv-x86_64-macos.zip and move freemkv.app to Applications.
  • CLI: download freemkv-cli-x86_64-macos, then run:
Terminal window
cd ~/Downloads
chmod +x freemkv-cli-x86_64-macos
./freemkv-cli-x86_64-macos --version

You can rename the CLI binary to freemkv and put it in a directory on your PATH. Homebrew also remains available on Intel Macs.

freemkv is ad-hoc signed, not notarized by Apple. If macOS blocks a downloaded app or CLI, try opening it, then go to System Settings → Privacy & Security → Open Anyway and confirm if you trust the download. Homebrew avoids this browser-download security prompt and verifies downloads against a pinned SHA-256 from the tap.

For a direct download, replace the app or CLI binary with the latest download to update, or delete it to remove.

Installation Update Remove
App brew update, then brew upgrade --cask freemkv/tap/freemkv brew uninstall --cask freemkv/tap/freemkv
CLI brew update, then brew upgrade freemkv/tap/freemkv-cli brew uninstall freemkv/tap/freemkv-cli

Upgrading from freemkv-app or the old freemkv formula: brew update renames them to freemkv (cask) and freemkv-cli (formula) automatically.

Settings and ripped movies are separate from program files, so updating or removing freemkv leaves them in place.

What Location
Desktop settings ~/Library/Application Support/freemkv/gui-settings.json
Desktop diagnostic log log.txt in the same folder, written only when the app’s log level is Verbose or debug messages are on
Native Library settings ~/Library/Application Support/freemkv-library/settings.json by default
Native Library login service ~/Library/LaunchAgents/io.freemkv.library.plist
Finished movies The output location you choose before ripping; the desktop app suggests ~/Movies
AACS keys See Decryption Keys
CLI diagnostic log Off by default; --log-level 3 writes log.txt in the current folder

To capture a CLI log at a specific path:

Terminal window
freemkv info disc:// --log-level 3 --log-file "$HOME/Desktop/freemkv-log.txt"

Use the path to your downloaded binary if you did not install it with Homebrew.

freemkv uses IOKit to obtain exclusive access to the optical drive. It unmounts the disc before direct reads, so the disc disappearing from Finder while ripping is expected. Devices appear as /dev/diskN.

Close other software using the disc. If access fails, reconnect the drive and try again.

For automatic ripping through a browser, see freemkv-library. Library can also run natively on macOS with access to USB optical drives.

Use a freemkv binary built with --features server; see the repository’s native Library installation instructions. This is separate from the regular Homebrew app or CLI installation above.

From a freemkv source checkout, run:

Terminal window
macos/install-library-service.sh /absolute/path/to/freemkv

Replace the example path with the absolute path to your executable. The installer creates a login service for your user and starts Library at localhost:8080/drives, unless you configured a different port. Existing Library settings and service environment variables are preserved.

The installer sets ProcessType to Interactive in the LaunchAgent. This gives Library app-level resource limits and avoids the slow network copies observed with the default service policy.

Run the installer again with the path to your server-enabled binary to apply the resource-policy fix. It updates the LaunchAgent without restarting a running Library. Wait for ripping, muxing and moving jobs to finish, then log out and back in to load the updated configuration.

To check the saved setting:

Terminal window
plutil -extract ProcessType raw "$HOME/Library/LaunchAgents/io.freemkv.library.plist"

The result should be Interactive. This checks the saved configuration; an already-running service still needs to be restarted as described above.

If Library moves files much more slowly than a copy from Terminal, check the login service’s resource policy first. In a same-file, same-destination SMB test, the default policy copied at about 11 MiB/s, while Interactive reached about 46 MiB/s, with the copy chunk size unchanged. These are measurements from one setup, not a guaranteed transfer rate; Wi-Fi, the server and storage still affect throughput.

The installer applies this setting automatically. No SMB or copy-buffer tuning is needed to apply this fix.

  • macOS blocks the app or CLI: see Opening a downloaded build, or install through Homebrew.
  • The disc disappears from Finder: freemkv unmounts it to take exclusive drive access.
  • No drive is available: check the connection, close other disc software and review Drive access.
  • Library moves slowly to a network share: see Slow moves to a network share and update the native login service.
  • A movie is missing: check the output location selected for that rip.