How to normalize audio to -14 lufs for spotify
- Step 1Drop your mix or master — Drop a WAV, FLAC, MP3, M4A, or even a video file onto the tool. FFmpeg reads the audio stream directly in-browser — for a Spotify delivery, a 24-bit or 16-bit WAV master is the ideal source.
- Step 2Choose the Spotify / YouTube (-14 LUFS) preset — In the Loudness target dropdown pick Spotify / YouTube (-14 LUFS). That maps to
loudnorm=I=-14:TP=-1:LRA=11. (Apple Podcasts -16, Amazon Music -14/-2 TP, and EBU broadcast -23 are the other three presets — there is no free-text LUFS box.) - Step 3Pick your output format — Choose WAV or FLAC for a lossless distributor upload, or MP3 (encoded at 192 kbps) / M4A (AAC) for a reference copy. There is no separate bitrate control on this tool — MP3/AAC export at 192 kbps.
- Step 4Run the two-pass normalisation — Click run. Pass one measures integrated loudness, true-peak, LRA and threshold; pass two applies the gain and -1 dBTP limit. A ~4-minute song normalises in seconds to low tens of seconds depending on your CPU.
- Step 5Read the loudness report — The result panel shows your source Integrated LUFS, Range, True peak and Threshold. If you started at -9 LUFS, you'll see -9 here — that's the before figure, confirming how much was turned down to reach -14.
- Step 6Watch for the Dynamic-mode notice and download — If a yellow Dynamic mode banner appears, your source LRA was wider than the target so output LUFS may sit slightly off -14 (see edge cases). Otherwise download the normalised file and hand it to your distributor.
Loudness presets available on this tool
The four presets exposed in the Loudness target dropdown, mapped to the exact FFmpeg loudnorm parameters built in lib/audio/audio-engine.ts. There is no custom-LUFS field — these are the only choices.
| Preset (UI label) | Integrated (I) | True peak (TP) | LRA | Best for |
|---|---|---|---|---|
| Spotify / YouTube (-14 LUFS) | -14 LUFS | -1 dBTP | 11 LU | Music releases to Spotify and YouTube |
| Apple Podcasts (-16 LUFS) | -16 LUFS | -1 dBTP | 11 LU | Spoken-word / podcast delivery |
| Amazon Music (-14 LUFS, -2 TP) | -14 LUFS | -2 dBTP | 11 LU | Amazon Music's stricter peak ceiling |
| EBU R128 broadcast (-23 LUFS) | -23 LUFS | -1 dBTP | 7 LU | TV / radio broadcast deliverables |
Streaming platform playback targets vs the Spotify preset
How the -14 LUFS Spotify preset lines up with where other platforms normalise. Master once to your primary platform; the others re-normalise on their side.
| Platform | Playback target | This tool's matching preset | Note |
|---|---|---|---|
| Spotify (Normal) | ~-14 LUFS | Spotify / YouTube (-14) | Louder masters are turned down; quieter ones up |
| YouTube | ~-14 LUFS | Spotify / YouTube (-14) | Same -14 reference, content-only normalisation |
| Apple Music | ~-16 LUFS | Apple Podcasts (-16) | Sound Check uses a -16-style reference |
| Amazon Music | ~-14 LUFS, -2 dBTP | Amazon Music (-14, -2 TP) | Stricter true-peak ceiling of -2 dBTP |
| Tidal | ~-14 LUFS | Spotify / YouTube (-14) | Close enough to the -14 reference |
Output formats and encoders
Encoders are selected automatically by output extension in lib/audio/audio-processor.ts (encoderForExt). Lossless formats ignore the 192k bitrate hint.
| Output format | FFmpeg encoder | Bitrate | Use for |
|---|---|---|---|
| WAV | pcm_s16le (16-bit PCM) | n/a (uncompressed) | Distributor / archival master |
| FLAC | flac (lossless) | n/a (lossless) | Lossless upload at a smaller size than WAV |
| MP3 | libmp3lame | 192 kbps | Reference copy for collaborators |
| M4A (AAC) | aac | 192 kbps | Apple-ecosystem reference / AAC delivery |
Cookbook
Real Spotify-delivery scenarios. The report values shown are the SOURCE measurements the tool reports after a run — i.e. the loudness of the file you fed in.
A hot -8 LUFS master pulled back to -14
A modern pop master delivered around -8 LUFS plays back on Spotify Normal turned down by ~6 dB. Normalising to -14 first means what you hear locally is what listeners hear, and you control the limiting instead of Spotify's.
Source report after run: Integrated : -8.1 LUFS Range : 4.2 LU True peak : -0.2 dBTP Threshold : -18.4 LUFS Preset: Spotify / YouTube (-14 LUFS) filter -> loudnorm=I=-14:TP=-1:LRA=11 ... linear=true Result: gain reduced ~6 dB, peaks pulled to <= -1 dBTP. WAV exported for distributor upload.
A quiet bedroom mix at -20 LUFS brought up to -14
An under-cooked mix at -20 LUFS gets boosted on Spotify, raising the noise floor. Normalising to -14 yourself lets you hear the boosted noise and decide whether to denoise before release.
Source report after run: Integrated : -20.3 LUFS Range : 9.1 LU True peak : -6.0 dBTP Threshold : -30.5 LUFS Result: +6.3 dB gain applied, true peak still well under -1 dBTP. If hiss is now audible, run ai-noise-reducer first: /audio-tools/ai-noise-reducer
Lossless delivery: 24-bit WAV in, FLAC out at -14
Distributors prefer lossless. Feed a high-res WAV, normalise to -14, and export FLAC to keep the upload small without losing quality.
Input : master_24bit.wav Preset: Spotify / YouTube (-14 LUFS) Output: FLAC (encoder: flac, lossless) Note: output WAV here is 16-bit (pcm_s16le). For a 24-bit deliverable, export FLAC instead -- it preserves the full source depth losslessly.
Check before you commit: read the source LUFS first
Because the report shows the source measurement, you can run once on a copy just to see how far off -14 you are before deciding on final processing.
Run the file through the Spotify preset once. Report says Integrated: -11.7 LUFS, Range: 13.0 LU. Range 13 LU > target LRA 11 -> expect a Dynamic-mode notice. Reduce dynamic range first with speech-leveler/compressor, then re-normalise for a clean linear -14 pass: /audio-tools/audio-compressor
Amazon Music's stricter -2 dBTP ceiling
Amazon Music wants the same -14 LUFS but a -2 dBTP ceiling. Use the dedicated Amazon Music preset rather than the Spotify one so peaks land below -2, not -1.
For Spotify : Spotify / YouTube (-14 LUFS) -> TP -1 dBTP For Amazon : Amazon Music (-14 LUFS, -2 TP) -> TP -2 dBTP Same integrated loudness, lower peak ceiling. Export once per platform if both ceilings matter.
Edge cases and what actually happens
Source loudness range wider than target LRA -> dynamic mode
By designWhen your source LRA exceeds the preset's target (11 LU for Spotify), FFmpeg loudnorm silently switches from a single linear gain to per-window dynamic correction. The tool detects this from the pass-2 summary and shows a yellow Dynamic mode notice: the output is normalised but integrated LUFS may sit slightly off -14. Reduce the source dynamic range first with the speech-leveler or audio-compressor, then re-normalise for a clean linear pass.
You expected the report to show -14 LUFS output
ExpectedThe result panel reports the source (input) measurement, not the output. A file that was -8 LUFS shows -8 after a run — confirming what it was before correction. To verify the output actually hit -14, re-drop the normalised file: its source measurement should then read close to -14 LUFS.
MP3 in, MP3 out — generation loss
Quality lossNormalising an existing MP3 and exporting MP3 re-encodes through libmp3lame at 192 kbps, adding a second lossy generation. For best quality normalise from the lossless source (WAV/FLAC) and export WAV or FLAC. There is no bitrate control on this tool, so MP3/AAC export is fixed at 192 kbps.
Already at -14 LUFS — almost no change
PreservedIf the source already measures ~-14 LUFS and peaks under -1 dBTP, the corrective gain is near zero. The file is still re-encoded (so a lossy round-trip applies), but loudness is essentially unchanged. Skip normalising if your master is already on target and you want to avoid re-encode.
True peak already above -1 dBTP on a hot master
SupportedInter-sample peaks above -1 dBTP are pulled down by the true-peak ceiling baked into the loudnorm pass, so the output stays under -1 dBTP (or -2 for the Amazon preset). If you only want peak limiting without loudness change, use the dedicated true-peak-limiter instead.
Dropped a video file expecting video back
Audio onlyThis tool accepts audio-or-video input but always outputs audio — it normalises the audio stream and discards video. To put normalised audio back into a video you'd need a separate mux step; for podcasts, extract first with video-to-mp3 or video-to-wav.
File exceeds your tier's size or duration limit
RejectedAudio limits are 50 MB / 30 min (Free, 1 file), 200 MB / 120 min (Pro, 10 files), and 100 GB / unlimited duration (Pro + Media and Developer, up to 100 files). Note loudness-normalizer is a Pro + Media (media-only) tool. A 90-minute live set rejects on Free for duration even if it's under 50 MB — split it with audio-splitter or upgrade.
Custom LUFS target (e.g. -10) requested
Not availableThere is no free-text LUFS field — only the four presets (-14, -16, -14/-2 TP, -23). For a Spotify release -14 is the correct reference, so the preset covers the real use-case. If you genuinely need a non-standard target, that capability is not exposed by this tool.
Pass-1 measurement returns no parseable data
ErrorIf FFmpeg's pass-1 doesn't emit a parseable JSON block (extremely short or corrupt input), the run throws 'Loudness analysis (pass 1) did not return a parseable JSON block.' Confirm the file actually contains a decodable audio stream and isn't a renamed/placeholder file.
Frequently asked questions
What LUFS should I master to for Spotify?
Spotify normalises playback to roughly -14 LUFS. Master to -14 LUFS integrated with a -1 dBTP true-peak ceiling and your track sits at the same perceived level as everything else on Spotify Normal, with no Spotify-side limiting kicking in. The Spotify / YouTube preset on this tool targets exactly that: loudnorm=I=-14:TP=-1:LRA=11.
Does this actually re-master my track or just measure it?
It re-masters: a true two-pass loudnorm. Pass one measures your integrated LUFS, true-peak, LRA and threshold; pass two applies the corrective gain plus a -1 dBTP limiter and writes a new file. It is gain + true-peak correction, not EQ or multiband processing, so the tonal character is unchanged.
Will normalising to -14 hurt my sound quality?
The loudness correction itself is gain-only — no spectral change. The only quality consideration is re-encoding: if you export MP3 or M4A you add one lossy generation, and if your input was already lossy that's two. Normalise from a WAV/FLAC master and export WAV or FLAC to keep it pristine.
Why does the report show a different number than -14?
The report shows the source loudness (what your file measured before correction), not the output. That's intentional so you can see how far off you were. To confirm the output reached -14, re-run the normalised file and read its source measurement.
Is my unreleased master uploaded anywhere?
No. The entire process runs in your browser tab via FFmpeg 8.1 compiled to WebAssembly. Your audio is read into memory locally, processed on your CPU, and the result is offered as a download. Nothing is sent to a server — ideal for pre-release material under NDA or embargo.
Can I set a custom LUFS target like -12?
No — the tool exposes four fixed presets (-14 Spotify/YouTube, -16 Apple Podcasts, -14/-2 TP Amazon Music, -23 EBU broadcast). For a Spotify release, -14 is the correct reference, so the preset matches the real-world target.
What's the 'Dynamic mode' warning about?
If your source loudness range (LRA) is wider than the preset target (11 LU), FFmpeg switches loudnorm from a single linear gain to per-window dynamic correction. The output is still normalised but integrated LUFS may sit slightly off -14. Tighten the dynamics first with the audio-compressor or speech-leveler and re-run for a clean linear pass.
Why -1 dBTP and not 0?
Lossy codecs (Spotify's Ogg Vorbis, AAC) can produce inter-sample peaks above 0 dBFS on decode. A -1 dBTP ceiling leaves headroom so the encoded file doesn't clip. Amazon Music is stricter, hence its dedicated -2 dBTP preset.
Should I export WAV or FLAC for my distributor?
Either is lossless. FLAC is smaller for the same quality, which makes uploads faster. Note this tool's WAV output is 16-bit PCM; if you need to preserve 24-bit depth, export FLAC, which keeps the full source resolution losslessly.
Can I normalise a whole album at once?
This tool processes one file per run. Batch limits depend on tier (1 file Free, 10 Pro, 100 Pro + Media), but normalise each track to the same -14 preset so the album is internally consistent. For consistent loudness across tracks, run them all through the same Spotify preset.
Does it work on a video file?
Yes — it accepts audio or video, normalises the audio stream, and outputs audio only (no video). To keep the video, extract audio first with video-to-wav, normalise, then re-mux in your editor.
What if my track is louder than -14 after Spotify's own normalisation?
If you delivered something hotter than -14, Spotify turns it down and, on the Loud setting, applies its own limiter. Normalising to -14 yourself means you keep control of the limiting decisions instead of handing them to Spotify's algorithm. For a peak-only safeguard, pair this with the true-peak-limiter.
Privacy first
Every JAD Audio tool runs entirely in your browser via FFmpeg (WebAssembly) and RNNoise. Your audio files never leave your device — verified by zero outbound network requests during processing.