Nodes/ComfyUI_MusicTools/Music - LUFS Normalizer
ComfyUI Node

Music - LUFS Normalizer

Measure It Properly

By jeankassio·Created 9 months ago·Updated a day ago· 154
Music - LUFS Normalizer
  • audio
  • AUDIO
  • CURRENT_LUFS
target_lufs-14

Peak level lies to you. Two tracks can both hit exactly −1 dBFS and one sounds twice as loud, because loudness is an integrated measurement across time, not a peak. That's what LUFS (Loudness Units Full Scale, per ITU-R BS.1770) measures, and it's the standard the streaming platforms actually use. Music - LUFS Normalizer from ComfyUI Music Tools is the pack's proper implementation of that measurement and normalization - via the pyloudnorm library - and it's the node you want at the end of a mastering chain when "loud enough" needs to mean something.

The inputs and outputs

One input, one knob:

  • target_lufs (FLOAT, −60 to −5, default −14) - where you want the integrated loudness to land.

And two outputs, which is the part people overlook:

  • AUDIO - the normalized audio.
  • CURRENT_LUFS (FLOAT) - the measured loudness of your input before normalization.

That second output is genuinely useful. Wire it into a text/display node and you get a free loudness meter for the whole pipeline. Before you know what to set target_lufs to, you should know what you're at - and this gives you both numbers in one pass.

Sensible targets

The README lists common starting points (treat them as starting points, not rules):

  • Streaming music: around −14 LUFS
  • Spoken word / podcast: often −16 LUFS stereo
  • EBU R128 broadcast: −23 LUFS
  • Louder modern masters: numerically lower targets (like −9 or −10), which is a loudness-war choice, not a quality one

For generated audio, −14 is the right default and the pack's own default. It's loud enough to not sound quiet next to commercial tracks, and it leaves headroom that a true-peak limiter can actually use.

The gotcha: it can't make headroom it doesn't have

Here's the real-world failure mode, and the README flags it directly: normalization may finish below its target when peak headroom is insufficient. LUFS normalization applies a single gain - it can't conjure loudness out of a waveform that's already peaking. If your input is already at −1 dBFS but measures −10 LUFS, raising it to −14 LUFS would clip, and the node won't do that to you. The result: you asked for −14, you got −12, and the node is right.

The fix is the one-two punch: compress/limit first to even out dynamics and free up headroom, then normalize. That's exactly why the pack's master chain and Music Fix both put loudness management after compression with a true-peak ceiling in front. If you're using the standalone normalizer on something squashed, don't be surprised when it undershoots.

Install

Standard pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/jeankassio/ComfyUI_MusicTools.git
cd ComfyUI_MusicTools
python -m pip install -r requirements.txt

pyloudnorm is in the core requirements, so this works out of the box. Restart and it's under music. Pure measurement math, no models, instant on CPU.

Categorymusic

Inputs (2)

NameTypeDefaultDescription
audioAUDIO
target_lufsFLOAT-14-60–-5

Outputs (2)

NameTypeDescription
AUDIOAUDIO
CURRENT_LUFSFLOAT