CoProducer Measure a mix
A brass console fader resting partway down its slot on a dark gold console over gold-veined black marble, a gold light trail curving down and fading into the dark, a studio monitor glowing cyan and magenta behind.

Mastering · 29 October 2026 · 7 min

Fade-out drops off a cliff? Curve it, and fade after the limiter

NoDAW Labs · Lacquer Vol. 06

A fade-out that seems to hang and then suddenly disappear is usually a straight-line fade, often with a limiter after it. A linear fade only drops 6 dB in its first half, then falls from −20 dB to silence in the last tenth. A limiter that comes after the fade cancels out the first few dB of it. Use a curved fade that falls more evenly in decibels, and put the fade after the limiter so it moves from the first second.

The outro is the vibe. You draw a long fade so the song can float away. On playback it doesn’t float. For the first several seconds nothing seems to happen, then near the end it suddenly drops out like someone pulled the cable.

Two things usually cause that, and they often show up together: the shape of the fade, and where it sits in the chain.

A straight line isn’t straight to your ears

Most DAWs draw a linear fade by default. It turns the volume down in equal steps of amplitude. Our ears don’t hear amplitude in equal steps. We hear something much closer to decibels, and in decibels a linear fade is lopsided. Here’s what fade_check.py measured for a 10-second fade in a few common shapes:

#!/usr/bin/env python3
"""Fade-out shapes, and what a limiter does to a fade drawn in front of it.
  python3 fade_check.py
Part 1: level (dB) at each tenth of a 10-second fade for three common shapes.
Part 2: a dense synthetic 'master' driven 8 dB into a simple peak limiter, faded linearly over 10 s
either before the limiter or after it; short-term level per second, relative to the unfaded master."""
import numpy as np

SR = 48000
def db(x): return 20 * np.log10(np.maximum(x, 1e-12))
SHAPES = {"linear":        lambda p: 1 - p,
          "equal-power":   lambda p: np.cos(p * np.pi / 2),
          "dB to -40":     lambda p: np.where(p < 1, 10 ** (-40 * p / 20), 0.0),   # even steps in dB, then cut
          "dB to -60":     lambda p: np.where(p < 1, 10 ** (-60 * p / 20), 0.0)}

def limiter(x, ceiling_db=-1.0, rel_ms=100):
    c = 10 ** (ceiling_db / 20); need = np.minimum(1, c / np.maximum(np.abs(x), 1e-12))
    r, g, out = np.exp(-1 / (SR * rel_ms / 1000)), 1.0, np.empty_like(x)
    for i, n in enumerate(need):
        g = n if n < g else r * g + (1 - r) * n            # instant attack (clips nothing), smooth release
        out[i] = g
    return x * out

def master(seconds):
    rng = np.random.default_rng(7); n = int(SR * seconds); t = np.arange(n) / SR
    x = rng.standard_normal(n) * 0.25
    beat = (np.sin(2 * np.pi * 2.333 * t) > 0.6).astype(float)      # 140 BPM thumps on top
    x += 0.9 * beat * np.sin(2 * np.pi * 55 * t)
    return x / np.abs(x).max() * 10 ** (7 / 20)                      # peaks 8 dB over a −1 dBFS ceiling

def rms_db(x): return 10 * np.log10((x ** 2).mean() + 1e-20)

def main():
    print("Part 1: level at each point of a 10 s fade (dB)")
    print("  time  " + "".join(f"{k:>13}" for k in SHAPES))
    for p in np.linspace(0, 1, 11):
        print(f"  {p * 10:4.0f} s" + "".join((f"{v:>13.1f}" if v > -200 else f"{'silent':>13}") for v in (db(np.atleast_1d(f(p)))[0] for f in SHAPES.values())))
    print("  share of the fade below -20 dB" + "".join(f"{(db(f(np.linspace(0, 1, 10001))) < -20).mean() * 100:>12.0f}%" for f in SHAPES.values()))

    x = master(10); ramp = 1 - np.arange(len(x)) / len(x)
    ref = limiter(x)
    before, after = limiter(x * ramp), ref * ramp
    print("\nPart 2: linear 10 s fade on a master limited ~8 dB (dB vs the unfaded master)")
    print("  second   fade after limiter   fade before limiter")
    for s in range(10):
        sl = slice(s * SR, (s + 1) * SR)
        print(f"  {s:>4}-{s + 1:<2} {rms_db(after[sl]) - rms_db(ref[sl]):>14.1f} {rms_db(before[sl]) - rms_db(ref[sl]):>20.1f}")

if __name__ == "__main__":
    main()
$ python3 fade_check.py
Part 1: level at each point of a 10 s fade (dB)
  time         linear  equal-power    dB to -40    dB to -60
     0 s          0.0          0.0          0.0          0.0
     1 s         -0.9         -0.1         -4.0         -6.0
     2 s         -1.9         -0.4         -8.0        -12.0
     3 s         -3.1         -1.0        -12.0        -18.0
     4 s         -4.4         -1.8        -16.0        -24.0
     5 s         -6.0         -3.0        -20.0        -30.0
     6 s         -8.0         -4.6        -24.0        -36.0
     7 s        -10.5         -6.9        -28.0        -42.0
     8 s        -14.0        -10.2        -32.0        -48.0
     9 s        -20.0        -16.1        -36.0        -54.0
    10 s       silent       silent       silent       silent
  share of the fade below -20 dB          10%           6%          50%          67%

