Encode finished masters on the CPU or GPU and package them into validated IMF deliverables for Netflix, Disney+, and HBO Max.
Install, drop in your master, pick a delivery target, and build. Free and open source.
Free and open source under the AGPL. No licence key, no seat limits, no subscription.
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.
Grouped by the job in front of you, from finished master to signed, validated package.
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.
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.
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.
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.
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.
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, 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.
Export an IMP's picture and sound as a ProRes 4444 movie, fitted into a named 2K or 4K container without changing the package.
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.
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.
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.
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.
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.
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.
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.
Import a Dolby Atmos ADM Broadcast Wave master and wrap the audio for immersive-audio deliveries.
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.
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.
Sign CPL, PKL, and ASSETMAP so recipients can verify the package is authentic and untampered.
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.
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 decode | Linux, 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) | ✓ | ✗ |
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
Build from source and hack on it. Contributions welcome.
git clone --recurse-submodules https://github.com/PostPerfection/imfwizard.git
cd imfwizard/rust && cargo build --release
cd gui && pnpm install && pnpm tauri dev