True Peak
True Peak estimates the highest level a signal will actually reach when it is played back. Digital audio is stored as a series of separate sample points; on playback those points are smoothed back into a continuous waveform. That reconstructed waveform can rise higher between two samples than either sample itself, and True Peak estimates that in-between maximum.
A file can have sample peaks below 0 dBFS and still clip after conversion or playback reconstruction. The part that pokes above the limit between the samples is the inter-sample peak (ISP). The visible sample points can look safe while the reconstructed analog-like waveform rises above the limit between those points. The unit is dBTP, decibels true peak: the same dB scale as sample peak, measured on the reconstructed waveform.
For choosing a ceiling and checking a master before delivery, see True Peak Safety. This page covers what the number is and how it is measured.
How Far Can the Reconstruction Rise?
A digital file is a series of points, not a complete curve. When a DAC (digital-to-analog converter) or encoder turns those points back into sound, it reconstructs the curve implied by the samples, and the curve can rise above the points. True-peak measurement estimates this by oversampling the signal (computing extra points between the stored ones) before checking peaks. How far the two readings differ depends on the material:
| Signal | Sample peak (dBFS) | True peak (dBTP) |
|---|---|---|
| Sine at a quarter of the sample rate, 45° phase | -3.01 | -0.09 |
| Square wave, amplitude 0.5 | -6.02 | -4.11 |
mixed-stems.wav | -1.1 | +0.2 |
drum.wav | -0.7 | +1.4 |
The last two rows are files that sit below 0 at sample level and above 0 once reconstructed. drum.wav looks safe at -0.7 and reconstructs about 2 dB higher. Typical material rises by roughly +0.5 to +1 dB; in harder cases, especially when low and high energy hit together, peaks can rise by around +2 dB.
The sine in the first row has a true peak of exactly 0 dBTP: its samples sit at 0.707 of full scale, and the curve through them reaches 1.0. The 4x meter reads -0.09 because its interpolation filter is not perfect, and higher factors land within about 0.1 dB either side of 0 (8x reads +0.04). Treat a true-peak reading as accurate to about a tenth of a decibel, and compare meters at the same oversampling factor.
Measure it in libsonare
The true-peak meter oversamples 4x by default and accepts 1, 2, 4, 8 or 16. The limiter that enforces a ceiling is the chain stage maximizer.truePeakLimiter; True Peak Safety shows it in use.
import { init, meteringPeakDb, meteringTruePeakDb } from '@libraz/libsonare';
await init();
const samplePeak = meteringPeakDb(samples, sampleRate); // dBFS
const truePeak = meteringTruePeakDb(samples, sampleRate); // dBTP, 4x oversamplingimport libsonare as sonare
audio = sonare.Audio.from_file("song.wav")
sample_peak = audio.peak_db()
true_peak = audio.true_peak_db()sonare-cli meter song.wav # native CLI only: includes sample peak and true peak (--oversample sets the factor)Relationship to LUFS
The true-peak ceiling is a separate constraint from the loudness target. Raising the ceiling because you want more LUFS is a risky trade: it buys a little level now and pays for it with clipping after codec conversion or device-side reconstruction. How the loudness stage drives the limiter, and how far it is allowed to, is on Stereo, Limiter, and Loudness Controls.
Sample-Accurate Limiting
The limiter's output does not depend on buffer size, so a preview at any block length and an offline export of the same file agree sample for sample. The details are in the implementation notes below.
Implementation notes
True peak detection is different from sample peak detection: it oversamples the signal and takes the maximum of the reconstructed waveform rather than of the stored sample points. libsonare performs that oversampling with a polyphase interpolation filter, evaluating the reconstruction at each intermediate phase — the polyphase filter is how the oversampling is done, not an alternative to it. The meter supports 1x, 2x, 4x, 8x, and 16x, and the demo defaults to 4x.
The limiter enforces its ceiling per sample at the oversampled rate, and every stage inside it — lookahead, gain smoothing, the guard after decimation — is sample-serial and carries its state across calls. Nothing in the output is derived from a whole-block statistic, so the same material limited in 256-sample callbacks, in 16384-sample blocks, in one offline pass, or in ragged splits that land mid-transient comes out identical. A render is reproducible only if the host's buffer size is not an input to the sound; a limiter that rescaled each block by that block's own maximum would make its level a function of the block size.
The ceiling guarantee belongs to the default polyphase path, which limits the oversampled signal and decimates the result. The applyGainAtInputRate option applies the gain envelope to the base-rate signal; it is best-effort and does not guarantee the inter-sample ceiling. Leave it off. A limiter running at 8x or 16x also keeps a 4x reading of its output under the ceiling, and a channel the detector excludes (the LFE channel) is held under the ceiling without steering the gain.
An independent true-peak meter can read above the configured ceiling because the reconstruction filter and oversampling factor affect the estimate. One 4x-limiter / 8x-meter fixture measured about +0.02 dB; that is a fixture result, not a universal bound. The chain reports outputTruePeakDbtp at the limiter's factor. Record both the factor and the interpolation method when comparing meters, and validate the exported signal with the delivery meter and sufficient headroom.
Related: True Peak Safety, The Mastering Chain, LUFS