Level every chapter to -16 LUFS with ffmpeg loudnorm

One ffmpeg line that brings a file to -16 LUFS integrated and -1.5 dBTP true peak without touching the video, the two-pass version for exact results, and the timestamp trap on upload.

ffmpegYouTubebeginner5 minunverified
# one pass, good enough for most chapters
ffmpeg -i chapter.mp4 -af loudnorm=I=-16:TP=-1.5:LRA=11 -c:v copy chapter.lv.mp4

# two passes, exact: measure first
ffmpeg -i chapter.mp4 -af loudnorm=I=-16:TP=-1.5:LRA=11:print_format=json -f null -

# then apply the measured values from the JSON
ffmpeg -i chapter.mp4 -af loudnorm=I=-16:TP=-1.5:LRA=11:measured_I={input_i}:measured_TP={input_tp}:measured_LRA={input_lra}:measured_thresh={input_thresh}:offset={target_offset}:linear=true,asetpts=N/SR/TB -c:v copy chapter.lv.mp4

Paste into your assistant as the first message of a new chat; fill the braces first.

Steps

  1. Run the measure pass; copy input_i, input_tp, input_lra, input_thresh and target_offset from the JSON into the apply pass.
  2. Check with ffprobe that the output duration equals the input; a change here means the audio clock moved.
  3. Level each chapter of a long film separately, before joining them.

Example

Unlevelled neighbouring chapters of one long film differed by 9 dB. After loudnorm at I=-16 the whole cut played at one level from start to end.

Tips

  • Put `asetpts=N/SR/TB` last in the audio chain when the file was cut with -ss and joined with concat: loudnorm can leave packet timestamps crammed together, and YouTube and Instagram place audio by timestamp and play seconds of silence where your player sounded fine.
  • Verify on the copy the platform serves, not only on your file.
works withffmpeg: A terminal command you run yourself.
costFree. No API, no key.
statusUnverified: written from the technique, not yet run end to end by us.
licenseCC BY 4.0 for the text here; skills are MIT.
updated2026-11-01
for agentsloudness-normalize-minus-16-lufs-ffmpeg.md
#loudness#lufs#ffmpeg#loudnorm#mastering#delivery

Related

Music & sound intermediate

Voice cleanup checklist: room tone, de-ess, noise gate, in that order

Six passes that turn a phone or lav recording into a usable voice track, each with the ffmpeg filter and a starting parameter to adjust by ear, in the order that keeps the gate off word endings.

ffmpegCapCut / any editorBy hand
Music & sound intermediate

Live music in frame: one continuous audio span, picture cuts on top

When a band or a busker is in the shot, keep one unbroken stretch of that clip's audio under the whole scene and cut only the picture; cut the audio per shot and the beat restarts.

ffmpegCapCut / any editorClaude Code
Music & sound intermediate

Score with a hole, not ducking, where something plays live

Cut the score to silence under live music, a laugh or a knock instead of ducking it; ducking is audible, a hole is not. The rule, the measured levels and the ffmpeg line.

ffmpegCapCut / any editorClaude Code
Claude Code skills advanced

Edit real footage into a film with the agent as the editor (/video-edit)

Edit real footage into a film with the agent as the editor — read the day's speech as text, write the cut as a script, lay cutaways that match the words, score it, strip other people's music, and…

Claude Code
Music & sound advanced

Strip other people's music before upload with Demucs and ffmpeg

Car radio, shop speakers and festival stages trigger Content ID. Split the soundtrack into stems, find the music on drums plus bass, keep the voice, replace the music, rebuild audio only.

ffmpegClaude CodeBy hand
Music & sound intermediate

Beat-sync cutting: cut on the beat, not on every beat

A rule and an agent prompt for cutting to music from a list of beat timestamps: cuts land on beats, phrases get room to breathe, and the best shot is held through the hook.

Claude CodeClaudeChatGPT