Dither When Exporting to 16-Bit: Distortion, Noise Modulation and Noise Shaping, Measured

Management Summary
Dither is a tiny amount of noise added when music is saved with fewer available volume steps, such as a final 16-bit audio file. It replaces patterned rounding distortion with a more even background noise, which matters especially in quiet fades and lingering reverb. Different methods distribute that noise differently; reducing it in a sensitive hearing range can increase the total elsewhere. Dither belongs at the final reduction in precision and does not repair distortion already present in the music.
Contents
Dither is very quiet noise added when an audio signal is rounded to a lower bit depth. It prevents that rounding from creating a repeatable pattern tied to the music. The trade-off is a small additional noise floor. Dither does not repair clipping or make a mix more powerful.
A 16-bit PCM file stores each sample on one of 65,536 levels. The gap between adjacent levels is one LSB, short for least significant bit. On a scale where full amplitude is 1, that gap is 1/32,768. Quiet fades and reverb tails can pass through only a few of these levels, so rounding matters more there than in a loud chorus.
What the three basic choices change
- No dither: the same input value always rounds to the same output value. The resulting error can form additional tones related to the signal.
- RPDF: random values are uniformly distributed across a range one LSB wide. This removes the signal-dependent average error in the ideal, non-overloaded quantizer. The amount of noise can still change with the signal.
- TPDF: the triangular distribution is two LSB wide from minimum to maximum. In the standard non-subtractive arrangement, both average error and error power are independent of the input. Non-subtractive means that the added noise stays in the delivered file.
These statements concern the rounding stage, not distortion already present in the recording. The specified dither level matters: an arbitrary amount of triangular noise does not provide the same result. Overloading the output also invalidates the simple model.
Measurement setup
The following check used FFmpeg 7.1.5 on an aarch64 computer, mono 44.1 kHz float32 samples and conversion to signed 16-bit PCM. No sample-rate change was requested. The filter was aresample=osf=s16:dither_method=…. The measurement used -cpuflags 0 to disable CPU-specific optimized paths.
The test included 41 constant levels from 0 to 2 LSB, one second each; ten-second 1 kHz sine tones at −60 and −96 dBFS peak; and ten seconds of digital silence. Constant-level statistics used the middle 0.8 seconds. Tone and noise analysis used the middle eight seconds. Noise values are RMS amplitudes relative to full amplitude, not a loudness rating or a listening-test result.

A quiet sine can be damaged without dither
At −96 dBFS, the sine reached just over half an LSB. Without dither, only short pulses survived rounding. The 1 kHz fundamental was 3.67 dB below its intended level, and the third harmonic at 3 kHz was only 0.87 dB below that fundamental. At −60 dBFS, all other components from 20 Hz to 20 kHz together were 38.33 dB below the fundamental.
With RPDF or TPDF, the −96 dBFS fundamental stayed within 0.04 dB of its intended level in this test. This does not mean the noise vanished: TPDF replaced the signal-dependent rounding pattern with a substantially steadier noise floor.
Why TPDF is steadier than RPDF
For the constant inputs, RPDF output had a standard deviation from 0 to 0.50 LSB. Standard deviation describes the spread around the average. At an exact integer level, this test produced no noise; halfway between two levels, the spread reached 0.50 LSB. A fading signal therefore encounters different amounts of noise.
With TPDF, the spread remained between 0.49 and 0.50 LSB across those inputs. Its ideal total error RMS is 0.5 LSB, or about −96.3 dBFS at 16 bits. Digital silence measured −96.37 dBFS. The noise remains during pauses, but its level does not follow the input in the same way as RPDF.
Noise shaping moves noise between frequency ranges
Noise shaping feeds a filtered version of the rounding error back into the conversion. This can reduce noise where hearing is more sensitive while increasing it elsewhere. Lower noise in one band therefore does not mean lower noise overall. These figures describe the tested FFmpeg methods at 44.1 kHz:
| Method | Total noise, dBFS RMS | 20 Hz to below 4 kHz |
|---|---|---|
| TPDF | −96.37 | −103.84 |
| High-pass TPDF | −96.64 | −109.17 |
| Lipshitz | −84.09 | −120.68 |
| F-weighted | −77.84 | −119.87 |
| Shibata | −72.10 | −113.55 |
Lipshitz reduced noise below 4 kHz by about 16.84 dB compared with TPDF, while total noise rose by 12.28 dB. The high-pass TPDF method shifts the spectrum of the added noise; the named noise-shaping methods also use error feedback. FFmpeg can fall back to high-pass triangular dither when a requested shaping filter is unavailable at the chosen sample rate. Its warning output therefore matters.
A practical export path
- An unprocessed source is retained; further mastering uses 24-bit or 32-bit float files.
- EQ, limiting and sample-rate conversion precede the final reduction to 16 bits.
- One suitable dither stage accompanies that reduction. Simultaneously enabling dither in a plug-in and in the export dialog adds it twice.
- The final checks cover the exported file’s format, peaks, beginning and ending, followed by listening.
For FFmpeg, this example explicitly selects TPDF and writes a new 16-bit PCM WAV. -n prevents overwriting an existing output file. The input needs enough peak headroom to avoid overload.
ffmpeg -n -i input.wav -af "aresample=osf=s16:dither_method=triangular" -c:a pcm_s16le output.wav
FFmpeg’s resampler defaults to no dither unless a method is selected. FL Studio’s export checkbox is documented for 16-bit WAV and MP3, using shaped dither with most added noise above 10 kHz. The manual does not identify that filter, so the FFmpeg numbers cannot be presented as measurements of FL Studio. This checkbox is not used for its 24-bit or 32-bit float export.
Limits of the measurement
Constant values, sine waves and silence explain conversion behavior; they do not establish audibility for every song. No listening test or FL Studio export test was performed. An additional check of the current FFmpeg build with and without CPU optimizations did not reproduce a previously reported half-LSB DC offset. A CPU architecture alone is therefore insufficient to predict that offset.
Questions and answers
Does every operation on a 16-bit file require new dither?
No. A bit-exact copy does not change the samples. Many gain changes, effects and sample-rate conversions create values between the 16-bit levels and require rounding when saved back to 16 bits. The decision depends on whether the sample values actually changed.
Why avoid repeated dithering?
Another dither stage adds another error contribution. Two independent contributions with equal power have about 3 dB more combined power than either alone. This is not a guaranteed increase for every processing chain: correlation, filtering and different dither levels change the result. Keeping a higher-resolution working file avoids unnecessary repeated reductions.
Is 24-bit dither always useless?
No universal rule follows from the 16-bit test. The theoretical TPDF error at 24 bits is about −144.5 dBFS, usually far below playback-system noise. The converter, target format and required workflow still determine whether dither is applied. FL Studio’s documented checkbox behavior is a product-specific choice.