Convert Dolby Vision Profile 7 MKV files to Profile 8.1 for universal playback compatibility.
Most streaming devices (Apple TV, Shield, Amazon Fire*, etc.) don't support Profile 7's Enhancement Layer. They either fall back to HDR10 or blindly strip the layer, potentially ruining the picture.
dovi_convert analyzes files first, converts only what's safe, and preserves dynamic metadata for correct Dolby Vision playback.
Version 8.2 finally introduces the Backup & Restore feature. It allows you to backup the Dolby Vision enhancement layer before or during a conversion. You can then delete the original file and, as long as you keep the converted file, restore the original at any time using the backed up EL. Benefits: Save tons of disk space. Instead of keeping the original file around, you just store the enhancement layer, which is much smaller.
Make sure to read the Changelog for full details.
Important
Reading the documentation before you begin is highly recommended.
Full documentation, guides, and command reference:
- macOS (tested on macOS 26)
- Linux (any modern distribution)
- Windows (via WSL2 or Docker)
- Python 3.8+
- ffmpeg, mkvtoolnix, mediainfo, dovi_tool
Missing dependencies are detected and can be installed automatically.
Homebrew (macOS/Linux):
brew install dovi_convertManual Installation:
curl -sSLO https://github.com/cryptochrome/dovi_convert/releases/latest/download/dovi_convert.py
chmod +x dovi_convert.py && sudo mv dovi_convert.py /usr/local/bin/dovi_convertdocker run -d \
--name=dovi_convert \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/Berlin \
-p 7681:7681 \
-v /path/to/media:/data \
--restart unless-stopped \
cryptochrome/dovi_convert:latestservices:
dovi_convert:
image: cryptochrome/dovi_convert:latest
container_name: dovi_convert
environment:
- PUID=1000 # Change to required User ID, if needed
- PGID=1000 # Change to required Group ID, if needed
- TZ=Europe/Berlin # Change to your timezone
volumes:
- /path/to/media:/data # Change to your media directory
ports:
- 7681:7681 # Change left port to your desired port (e. g. 8080:7681)
restart: unless-stoppedAccess the web terminal at http://<your-docker-host>:7681.
dovi_convert scan # Analyze files in current directory
dovi_convert convert Movie.mkv # Convert a single file
dovi_convert convert /path/to/media # Batch convert directory- Not all Profile 7 files should be converted. Some use the Enhancement Layer for brightness expansion, which causes incorrect tone mapping if removed.
- The tool detects these "Complex FEL" files and skips them by default. Don't use
--forceunless you understand the consequences. - FEL can also contain film grain, noise, and color data. Retaining this data during conversion requires re-encoding, which is out of scope. Your player can't decode FEL anyway, so this data is already inaccessible. You do retain the Dolby Vision dynamic metadata (RPU).
- Original files are backed up automatically. The
--deleteflag removes them permanently. - Read Before You Start for the full explanation.
- CHANGELOG.md - Version history
- ROADMAP.md - Planned features
- dovi_tool by quietvoid
- dovi_scripts by R3S3t9999 - for inspiration and knowledge (the OG)
- FFmpeg
- MKVToolNix
- MediaInfo