LUFS Tool v4.3 — User Guide
Gated programme-loudness analysis, loudness-range analysis, 4×+ oversampled true-peak estimation, and optional target-gain processing for mono, stereo, and validated 5.1 audio.
What this does
LUFS Tool v4.3 analyzes one selected Praat Sound and reports integrated programme loudness, true peak, and — for material at least 3 seconds long — Loudness Range (LRA) and maximum short-term loudness. It can also apply a target gain directly, restrict that gain to the available true-peak headroom, or iteratively combine loudness gain with a dynamic true-peak limiter.
The script supports mono/stereo or an explicitly selected 5.1 layout. For 5.1 it assumes channel order L, R, C, LFE, Ls, Rs, ignores the LFE channel in loudness integration, and applies a 1.41 weight to each surround channel.
Quick start
- Select exactly one Sound object in Praat.
- Run
LUFS_Tool.praat. - Choose a Preset or use Custom and enter your own target LUFS.
- Select the correct Channel Layout: Mono / Stereo or 5.1 Surround.
- Choose one of the four Mode options.
- Set the True Peak Ceiling if Custom or a suggested-target preset should use a ceiling other than the current form value.
- Run the script. The Info window reports the input measurement, gain analysis, and — when processing occurs — a full post-processing re-measurement.
Measurement pipeline
1. K-weighting
The script copies the source and applies two recursive biquad stages before loudness measurement: a high-frequency shelving stage followed by a low-frequency high-pass stage. The coefficients are calculated from the source sampling rate. These filtered samples are used for programme loudness and LRA; the original Sound itself is not modified during analysis.
2. Channel-weighted mean-square energy
| Layout | Accepted channels | Loudness weights |
|---|---|---|
| Mono / Stereo | Exactly 1 or 2 | 1.0 for every channel |
| 5.1 Surround | Exactly 6 in L, R, C, LFE, Ls, Rs order | L/R/C = 1.0; LFE = 0; Ls/Rs = 1.41 |
3. Gated Integrated LUFS
If no block survives the gates, the script reports -70.0 LUFS as its floor value.
4. Short-Term Loudness and LRA
For inputs of at least 3 seconds, short-term loudness uses 3.0 s windows with a 0.1 s hop. For file-based LRA alignment the K-weighted signal receives 1.5 s trailing silence. v4.3 explicitly restores the original Sound start time after concatenation, so this analysis remains aligned when the source time domain does not begin at 0.
5. True-peak estimation
True peak is estimated by resampling to max(4 × source sample rate, 176400 Hz), then measuring positive and negative extrema with Praat's Sinc70 interpolation. The reported value is 20 log10(max absolute extremum). Very small measured amplitudes are reported as -100 dBTP.
Presets
Preset names are convenient target choices built into this script. They should not be read as guarantees about a service's current delivery policy. Platform practices can change, and the suggested music/cinema targets are creative targets rather than standards.
| Preset | Target LUFS | True-peak ceiling behavior |
|---|---|---|
| Custom | Custom_target_LUFS (default -14) | Uses the entered True_peak_ceiling_dB |
| Spotify | -14 LUFS | Forces -1 dBTP |
| Apple Podcasts | -16 LUFS | Forces -1 dBTP |
| YouTube | -14 LUFS | Forces -1 dBTP |
| Broadcast EU (EBU R128) | -23 LUFS | Forces -1 dBTP |
| Broadcast US (ATSC A/85) | -24 LUFS | Forces -2 dBTP |
| Film / Cinema (Suggested Target) | -27 LUFS | Does not override the entered ceiling |
| Classical Music (Suggested Target) | -18 LUFS | Does not override the entered ceiling |
| CD Master (Suggested Target) | -9 LUFS | Forces -0.5 dBTP |
Processing modes
Analyze Only
Measures the source and performs no audio processing. No new Sound is created; the original input remains the selected result used by the final report and visualization. Play is not triggered in this mode.
Apply Exact Gain (may clip)
Creates <source>_ExactGain and applies exactly:
This mode is deliberately unconstrained. It does not enforce the selected true-peak ceiling and therefore may produce samples or intersample peaks above the intended limit.
Apply Safe Gain (no clipping)
Creates <source>_SafeGain. The initial gain is limited by the measured true-peak headroom:
After processing, the script re-measures true peak and loudness. If the result still exceeds the ceiling by more than 0.001 dB, it applies a final global attenuation equal to that excess and measures again.
Normalize to Target (with dynamic limiting)
Creates <source>_Normalized and iterates up to 5 times toward the loudness target with a 0.1 LU tolerance. Each iteration applies the remaining gain, measures true peak, invokes the internal limiter only when the measured peak exceeds the selected ceiling, then measures Integrated LUFS again.
The internal limiter uses a linked absolute-peak sidechain across all channels, 4×+ oversampling, a fixed 3 ms future-window lookahead, a fixed 30 ms exponential release, and a gain envelope clamped to 0.0001…1.0. It only attenuates; it does not add make-up gain.
If the remaining LUFS error stops changing meaningfully, the loop terminates and reports that the target is not attainable under the chosen ceiling. A final true-peak safety verification is then applied exactly as in Safe Gain.
| Mode | New Sound? | Target LUFS guaranteed? | Ceiling enforcement |
|---|---|---|---|
| Analyze Only | No | No processing | Measurement only |
| Exact Gain | _ExactGain | Linear gain is exact relative to the measured input LUFS | None |
| Safe Gain | _SafeGain | Only if the required gain fits the true-peak headroom | Headroom-limited gain + final verification |
| Normalize to Target | _Normalized | Attempted iteratively; may be unattainable | Dynamic limiter + final verification |
Parameters
| Field | Default | Behavior |
|---|---|---|
| Preset | Custom | Selects target and, for some presets, overrides the true-peak ceiling. |
| Custom_target_LUFS | -14.0 | Used only when Preset = Custom. |
| Channel_Layout | Mono / Stereo | Validates either 1–2 channels or exactly 6 channels in the documented 5.1 order. |
| Mode | Analyze Only | Selects measurement-only, exact gain, safe gain, or iterative target normalization. |
| True_peak_ceiling_dB | -1.0 dBTP | Must be ≤ 0. Some presets override it after the form is read. |
| Visualize | On | Draws the AudioTools analytics page. |
| Play | Off | Plays only when a processed Sound was created. |
Visualization
When Visualize is enabled, v4.3 creates an 8-inch AudioTools-style page with five functional areas:
- Header: source name, preset, and target LUFS.
- LUFS meter: a vertical -60…0 LUFS scale with colored level bands, the output integrated-loudness bar, and a horizontal target marker.
- Input waveform: the original Sound in its real
sourceStart…sourceEndtime domain. - Short-Term plot: target line, grey input short-term loudness, and — when processing occurred — blue output short-term loudness. For inputs shorter than 3 seconds it explicitly reports that Short-Term/LRA are unavailable.
- Output waveform and summary: the selected result plus input/output Integrated LUFS, dBTP and LRA.
In Analyze Only mode the “Output” waveform is simply the original input, because no new Sound is created.
Outputs & reporting
| Mode | Selected object at end |
|---|---|
| Analyze Only | Original input Sound |
| Apply Exact Gain | <source>_ExactGain |
| Apply Safe Gain | <source>_SafeGain |
| Normalize to Target | <source>_Normalized |
The Info window reports the source duration, sampling rate, channel count, absolute time domain, preset, target, ceiling, input true peak, Integrated LUFS, LRA, Max Short-Term, required gain, and available headroom. Processed modes add a post-processing re-measurement of LUFS, dBTP and LRA.
No export file is written automatically. The result remains a Praat Sound object at the source sample rate and with the source channel count preserved.
Limits & interpretation
- Formal compliance: the code follows the core BS.1770-5 / EBU R128 measurement structure implemented in the script, but it has not been presented here as a certified meter implementation.
- True peak: dBTP is estimated through Praat resampling plus Sinc70 extrema, rather than by claiming a separately certified hardware/software true-peak meter.
- 5.1 only: multichannel loudness analysis is limited to the explicitly documented six-channel layout. Other multichannel layouts are rejected.
- Preset policy: streaming, podcast, cinema, classical, and CD labels are target choices in this tool. Check current delivery specifications independently when preparing a real submission.
- Exact Gain: can exceed the true-peak ceiling by design.
- Safe Gain: may finish below the loudness target because peak safety takes precedence.
- Normalize to Target: dynamic limiting can make the requested loudness impossible under the selected ceiling; the script reports this rather than claiming guaranteed convergence.
Further Reading
The references below are the primary standards and technical documents directly relevant to the algorithms implemented by this tool.
- ITU-R BS.1770-5 (2023). Algorithms to measure audio programme loudness and true-peak audio level. International Telecommunication Union. Official recommendation page.
- EBU R 128, version 5.0 (2023). Loudness normalisation and permitted maximum level of audio signals. European Broadcasting Union. Official publication page.
- EBU Tech 3342, version 4.0 (2023). Loudness Range: A measure to supplement EBU R 128 loudness normalisation. European Broadcasting Union. Official publication page.
- ATSC A/85:2026-07 (2026). Techniques for Establishing and Maintaining Audio Loudness for Digital Television. Advanced Television Systems Committee. Official publication page.