
Mixing · 28 October 2026 · 7 min
Why −18 dBFS? Gain staging into analog-style plugins
Gain staging still matters in a 32-bit float DAW because analog-modelled plugins react to how hard you hit them. Most are built so a signal around −18 dBFS RMS sits at their nominal level, 0 VU. Hit them 6 or 12 dB hotter and they add more distortion, mostly odd harmonics, and the effect stacks up across every plugin in the chain. Keep the average level near −18 dBFS going into each one, and use the plugin’s own drive control when you want the colour.
You load the same compressor emulation everyone raves about. On their videos it sounds thick and expensive. On your vocal it sounds a little fuzzy, a little crowded, and the meter barely moves no matter where you set the threshold. You start doubting your ears, then the plugin, then the whole mix.
Before you blame either, look at the level going in. If the vocal track is peaking near 0 dBFS and averaging around −8, you’re feeding that plugin about ten dB more than it was built to expect.
Float doesn’t clip. The plugins still care
Inside a modern DAW the mix runs in floating point, so a track can go over 0 dBFS and come back down with nothing lost. That part is true, and we measured it in how much headroom to leave for mastering. It’s why people say gain staging doesn’t matter anymore.
But a plugin that models a console, a tape machine or an old compressor isn’t just passing numbers along. It’s copying a circuit that behaves differently when it’s pushed. To do that, it has to decide what level counts as normal. Many of them treat a sine somewhere between −20 and −14 dBFS RMS as 0 VU, and −18 dBFS is the most common choice. The manual usually says which. Anything above that, the model starts leaning into its curve.
So the question isn’t whether the file will clip. It’s whether you meant to drive the circuit.
What one stage does at each level
To see it without any brand in the way, we wrote a plain saturation stage in drive_check.py: a slightly lopsided soft clipper, calibrated so −18 dBFS RMS is its nominal level. It’s a model, not a copy of any real plugin, but it bends the way analog-style stages tend to. Then we fed it a 55 Hz sine, roughly a low bass note, at six levels:
#!/usr/bin/env python3
"""How input level changes what an analog-style stage does to the sound.
The 'stage' is a slightly asymmetric tanh saturator, calibrated the way many analog-modelled
plugins are: a sine at -18 dBFS RMS is its nominal level (0 VU). It's a model, not any real plugin.
python3 drive_check.py run a 55 Hz sine from -30 to -6 dBFS RMS through the stage"""
import numpy as np
SR, F, NOMINAL, BIAS = 48000, 55.0, -18, 0.1
def stage(x):
g = 10 ** (-NOMINAL / 20) / 8.0 # dBFS -> internal level; nominal sits low on the curve
return (np.tanh(x * g + BIAS) - np.tanh(BIAS)) / g
def harmonics(y):
Y = np.abs(np.fft.rfft(y * np.hanning(len(y)))); k = int(round(F * len(y) / SR))
h = np.array([Y[n * k - 2:n * k + 3].max() for n in range(1, 10)])
return np.sqrt((h[1:] ** 2).sum()) / h[0], 20 * np.log10(h[1:5] / h[0])
t = np.arange(SR * 2) / SR
print(f"{'input':>10s} {'vs 0 VU':>8s} {'THD':>8s} {'2nd':>7s} {'3rd':>7s} {'4th':>7s} {'5th':>7s} {'level change':>13s}")
for lvl in (-30, -24, -18, -12, -9, -6):
x = np.sqrt(2) * 10 ** (lvl / 20) * np.sin(2 * np.pi * F * t)
y = stage(x); thd, h = harmonics(y)
change = 10 * np.log10((y ** 2).mean() / (x ** 2).mean())
print(f"{lvl:+5d} dBFS {lvl - NOMINAL:+6d} dB {100 * thd:7.2f}% " + " ".join(f"{v:7.1f}" for v in h) + f" {change:+10.2f} dB")
print("harmonics in dB below the 55 Hz fundamental; input is sine RMS")
# Five of those stages in a row, the way a channel strip, a bus and a tape plugin stack up.
print(f"\nfive stages in series: {'input':>10s} {'THD':>8s}")
for lvl in (-18, -12, -6):
y = np.sqrt(2) * 10 ** (lvl / 20) * np.sin(2 * np.pi * F * t)
for _ in range(5): y = stage(y)
print(f"{'':23s} {lvl:+5d} dBFS {100 * harmonics(y)[0]:7.2f}%")
$ python3 drive_check.py
input vs 0 VU THD 2nd 3rd 4th 5th level change
-30 dBFS -12 dB 0.22% -53.1 -76.0 -122.9 -150.5 -0.09 dB
-24 dBFS -6 dB 0.44% -47.1 -64.0 -104.9 -126.5 -0.10 dB
-18 dBFS +0 dB 0.91% -41.2 -52.0 -87.1 -102.6 -0.15 dB
-12 dBFS +6 dB 1.94% -35.5 -40.2 -69.5 -78.9 -0.34 dB
-9 dBFS +9 dB 2.94% -33.0 -34.4 -61.1 -67.3 -0.58 dB
-6 dBFS +12 dB 4.62% -30.7 -28.9 -53.2 -56.2 -1.02 dB
harmonics in dB below the 55 Hz fundamental; input is sine RMS
At its nominal level the stage adds 0.91% total harmonic distortion. Mostly it’s the second harmonic, 41.2 dB under the note, an octave up. That’s the warmth people are paying for. It’s quiet and it’s musical.
Push 6 dB harder and the distortion doubles, to 1.94%. At −6 dBFS, 12 dB over nominal, it’s 4.62%. The more telling number is the third harmonic. It climbs from −52.0 dB to −28.9 dB, 23 dB louder for 12 dB more input, and by −6 dBFS it’s louder than the second. Second harmonics tend to sound full. Third and higher sound edgier and fuzzier, and on a bass they pile up in the low mids right where the vocal lives.
Look at the last column too. At nominal the stage takes 0.15 dB off the level. At −6 dBFS it takes 1.02 dB. That’s the stage squashing the top of the wave, a bit of compression you never asked for.
It adds up down the chain
One plugin running hot is rarely the problem. A track usually goes through a channel strip emulation, then an EQ, then a compressor, then a bus with a console and a tape plugin. If each stage is modelled, each one adds its own harmonics to the last one’s. Here’s the same stage five times in a row:
five stages in series: input THD
-18 dBFS 4.13%
-12 dBFS 7.55%
-6 dBFS 13.48%
At −18 dBFS, five stages land at 4.13%. That’s about where one stage was when you drove it 12 dB too hard. Start 6 dB hot and it’s 7.55%. Start 12 dB hot and it’s 13.48%. That fuzz on the vocal wasn’t one bad plugin. It was a whole chain that never got a break.
How to set it up so plugins behave
- Trim at the start of the chain. Use the clip gain or a trim plugin first in the insert list so the track averages around −18 dBFS. A quick way to check: peaks on most sources land somewhere near −10 to −6 dBFS when the average is there.
- Look at the plugin’s own meter. If it has a VU meter, aim for the needle around 0 on the loud parts, not pinned to the right.
- Use the output knob too. If a plugin adds gain, take it back off at its output so the next one sees the same level the first one did.
- Drive on purpose. When you want grit, turn up the plugin’s drive or input and pull its output down by the same amount. Then the extra harmonics are a choice, and you can hear them without the level fooling you.
- Leave the master fader alone. If the mix bus is too hot, lower the tracks or the bus input, not just the last fader. Pulling the master after a console plugin doesn’t un-drive it.
Level-match before you decide
Here’s the trap. A hotter stage comes out louder, and louder almost always sounds better for the first few seconds. So when you A/B “clean” against “driven,” the driven one wins even when it’s worse. It’s the same thing covered in your mix sounds better loud and thinner quiet.
Bounce both versions, then drop each one into the CoProducer analyzer. It reads the integrated LUFS of each file, so you know exactly how much to turn the louder one down before you compare. Then listen again at the same loudness. If the driven one still sounds better, keep it. That’s taste, not volume.
When hot is right
None of this means hitting plugins hard is wrong. Lo-fi drums, distorted 808s, a vocal that’s supposed to sound like it’s coming through a broken radio: those want the curve. Some engineers push a tape emulation on the drum bus on purpose because the softened transients are exactly the sound. The difference is that they chose it, they know which stage is doing it, and they matched levels before deciding.
Set every stage near its nominal level by default. Then break the rule on one plugin, on purpose, where you can hear it.
- Why do people say to gain stage at −18 dBFS?
- Because many analog-modelled plugins treat a signal around −18 dBFS RMS as their nominal level, 0 VU. Feed them that and they behave like the hardware at its normal operating level. Feed them much more and they add extra distortion and compression.
- Does gain staging matter in a 32-bit float DAW?
- For clipping, mostly not: float keeps overs and turning down recovers them. For plugins that model analog gear, yes, because their sound depends on input level. In our model, going from −18 to −6 dBFS took distortion from 0.91% to 4.62%.
- Is −18 dBFS peak or average?
- Average. The usual meaning is a sine or an RMS level of −18 dBFS reading 0 VU. On real music, peaks will sit well above that, often somewhere around −10 to −6 dBFS.
- My plugin sounds distorted even at low settings. Why?
- Check the level going into it. If the track averages far above the plugin’s nominal level, the model is already being driven before you touch a knob. Trim the input first, then adjust.