Build IMF packages for
streaming deliveries

Encode finished masters on the CPU or GPU and package them into validated IMF deliverables for Netflix, Disney+, and HBO Max.

Download for free See what it does

Download the desktop app

Install, drop in your master, pick a delivery target, and build. Free and open source.

🪟

Windows

Installer .msi / .exe

Download latest
🍎

macOS

.dmg, Apple Silicon

Download latest
🐧

Linux

.AppImage / .deb / .rpm

Download latest

Free and open source under the AGPL. No licence key, no seat limits, no subscription.

Prefer the command line?

Every build, validation, and delivery step is also a command-line tool for scripting and render-farm use. Grab the CLI build from the latest release, or see Automation below.

Everything a streamer delivery needs

Grouped by the job in front of you, from finished master to signed, validated package.

Build delivery packages

📦

Create IMF App 2E packages

Turn a finished master, ProRes file, image sequence, or J2K frames into a standards-compliant IMF App 2E package. Illegal rasters and other refusals fail before the encode, not after an hour of JPEG 2000.

Delivery presets

One choice sets the right bitrate and constraints for Netflix, Disney+, HBO Max, cinema, broadcast, and archival, so you're not cross-checking spec sheets by hand. Or name a bitrate directly.

⚙️

CPU or GPU JPEG 2000

Encode App 2E picture through Grok on all available CPU cores, or enable its accelerator plugin from the app or with --gpu. GPU encode and preview decode are available on Linux, Windows, and macOS. The job log records how many frames the device encoded.

🧩

Supplemental packages

Re-deliver only what changed. Swap a dub or add a subtitle track and ship a supplemental package that references the original by UUID, instead of re-sending the whole title.

🎬

IMF to DCP

Convert a single-composition IMP for theatrical delivery. Existing DCI-profile picture is rewrapped without an encode. App 2E picture is decoded from RGB, converted to cinema X'Y'Z', and re-encoded under a DCI profile.

Pre-build check

Every refusal create can make, plus advisory hints (true peak, first cue too early, line length), runs before anything encodes. The CLI stops without writing. The GUI shows a dialog you can build through.

✂️

Crop, trim, and stills

Crop, auto-crop, fill, deinterlace, denoise, rotate, and flip on the way in, then fit the result into an App 2E raster. Trim head and tail, hold a still for a duration, or shift the sound against the picture.

🎞️

ProRes delivery master

Export an IMP's picture and sound as a ProRes 4444 movie, fitted into a named 2K or 4K container without changing the package.

Subtitles and accessibility

📝

TTML and IMSC subtitles

Package TTML and IMSC timed text into your IMP, or convert SRT, SCC, ASS/SSA, FCPXML, and MKS captions to IMSC/TTML on the way in. ASS, FCPXML, and MKS keep their styling and placement. Burn the same cues into the picture as it encodes when you need a burnt master.

🗣️

Audio description tracks

Mix an AD narration track against the main mix with automatic ducking, or package an AD or HI track with the MCA labels streamers expect. Map and mix source channels into named lanes before they are labelled.

Preview before it ships

▶️

Source and package preview

Play the source or the finished IMP in the app. JPEG 2000 decodes in process through a CPU worker pool, or on the device when GPU mode is active. The App 2E tone map and gamut conversion use the same path. Other sources use libmpv.

📋

Play, inspect, queue

A finished build offers Play, Inspect (the Validate view, already running), and Reveal. Queue packages from Recent Projects or a finished build and they play one after another. Retitle a written IMP without re-wrapping essence.

HDR and immersive audio

🎨

Wide-gamut source conversion

Convert P3-D65, Rec.2020, or LogC sources to the Rec.709 RGB declared by an SDR App 2E track during the encode. A 3D LUT can supply another source-to-Rec.709 transform.

🌈

HDR/WCG essence metadata

create --hdr takes pq-bt2020, pq-p3d65, or hlg-bt2020, the App 2E COLOR.6, COLOR.7, and COLOR.8 combinations, and --mastering-display adds an ST 2086 mastering display. The transfer, colour, and mastering values are written into the MXF and mirrored in the CPL. A master whose own transfer tag disagrees with the preset is refused, so is an HDR master given without a preset, and a Dolby Vision 8.1 RPU fills the MaxCLL and MaxFALL you did not pass.

🎥

Dolby Vision and HDR10+

Side tools on an HEVC stream, not on the IMP. dv-extract and dv-inject move a Dolby Vision RPU with dovi_tool, dv-convert retargets profile 5 to 8.1 or to a profile 7 MEL, hdr10plus-extract writes HDR10+ metadata to JSON, and hdr10-inject re-encodes through x265 with MaxCLL and MaxFALL.

🎵

Dolby Atmos ADM import

Import a Dolby Atmos ADM Broadcast Wave master and wrap the audio for immersive-audio deliveries.

📊

Loudness measurement

Measure integrated loudness and true peak (EBU R128) so you catch a level problem before the platform's QC does, or adjust a WAV to a target loudness with a clip-safe true-peak guard.

QC and secure delivery

Validation and QC reports

Check package structure, signatures, and XML schemas, run Netflix Photon checks, and export a QC report as text, JSON, or HTML. The report reads the picture essence, including JPEG 2000 forensics and measured bitrate, with an optional complete scan for black and frozen runs.

🔐

Signing

Sign CPL, PKL, and ASSETMAP so recipients can verify the package is authentic and untampered.

📂

Watch folders

Point it at an incoming folder and every master that lands there is built into its own IMP, with a matching .wav or .ttml beside it joining the build. Each master then moves to done or failed, and a webhook can carry the result on.

How does IMF Wizard compare?

Feature comparison with easyDCP IMF Studio.

Feature IMF Wizard easyDCP IMF Studio
Create IMF packages (App 2E)
Desktop app
Command-line version
Structural + signature validation
Dolby Vision RPU tools (HEVC stream)
TTML / IMSC subtitles
Up to 4K resolution
Subtitle burn-in during encode
Preview playback with QC overlays
GPU JPEG 2000 encode and preview decodeLinux, Windows, macOS✓ (Windows)
IMF Wizard advantages
HDR10+ metadata extraction (HEVC stream)
EBU R128 loudness measurement
Audio description with ducking
Netflix Photon validation
Supplemental packages for re-deliveries
Watch folders
IMF-to-DCP conversion
Pre-build check and delivery hints
Linux support
Free and open source (AGPL)

Automate your delivery pipeline

Drive every step from the command line, kick off builds from a watch folder, or wire IMF Wizard into a render farm over its REST API.

# Raise every refusal and hint before committing to the encode
$ imfwizard create --title "My Feature" --video master.mov --check --output ./delivery/

# Build a Netflix delivery from a finished master on the Grok accelerator
$ imfwizard --gpu create \
    --title "My Feature" \
    --video master.mov --audio mix.wav \
    --profile netflix --output ./delivery/

# Build an IMP from every master that lands in an incoming folder
$ imfwizard watch /incoming/ --output ./packages/ --webhook-url https://pipeline/hook

# Serve the REST API for a render farm or pipeline
$ imfwizard serve --bind 0.0.0.0:9090

For developers

Build from source and hack on it. Contributions welcome.

1

Clone

git clone --recurse-submodules https://github.com/PostPerfection/imfwizard.git

2

Build the CLI

cd imfwizard/rust && cargo build --release

3

Run the desktop app

cd gui && pnpm install && pnpm tauri dev

4

Source and issues

Full build notes and dependencies on GitHub.