FFmpeg recipe

FFmpeg: Normalize Loudness with EBU R128 (loudnorm)

Loudnorm implements the EBU R128 standard: perceptual loudness normalization (not peak normalization). Required by Spotify, Apple Podcasts, and TV broadcasters.

Command

ffmpeg -i input.mp4 -af loudnorm=I=-16:TP=-1.5:LRA=11 -y output.mp4
Prefer no terminal?
Use the Audio Normalizer in your browser
Open Audio Normalizer →

What each flag does

-iInput file. Can be a video, audio, or image. Repeat for multiple inputs.
-afAudio filter chain. e.g. silenceremove, loudnorm.
-yOverwrite output file without confirmation.
I=-16Integrated loudness target (LUFS). -16 = podcast standard, -14 = Spotify, -23 = TV broadcast.
TP=-1.5Maximum true peak (dBTP). -1.5 leaves headroom for codec-induced clipping.
LRA=11Loudness range. 11 LU is standard for spoken content.

Notes & gotchas

  • For two-pass loudnorm (much more accurate), see the FFmpeg wiki: https://trac.ffmpeg.org/wiki/AudioVolume.
  • For YouTube, target I=-14 to match algorithm-normalized playback.

Check it worked

ffmpeg -i output.mp3 -af loudnorm=print_format=summary -f null -

Measured loudness within about half a LU of your target.

What to change

I=-16 is the streaming target-16 LUFS suits podcasts and web video. -14 is Spotify, -23 is EBU broadcast. Pick the one your destination asks for.
Two passes are more accurateA single pass estimates as it goes. Measure first, then pass the measured values back in, and the result lands on the target.
TP=-1.5 is headroom, not loudnessTrue peak below -1 dB leaves room for the distortion that lossy encoding adds afterwards.

If it fails

The result is still not at the target loudness.

Why: Single-pass loudnorm estimates as it goes and cannot correct what it has already written.

Fix: Run two passes: measure with print_format=json, then pass the measured values back in on the second run.

Quiet passages became noisy.

Why: Normalising raised the whole signal, room noise included.

Fix: Reduce the noise first with afftdn or arnndn, then normalise.

Related recipes