Netflix Delivery Guide

IMF Application #2E · Dolby Vision HDR · -27 LKFS dialogue-gated

Highest ComplexityStreaming

All-or-nothing rejection model

Netflix rejects the entire IMP package if any single track fails inspection. A loudness error in your audio kills your video delivery. A caption schema issue blocks the whole package. No other major platform works this way — and most teams find out the hard way.

Validation Pipeline

Netflix Validation Pipeline

All-or-nothing rejection: If any track fails IaaS inspection, the entire IMP delivery is rejected — including tracks that passed individually. A bad audio file kills your video delivery.

Photon is open source. Netflix published their IMF validator at github.com/Netflix/photon. Pipewright can embed Photon locally — meaning your preflight runs against Netflix's own validation tool before you ever upload.

IMF Package Anatomy

IMF Package Anatomy

One CPL per language. Defines the play-order of all tracks. Netflix requires language code in CPL to exactly match Backlot Source Request — even case matters.

Technical Specifications

Video

FormatIMF (JPEG 2000)
Resolution (4K)3840×2160
Resolution (HD)1920×1080
Color EncodingRGB / 4:4:4 / Full Range
HDRDolby Vision™ (HDR10 not supported)
Colorimetry (HDR)P3 D65 / SMPTE ST 2084 (PQ)
Pixel Depth (HDR)12-bit
DV MetadataRequired per-frame (L1 minimum)
Frame Rates23.976 / 24 / 25 / 29.97 / 30 / 50 / 59.94 / 60
Frame StructureProgressive only
Aspect RatioOriginal — no cropping allowed

Audio

Sample Rate48 kHz
Bit Depth24-bit
Loudness Target-27 LKFS ±2 LU
Loudness MeasurementITU-R BS.1770-1 dialogue-gated
True Peak-2 dBTP max
Mix HierarchyAtmos (IAB) → 5.1 → Stereo (optional)
5.1 Channel OrderL / R / C / LFE / Ls / Rs
Atmos Room7.1.4 minimum, near-field
M&E MixRequired separately (Content Hub)
MCA LabelsMust match Netflix names exactly

⚠ Dialogue-gated ≠ Integrated LUFS

NLE loudness meters show integrated LUFS. Netflix measures dialogue-gated (-27 LKFS). A mix that reads "-27 LUFS integrated" can still fail Netflix loudness. Always measure with a dialogue-gated meter.

29.97/59.94 Frame Count Gotcha

At 29.97 or 59.94 fps, the total number of frames in each CPL Segment must be divisible by 5 to preserve integer audio samples. If your edit doesn't land on a multiple of 5 frames, you must trim 1–4 frames before IMF wrapping. Most NLEs don't warn about this.

Check: total_frames % 5 === 0 → required for 29.97 and 59.94 delivery

Captions & Timed Text

FormatTTML (.xml / .dxfp)
JapaneseIMSC1.1 (.xml) specifically
Max chars/line42 characters
Max lines2 lines
Min duration20 frames (5/6 sec @ 24fps)
Max duration7 seconds

Instant Rejections

Delivering SRT or VTT instead of TTML

Burned-in / hardcoded captions

TTML missing XML namespace declarations

Captions crossing shot changes

Characters outside Netflix Glyph List

Overlapping caption events in same region

Netflix IaaS Rejection Codes

21 codes documented

21 error codes

Hard fail Overridable PW catches

Select an error code to see details

Platform Complexity Comparison

Delivery Complexity by Platform

Netflix 4K HDR9 / 10
IMF PackageDolby VisionAtmos MixTTML CaptionsChannel LabelsPhoton GatePer-frame DV Metadata
Broadcast Syndication6 / 10
XDCAM/ProResOP47 CaptionsEBU R128VITC TimecodeBars & Tone
YouTube3 / 10
H.264/HEVCAAC AudioVTT Captions
TikTok2 / 10
H.264 VerticalAAC Audio

Netflix is 4× more complex than YouTube. Existing indie tools support YouTube and TikTok. Nobody has built the Netflix-grade preflight tool at an indie price point.

The NPFP Problem

Netflix Preferred Fulfillment Partners (NPFPs) are certified post houses that deliver on behalf of content partners. Their published rates show the true cost of Netflix delivery expertise:

$1,320

HD IMF Packaging

Feature length

$1,800

UHD/4K IMF Packaging

Feature length

$430

Timed Text / language

Per language

$170

Alt Audio / language

Per language

Pipewright's opportunity: Teams that CAN'T afford NPFP rates or don't have a post house relationship still need to deliver to Netflix. A $200/month preflight tool that catches the top 15 rejection codes before you upload is worth 15× the NPFP fee on a single prevented redelivery.

What Pipewright Validates

Pipewright catches

IMF package structure (ASSETMAP, PKL, CPL integrity)

CPL segment frame count divisibility at 29.97/59.94

Video resolution matches request

Frame rate native — no telecine/pulldown

ProRes vendor_id compliance

Commercial blacks (>2 sec) detection

Audio channel count vs. spec

Loudness: -27 LKFS dialogue-gated

True peak: -2 dBTP

MCA audio label matching

Caption format (TTML required)

TTML schema validation

Caption overlap detection

1-second head/tail black requirement

Language code exact-match

Burned-in caption detection

Roadmap / requires Netflix tools

Dolby Vision metadata per-frame validation (requires Dolby tools)

Dolby Atmos bitstream validation (requires Dolby encoder)

Photon IMF validation (integration planned — open source)

Photo-Sensitive Epilepsy testing (requires Harding engine)

Netflix Glyph List compliance (character-level)

Shot-change timing validation for captions