The linear fade is only 6 dB down at the halfway point. That’s about the difference between a verse and a chorus. Then it’s −14 dB at 8 seconds, −20 dB at 9, and silent at 10. In the last tenth of the fade it loses more than it lost in the first nine. That’s the cliff.

Equal-power is even more top-heavy. It’s built for crossfades, where two sounds need to keep the total level steady, not for ending a song. At 7 seconds it has only dropped 6.9 dB.

The curves that fall evenly in decibels sound like a steady walk away. But look at the bottom row. A fade that goes evenly to −60 dB spends 67% of its length below −20 dB. On a phone in a car, that part is basically silent, so a 10-second fade ends after about three. Going evenly to −40 spends half its length down there. A good fade-out usually lives between the straight line and those curves. Most DAWs offer exponential, logarithmic or adjustable curve shapes for exactly this.

The limiter that eats your fade

The second problem is sneakier. If the fade is drawn on the mix bus, or on the tracks, and there’s a limiter after it on the master, the limiter fights the fade. While the music is hitting the ceiling, turning it down just means the limiter does less work. The level coming out barely changes.

We built a dense synthetic master, drove it about 8 dB into a simple peak limiter with a −1 dBFS ceiling, and applied the same 10-second linear fade in both places. This is the level of each second compared with the unfaded master:

Part 2: linear 10 s fade on a master limited ~8 dB (dB vs the unfaded master)
  second   fade after limiter   fade before limiter
     0-1            -0.4                 -0.1
     1-2            -1.4                 -0.4
     2-3            -2.5                 -0.8
     3-4            -3.7                 -1.2
     4-5            -5.2                 -1.8
     5-6            -6.9                 -3.0
     6-7            -9.1                 -4.5
     7-8           -12.0                 -7.7
     8-9           -16.2                -12.0
     9-10          -24.7                -19.8

With the fade after the limiter, the first three seconds drop 0.4, 1.4 and 2.5 dB. With the fade before it, they drop 0.1, 0.4 and 0.8 dB. Halfway through, the faded-before version is only 3.0 dB down instead of 6.9. The limiter quietly cancelled the first few dB of the fade, then had nothing left to cancel, and the rest of the fade happened all at once.

There’s a sound to it too. As the limiter lets go, the drums get some of their punch back, so the start of the fade can sound like the song opens up a bit before it gets quieter. That’s rarely what anyone wants in an outro.

How to fade a song so it sounds like a fade

  1. Put the fade last. Automate a gain plugin after the limiter on the master, or the master fader if your DAW puts it after the inserts. Then the fade starts moving the moment it starts.
  2. Pick a curved shape. Start with an exponential or logarithmic fade and adjust it until the level seems to fall at the same speed the whole way. Trust your ears at a normal listening level, not the shape on screen.
  3. Make the end land in silence. If your curve stops at −40 or −50 dB, add a short final fade to zero so there’s no click at the end. The same reason is covered in clicks at your edit points.
  4. Let the effects fade with the music. Draw the fade in the session, so reverb and delay tails fade with everything else instead of ringing on after the music stops.
  5. Sending it to mastering? Many engineers would rather get the song without the fade and do it themselves after their limiter. Send the unfaded version and note where the fade should start and how long it should be.

Check that the body didn’t change

Moving the fade to the end of the chain shouldn’t change anything before the fade starts. To be sure, bounce the old and new versions and drop both into the CoProducer analyzer. It reads integrated LUFS and true peak on your own computer, so you can confirm the song itself still measures the same and only the outro changed. On an album, how long the fade takes also sets up the gap before the next song, which album consistency is a batch problem gets into.

Length is taste. Some fades take four bars, some take thirty seconds. Whatever length you pick, the shape and the order decide whether people hear a fade or a cutoff.

Why does my fade-out sound abrupt at the end?
A linear fade drops only 6 dB in its first half, then falls from −20 dB to silence in the last tenth. A limiter after the fade makes it worse by cancelling the first few dB. Use a curved fade and put it after the limiter.
Should I fade out before or after the limiter?
After. In our test, a fade placed before a limiter working about 8 dB moved only 0.8 dB in its first three seconds, against 2.5 dB when the fade came after the limiter.
What fade curve is best for a song fade-out?
One that sounds like the level falls at a steady speed, usually somewhere between linear and an even-in-decibels curve. Exponential or logarithmic presets are a good starting point. Equal-power curves are made for crossfades, not fade-outs.
Should I fade out the song before sending it to mastering?
Ask your engineer. Many prefer the unfaded version with a note on where the fade starts and how long it lasts, so they can fade after their own limiter.

A free one-pager

The checklist we run before every release.

Loudness, true peak, mono, tails, export settings and the metadata basics, on one page. Leave your email and it opens straight away, or read it here first. No email needed for that.