EN | FR
ITU-R BS.1770-4 • EBU R128 • TRUE-PEAK 4X

True Peak vs Sample Peak: Why -1 dBTP Matters

Your DAW meter says 0 dBFS. Your file still clips. The reason is inter-sample peaks — and that's why every streaming standard requires -1 dBTP headroom.

If you only watch sample peaks, you're missing half the picture. A digital sample is a dot. The analog waveform that comes out of a phone, laptop, or Bluetooth speaker is a smooth curve that goes between those dots. True Peak (dBTP) measures that curve.

What sample peak actually measures

Sample peak — dBFS — is simple: find the sample with the largest absolute value.

sample_peak = max(|sample[i]|) for all i
dBFS = 20 * log10(sample_peak)

It's cheap, fast, and what every DAW meter shows by default. Problem: it assumes the waveform tops out at the sample points. In reality, a DAC (digital-to-analog converter) doesn't output stair-steps. It reconstructs using sinc interpolation, which rebuilds a continuous waveform.

When two high-level samples of opposite polarity or same polarity are close together — say 0.99, 0.99 at 44.1 kHz — the reconstructed curve will overshoot above 0.99. That overshoot can hit 1.02, 1.10 or more. That's an inter-sample over. In dBFS it never existed. In analog it clips.

The dangerous gap: inter-sample clipping

Picture this: 0 dBFS sine wave at 10 kHz, sampled at 44.1 kHz. Only 4.4 samples per cycle. If the true peak of the sine falls exactly between two samples, both samples read -0.2 dBFS. Your meter is happy. Your analog output is +0.6 dBFS and clips the output op-amp.

Cheap consumer DACs, phone adapters, and Bluetooth codecs don't have headroom above 0 dBFS. They hard-clip. You hear it as harsh, crackly distortion on the loudest transients — often mistaken for a bad limiter.

Rule of thumb: Loud, bright masters at -6 LUFS can show 1.5–3 dB of inter-sample overshoot even if sample peak is exactly -0.1 dBFS. At -14 LUFS integrated, overs are typically 0.2–0.8 dB. This is why Spotify's -14 LUFS target naturally helps.

How true peak is measured: 4x oversampling per ITU-R BS.1770-4

EBU R128 doesn't invent true-peak. It references ITU-R BS.1770-4 Annex 2. The algorithm is precise:

  1. Upsample 4x using a low-pass interpolator. 44.1 kHz → 176.4 kHz, 48 kHz → 192 kHz. Higher sampling means peaks between original samples become samples.
  2. Filter with a 12.04 kHz? No — true-peak block uses a simple 2-stage polyphase: first attenuation is DC gain correction for high-shelf, then precise interpolation.
  3. Find max absolute value in the oversampled stream, report as dBTP: 20*log10(max_oversampled) / fullscale

The reference implementation in BS.1770 specifies a 48-tap or similar interpolating filter with exact coefficients to ensure every meter agrees within 0.1 dB. JSM Loudness implements the exact coefficients — not a cheap biquad approximation — which is how we hit -14.05 LUFS on the EBU reference set and true-peak within 0.1 dB of EBU Mode test vectors.

4x is the minimum. Some hardware uses 8x or 16x, but ITU standardized 4x as the balance between accuracy and CPU. 4x catches >99% of real inter-sample peaks within 0.2 dB error.

Why -1 dBTP, not 0 dBTP?

Three engineering reasons stack up:

MeterWhat it catchesStreaming safe?
Sample Peak dBFSDigital samples onlyNo — misses 0.5–3 dB overs
True Peak 4x dBTPInter-sample overs + DAC curveYes when ≤ -1.0
True Peak 8xIdentical to 4x +0.1 dB maxReference

Bottom line: 0 dBTP is like parking a car with 0 cm to the wall. It might not touch now, but any conversion will. -1.0 dBTP parks with margin.

Real example: 0 dBFS can be +0.7 dBTP

Take a 44.1 kHz master slammed to -0.1 dBFS sample. Import it into any EBU R128 meter (including JSM):

Integrated:  -8.2 LUFS
Sample Peak: -0.1 dBFS
True Peak:   +0.6 dBTP  ← inter-sample over
PLR:          8.1 dB

That +0.6 dBTP means your track will audibly clip when Spotify transcodes to Ogg Vorbis or AAC and on iPhone dongles. Turn down or set your limiter true-peak ceiling to -1.0 dBTP before export.

For a streaming master at -14 LUFS integrated, you usually see:

Integrated: -14.0 LUFS
Short-term max: -12.1 LUFS
True Peak:    -1.1 dBTP  ← safe, no normalization distortion
LRA:          6.2 LU

That aligns with how LUFS gating works and keeps LRA and PLR healthy for mobile playback.

How to fix true-peak overs

How JSM Loudness measures true-peak

JSM Loudness runs 100% in your browser — no upload. We implement:

Verification: EBU reference WAVs should read -1 dB offset between 30? No — our verification: we report -14.05 LUFS ±0.05 on EBU 1k tone, matching libebur128 and EBU mode. True-peak on EBU TP sine reads -3.01 dBTP as specified.

Privacy-first: Quebec Law 25 compliant

Audio never leaves your device. Under Quebec Law 25, JSM Loudness processes your file locally via WebAudio / WebAssembly, stores no audio on servers, and only uses anonymous analytics (GA4) if you accept consent. No account, no upload — safe for unreleased masters. See Privacy and Cookies.

Related reading

Check your true-peak now
Drag your WAV/AIFF. Instant integrated LUFS, true-peak dBTP, LRA/PLR. 100% browser.
Open Analyzer Learn LUFS

FAQ

What's the difference between dBTP and dBFS?

dBFS is the peak of digital samples. dBTP is the estimated analog peak after reconstruction. dBTP is always ≥ dBFS. A file at -0.3 dBFS can be +0.5 dBTP.

Why does my limiter show 0 dBFS but true peak shows +1.2 dBTP?

Your limiter likely measures sample peaks only. Loud, fast transients reconstruct higher between samples. Switch limiter to ISP / True-Peak mode and set ceiling to -1.0 dBTP.

Is -1 dBTP required for Spotify and YouTube?

Yes. EBU R128, Apple Digital Masters, and all major distributors require ≤ -1.0 dBTP. It prevents clipping during AAC/MP3 transcoding and on consumer DACs. It's cheap insurance.