← Back

Audio Volume Normalizer

Normalize audio loudness to the EBU R128 standard

Processing happens locally in your browser. The first use needs to download a ~25-30MB processing core, so please keep your network connection stable. Longer audio takes longer to process.
Select an audio file
Target volume

About Audio Volume Normalizer

The Audio Volume Normalizer uses ffmpeg's loudnorm filter to bring the overall loudness of an audio file to a target you choose, so clips that were recorded at very different levels end up sounding closer in volume. It works on loudness (measured in LUFS, following EBU R128), not by simply scaling the waveform up. It is not a noise remover and cannot repair audio that is already clipped or distorted. The page offers three preset targets; there is no field for a custom value. Processing uses two-pass loudnorm: pass 1 measures, pass 2 adjusts using those measurements, and the measured original integrated loudness (LUFS) is shown when it finishes.

How to use it

  1. Click the dashed 'Click to upload audio' box and choose an audio file. The box then shows its name.
  2. Under 'Target volume', pick a preset: 'Standard (-16 LUFS)', 'Louder (-13 LUFS)', or 'Quieter (-20 LUFS)'. Standard is selected by default.
  3. Click 'Start Normalizing'. On the first use the button shows 'Loading processing core…', then 'Pass 1: measuring loudness…' and 'Pass 2: processing…'. Longer audio takes longer.
  4. When it finishes a player appears, with the measured integrated loudness, true peak and loudness range of the original above it. After listening, click 'Download Result'. The file name is the original with normalized_ in front.

What the presets mean, and a usage scenario

The closer a LUFS number is to zero, the louder the audio: -13 is louder than -16, which is louder than -20. In the code the three presets set the target loudness to -16, -13, and -20, while the loudness range (LRA) is fixed at 11 and the true-peak ceiling (TP) at -1.5 dB, which helps avoid clipping after adjustment. A typical scenario: you have three podcast segments recorded separately, the first quiet and the third loud. Process each of them with the same preset, say Standard, and then join them in your editor; the difference in perceived volume will be much smaller. Because the outcome depends on the content of each file, we do not quote fixed before-and-after figures; the page shows the measured value for your own file.

Supported input and known limits

  • It runs loudnorm in two passes: pass 1 (print_format=json) measures and the tool reads integrated loudness, true peak, loudness range and threshold from the ffmpeg log; pass 2 feeds them back as measured_* parameters with linear mode on, which usually lands closer to the target than one pass. If the target cannot be reached linearly under the -1.5 dBTP peak limit, ffmpeg falls back to dynamic processing, so the final loudness can still be slightly off. If the measurements cannot be read (for example fully silent audio), it falls back to a single pass and says so in the result area.
  • Only the three fixed presets are available. You cannot enter a custom target; only the before reading (from pass 1) is shown, not a re-measurement of the output.
  • The output keeps the original file's extension and is re-encoded. A lossy format such as MP3 goes through lossy compression again, so quality can change slightly.
  • loudnorm resamples internally to a high rate, so the tool now reads the source sample rate from the pass 1 log and sets the output to the same rate with -ar. If the rate cannot be read from the log, none is set and ffmpeg decides. Other output options (codec, bitrate) remain ffmpeg defaults.
  • It evens out overall loudness only. It does not level individual loud and quiet phrases and cannot remove background noise.
  • The whole file is read into browser memory with no size cap, so very long or large files can be slow or fail.
  • On failure the only message is 'Processing failed. Please try a different audio file.', with no detail about the cause.
  • The first use needs a network connection to download a core of roughly 25-30MB.

FAQ: How is normalizing different from just turning the volume up?

Turning it up multiplies every sample by the same factor, and too much of that causes clipping. Normalizing measures perceived loudness and adjusts to a target, while respecting a true-peak ceiling, which makes it better suited to matching audio from different sources.

FAQ: Which preset should I choose?

A comment in the page's code describes -16 LUFS as the target used by mainstream streaming platforms such as Spotify. Platform requirements change, so check the current guidelines of the platform you are publishing to. -13 sounds louder and -20 softer; choose by how your audience will listen.

FAQ: Is it normal that the output file size changed?

Yes. The output is re-encoded, and its size depends on the encoder's default settings and the original format, so it can differ from the input.

FAQ: It seems stuck. What can I do?

The first run must download the processing core, and then the tool analyzes and re-encodes the whole file, which can take a while for long audio. Try trimming a short sample with the Audio Trimmer first to test the effect.

Privacy and processing

Processing is done in your browser by a WebAssembly build of ffmpeg, and the code has no step that uploads your audio. The only network request is the first-time download of the ffmpeg core from the public CDN unpkg.com, which does not include your file. The result is played and downloaded through a temporary local link that is released when you change files or leave the page.