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.
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:
- 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.
- 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.
- 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:
- 1. D/A reconstruction headroom. Even a perfect 0 dBTP file will clip on some DACs when they add their own reconstruction ripples. -1 dBTP gives 1 dB of analog guard.
- 2. Lossy codec headroom. AAC 256k (Apple Music, YouTube), MP3 320k (older Spotify), Opus (YouTube, Spotify now) are not peak-transparent. Encoding/decoding can raise peaks by 0.8–1.5 dB. Apple Digital Masters requires -1 dBTP for this reason and recommends -2 dBTP for high-rate AAC if your original is already at -1. Our deep dive: dBTP and codec headroom.
- 3. Standard compliance. EBU R128 r2020: "-1.0 dBTP maximum true-peak." ATSC A/85: "-2.0 dBTP". AES TD1004.1: "-1.0 dBTP recommended". Distributors like TuneCore, DistroKid, and Spotify for Artists will flag above -1, and Apple will reject above -1 for Digital Masters.
| Meter | What it catches | Streaming safe? |
|---|---|---|
| Sample Peak dBFS | Digital samples only | No — misses 0.5–3 dB overs |
| True Peak 4x dBTP | Inter-sample overs + DAC curve | Yes when ≤ -1.0 |
| True Peak 8x | Identical to 4x +0.1 dB max | Reference |
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
- Use a true-peak limiter, not just sample. FabFilter Pro-L2, Voxengo Elephant, Newfangled Elevate in True Peak mode. Set ceiling to -1.0 or -1.1 dBTP to allow rounding.
- Measure after dither/export. Dither adds ~0.1 dB of peak. Always measure the final WAV/FLAC, not the pre-export 32-bit float.
- Leave headroom if loud. If integrated is -7 LUFS or louder, consider -1.5 dBTP ceiling. Louder = bigger inter-sample overs. See why -14 is the new 0 dB.
- Check codec preview. Export AAC 256 + listen. If you have time, encode/decode and re-measure true-peak.
How JSM Loudness measures true-peak
JSM Loudness runs 100% in your browser — no upload. We implement:
- ITU-R BS.1770-4 K-weighting: pre-filter high-shelf + RLB
- EBU R128 S1 gating: 400ms blocks, 75% overlap, -70 LUFS absolute, -10 LUFS relative
- True-peak 4x polyphase oversampling with ITU exact coefficients
- Reports both sample peak dBFS and true-peak dBTP, per channel and max
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
- What is LUFS? Integrated, Short-term, Momentary, gating -70/-10
- dBTP Deep Dive — codec headroom, MP3/AAC overs
- Spotify Loudness: -14 LUFS and normalization modes
- EBU R128 in 5 minutes: spec summary
- LRA, PLR, PSR explained for dynamic range
- TikTok, Reels, Shorts: -14 to -16 LUFS for mobile
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.