Normalize to real ITU-R BS.1770-4 loudness, within 0.04 LU of ffmpeg, with an enforced true peak ceiling. Measures the processed file and shows where it actually landed.
Initializing in your browser…
Turn audio into a waveform image in five styles, exported as PNG or real vector SVG. Reads every channel, shows true level in dBFS, and redraws correctly at any size.
Read text aloud with any voice your system provides, with sentence-by-sentence progress that works even for voices that report no word boundaries, and a reading-time estimate calibrated from the voice you pick.
Generate band-limited test tones, sweeps and noise from 20 Hz to 20 kHz. Up to eight voices, note-name entry, binaural beats, and WAV export rendered from the same oscillators you hear.
A broadband programme sits at -16.2 LUFS and has to hit the -14 LUFS streaming target without going over full scale.
Input
programme.wav (-16.2 LUFS, -4.4 dBTP) - target -14 LUFS - ceiling -1 dBTP
Output
-14.0 LUFS measured, -2.2 dBTP: exactly on target with headroom to spare
Loudness here is genuine ITU-R BS.1770-4, with K-weighting and both gates, and the figures above come from measuring the exported file with ffmpeg rather than from the tool describing itself. The ungated RMS approximation this replaced landed the same request at -11.8 LUFS with a true peak of +1.1 dBTP, over full scale.
Set a file to a loudness target the way broadcasters and streaming platforms do it: real ITU-R BS.1770-4 integrated loudness, with K-weighting and both gates, plus a 4x oversampled true peak ceiling that nothing is allowed past. The tool measures the processed audio afterwards and shows you where it landed, so the target is a result rather than a promise.
Bring every speaker and every episode to -16 LUFS with a -1 dBTP ceiling, so listeners do not reach for the volume control.
Normalize a collection to the same integrated loudness so playback volume stays even across tracks.
Match the target a platform publishes before uploading, and confirm on the measured result that the file really is there.
Lift a quiet interview to a usable level while the ceiling stops the loudest moments going over.
Four measurements are available. Integrated loudness in LUFS is the ITU-R BS.1770-4 figure: the two K-weighting filter stages, 400 ms blocks overlapping by 75 percent, a -70 LUFS absolute gate to drop silence and a -10 LU relative gate to drop anything far below the body of the programme. Checked against ffmpeg ebur128 across eighteen fixtures, this implementation agrees to within 0.04 LU. True peak is found by 4x oversampling, which catches the level the waveform reaches between samples; against the analytic answer for a sine, where the true peak away from the ends is exactly the amplitude, it is accurate to 0.001 dB from 1 kHz to 19 kHz. Sample peak and unweighted RMS are also offered, and the panel shows loudness range in LU alongside them.
What was there before was not loudness. It computed `20*log10(rms) - 0.691`, which is the BS.1770 offset applied to an unweighted, ungated RMS, so the answer moved with the spectrum of the material rather than with how loud it sounds. Measured against ffmpeg on four fixtures it was 2.2 to 3.4 LU wrong, every time in the direction of making files louder than asked. Normalising a broadband programme to -14 LUFS produced a file at -11.8 LUFS with a true peak of +1.1 dBTP, which is over full scale. All six cases now land on target to 0.00 LU, confirmed by measuring the exported files with ffmpeg rather than by asking the tool what it thinks it did.
The true peak ceiling is enforced, not suggested. Ask for a loudness that cannot be reached under the ceiling and the tool tells you which of two things it did. Lower the gain scales the whole file so the loudest true peak sits exactly on the ceiling, which leaves nothing distorted and the file quieter than the target, and the panel reports how much quieter. Limit peaks applies a look-ahead limiter instead, gets as close to the target as the material allows, and says so when even that is not enough: on a broadband fixture asked for -5 LUFS under a -1 dBTP ceiling, trimming lands at -12.8 LUFS and limiting at -7.9, both measuring exactly -1.0 dBTP on the way out. Old builds soft-clipped instead, which distorted the peaks and still let the file over full scale.
Analysis and processing run in a Web Worker, since K-weighting every sample and then oversampling around the peaks is real work on a full-length track. The preview plays the normalized audio, and export writes a 16-bit WAV or a 192 kbps MP3.
Sample peak is the single loudest sample, true peak is the loudest level the waveform reaches between samples, RMS is average power with no weighting, and LUFS is perceived loudness measured the way broadcasters define it, with a frequency weighting and gating that ignores silence. LUFS is what streaming platforms use.
It implements ITU-R BS.1770-4 in full: both K-weighting stages, 400 ms blocks at 75 percent overlap, the -70 LUFS absolute gate and the -10 LU relative gate. Checked against ffmpeg ebur128 on eighteen fixtures it agrees to within 0.04 LU. The previous build used an ungated RMS approximation that was 2.2 to 3.4 LU out.
Not here. The true peak of the processed audio is measured and held at or below the ceiling you set, either by trimming the gain or with a look-ahead limiter. If the target cannot be reached under that ceiling, the panel tells you how far short it is instead of pushing the file over.
Because reaching the target would have breached the true peak ceiling, and the default policy is to keep the audio clean rather than to force the number. Switch the ceiling policy to Limit peaks to get closer, raise the ceiling, or accept the quieter result.
Applying gain is a multiplication and changes nothing else; frequency balance is untouched. The limiter, if you choose it, does reshape the loudest moments, which is why it is not the default and why the panel says when it ran.
Audio is decoded and processed locally with the Web Audio API. Your files are never uploaded to a server.