Provenance

How every figure was measured

The landing page prints numbers and gets out of the way. This is the apparatus behind them: the source file, the settings, the script and the date for each dataset, the full tables the landing page summarises, and the short list of figures that cannot be reproduced from this repository at all.

The hero diagram

Where the picture comes from

testdata/real_excerpt.wav, 40 s, asked for -8 LUFS against a -1.0 dBTP ceiling, which the engine's limiter delivered at -10.07 LUFS. That file was encoded with ffmpeg to libopus at 128k, decoded back to PCM, and measured. Each point is the highest sample of one 0.67 s window of the signal oversampled 4x, in dBTP. The maximum of each envelope is the true peak of that file, measured the same way engine.profile.true_peak_dbtp measures it.

Cross-check. The three figures were re-measured against website/data/codec_demo.json and the largest disagreement between the two datasets is 0.004 dB; the script refuses to write the file above 0.05 dB. Generated 2026-08-08 in 238 seconds by website/scripts/build_waveform_data.py.

How bad it gets depends on the track, which is the point. On this file the encoder did not push the peak past full scale. It ate the margin instead: 0.74 dB of the headroom you thought you had. You cannot tell in advance which of the two your track is, and that is the entire argument for measuring instead of assuming.

The interactive demo

Every level through every codec, in full

The landing page shows three columns per level. These are all of them, including the codec and bitrate each encode actually used and the resulting playback loudness.

Method. Source: testdata/real_excerpt.wav, 40.0 s, -13.87 LUFS, -4.41 dBTP, 48.0 kHz. At each level the file was normalised with the engine's limiter to a -1.0 dBTP ceiling, which is what a conventional mastering chain hands you. Every number under 'after codec' was produced by encoding the master to that platform's codec at its real bitrate with ffmpeg, decoding the result back to PCM, and measuring the true peak of the decoded audio at 16x oversampling. Nothing is predicted. Measured on the whole track. Playback loudness is derived, not measured: it is the measured integrated loudness of the master plus the platform's own normalisation rule. Generated 2026-08-08 in 213 seconds by website/scripts/build_demo_data.py.

Master aimed at -16 LUFS, delivered at -16.00 LUFS

True peak after each platform's own encoder, before and after the codec-safe pass. Ceiling moved to -6.55 dBTP at a cost of 0.00 dB.
PlatformCodecAfter codecLiftVerdictOursVerdictPlayback
Spotifylibvorbis 320k-6.45+0.10ok-6.45ok-14.0
Apple Musicaac 256k-6.21+0.34ok-6.21ok-16.0
YouTube / YouTube Musiclibopus 128k-5.97+0.58ok-5.97ok-16.0
TikTok / Reels / Shortsaac 192k-5.81+0.74ok-5.81ok-16.0 *
Amazon Musicaac 256k-6.21+0.34ok-6.21ok-14.0
SoundCloud / Bandcamplibmp3lame 320k-6.44+0.11ok-6.44ok-16.0 *

Master aimed at -14 LUFS, delivered at -14.00 LUFS

True peak after each platform's own encoder, before and after the codec-safe pass. Ceiling moved to -4.55 dBTP at a cost of 0.00 dB.
PlatformCodecAfter codecLiftVerdictOursVerdictPlayback
Spotifylibvorbis 320k-4.46+0.09ok-4.46ok-14.0
Apple Musicaac 256k-4.29+0.26ok-4.29ok-16.0
YouTube / YouTube Musiclibopus 128k-3.69+0.86ok-3.69ok-14.0
TikTok / Reels / Shortsaac 192k-4.04+0.51ok-4.04ok-14.0 *
Amazon Musicaac 256k-4.29+0.26ok-4.29ok-14.0
SoundCloud / Bandcamplibmp3lame 320k-4.45+0.10ok-4.45ok-14.0 *

Master aimed at -12 LUFS, delivered at -12.00 LUFS

True peak after each platform's own encoder, before and after the codec-safe pass. Ceiling moved to -2.55 dBTP at a cost of 0.00 dB.
PlatformCodecAfter codecLiftVerdictOursVerdictPlayback
Spotifylibvorbis 320k-2.39+0.16ok-2.39ok-14.0
Apple Musicaac 256k-2.48+0.07ok-2.48ok-16.0
YouTube / YouTube Musiclibopus 128k-1.83+0.72ok-1.83ok-14.0
TikTok / Reels / Shortsaac 192k-2.17+0.38ok-2.17ok-12.0 *
Amazon Musicaac 256k-2.48+0.07ok-2.48ok-14.0
SoundCloud / Bandcamplibmp3lame 320k-2.28+0.27ok-2.28ok-12.0 *

Master aimed at -10 LUFS, delivered at -10.56 LUFS

True peak after each platform's own encoder, before and after the codec-safe pass. Ceiling moved to -1.98 dBTP at a cost of 0.95 dB.
PlatformCodecAfter codecLiftVerdictOursVerdictPlayback
Spotifylibvorbis 320k-0.98+0.04ok-2.05ok-14.0
Apple Musicaac 256k-0.92+0.10ok-1.99ok-16.0
YouTube / YouTube Musiclibopus 128k-0.27+0.75tight-1.55ok-14.0
TikTok / Reels / Shortsaac 192k-0.96+0.06ok-1.84ok-10.6 *
Amazon Musicaac 256k-0.92+0.10tight-1.99ok-14.0
SoundCloud / Bandcamplibmp3lame 320k-0.94+0.09ok-1.72ok-10.6 *

Master aimed at -8 LUFS, delivered at -10.07 LUFS

True peak after each platform's own encoder, before and after the codec-safe pass. Ceiling moved to -1.98 dBTP at a cost of 0.96 dB.
PlatformCodecAfter codecLiftVerdictOursVerdictPlayback
Spotifylibvorbis 320k-0.88+0.14ok-1.87ok-14.0
Apple Musicaac 256k-0.76+0.26tight-1.75ok-16.0
YouTube / YouTube Musiclibopus 128k-0.26+0.76tight-1.51ok-14.0
TikTok / Reels / Shortsaac 192k-0.69+0.33tight-1.72ok-10.1 *
Amazon Musicaac 256k-0.76+0.26tight-1.75tight-14.0
SoundCloud / Bandcamplibmp3lame 320k-0.96+0.06ok-1.93ok-10.1 *

Master aimed at -6 LUFS, delivered at -9.31 LUFS

True peak after each platform's own encoder, before and after the codec-safe pass. Ceiling moved to -1.76 dBTP at a cost of 0.74 dB.
PlatformCodecAfter codecLiftVerdictOursVerdictPlayback
Spotifylibvorbis 320k-0.86+0.16ok-1.60ok-14.0
Apple Musicaac 256k-0.80+0.22tight-1.51ok-16.0
YouTube / YouTube Musiclibopus 128k-0.48+0.54tight-1.22ok-14.0
TikTok / Reels / Shortsaac 192k-0.86+0.16ok-1.45ok-9.3 *
Amazon Musicaac 256k-0.80+0.22tight-1.51tight-14.0
SoundCloud / Bandcamplibmp3lame 320k-0.97+0.05ok-1.72ok-9.3 *

Two honest wrinkles. Amazon Music asks for -2.0 dBTP where everyone else accepts -1.0 dBTP, so a master aimed at -1.0 dBTP cannot satisfy it and stays marked tight at most levels even after our pass. And at the loud end the limiter simply runs out of room: ask for -6 LUFS on this material and what comes out is -9.31 LUFS after 18.68 dB of gain reduction. Both are visible in the tables rather than rounded away. An asterisk on a playback figure means the platform does not normalise.

The before and after

One full pipeline run, start to finish

What you are hearing. One full pipeline run on testdata/real_excerpt.wav, 40 seconds at 48.0 kHz, matched to the modern_pop profile. Measured on the source before anything was done to it: -13.87 LUFS, -4.41 dBTP, stereo width 0.220, loudness range 2.42 LU, spectrum stopping at 20.1 kHz. The delivered master measures -14.20 LUFS and -1.77 dBTP, and its loudness range is 4.06 LU. Both previews are MP3 at 128 kbps, so you are also hearing a third encoder that has nothing to do with either file. The two players are level-matched with one broadband gain of +0.33 dB and no limiting.

On this track the tonal match is partial, and we will say so

It does not go to zero because the correction the matcher may apply per band is bounded, and this source starts a very long way out. After correction it still sits 8.4 dB above the target at 50 Hz and 8.5 dB below it at 6300 Hz. Closing a gap that size with a filter costs more in artefacts than the tonal move is worth. Note also what the figure does not cover: the engine measures this distance over 40 Hz to 16 kHz only, so the wall at 20.1 kHz sits almost entirely outside it, and a per-band spectrum distance says nothing whatsoever about stereo width, which on this source is 0.220.

What the repair stage did

Every step reports itself, including the ones that decided to do nothing. On this file nothing was trimmed, so both players are the same length.
StepRan
DC offsetapplied
Subsonic rumblenot needed
Silence at the head and tailnot needed
De-essing, 5.5 to 11 kHzapplied
Bass to mono below 120 Hznot needed
Stereo repairnot needed
Fade on an abrupt endingapplied

The delivered package, measured after every codec

The actual output of one full run, with each platform judged against the render that platform receives rather than against the distributor master.
PlatformCodecAfter codecPlaybackVerdict
Spotifylibvorbis 320k-1.61 dBTP-14.0 LUFSok
Apple Musicaac 256k-1.69 dBTP-16.0 LUFSok
YouTube / YouTube Musiclibopus 128k-1.06 dBTP-14.4 LUFSok
TikTok / Reels / Shortsaac 192k-1.50 dBTP-14.5 LUFSok
Amazon Musicaac 256k-1.69 dBTP-14.0 LUFStight
SoundCloud / Bandcamplibmp3lame 320k-1.60 dBTP-14.4 LUFSok

Read the rows that are not green. Nothing clips: every platform receives a file that stays under full scale after its own encoder. Amazon is the structural case: it asks for -2.0 dBTP, and a master aimed at -1.0 dBTP cannot reach that by construction. We print it anyway. The alternative is to widen the tolerance until the report is all green, which is what a tolerance is usually for.

Album mode

Three tracks, and what the run does not prove

Per track, source and delivered. The excerpts are commercial material and are not published here; only the measurements are.
TrackSource LUFSDelivered LUFSDelivered dBTPLoudness rangeDistance to target
Track 1-12.74-14.00-5.102.53 LU0.99 to 0.92 dB
Track 2-13.77-14.00-3.693.42 LU1.68 to 1.25 dB
Track 3-13.07-14.00-4.800.68 LU1.19 to 0.98 dB

What this measurement does not prove. These three tracks were already finished and already sat close together, which is a much easier starting point than twelve unrelated generations. So this run shows album mode tightening an already coherent set, not rescuing a scattered one. And the loudness spread landing at exactly 0.00 LU is arithmetic, not craft: three files normalised to one target are at one loudness whatever else you do to them.

Method. Three full-length tracks, one twenty-second excerpt cut from each at its loudest passage, mastered as one album against the set's own median spectrum. The spread figures are produced by engine.batch.ConsistencyReport, the same code that runs for a customer album. The excerpts are commercial material and are not published; only the measurements are. Target: album_average. A 20 second excerpt was cut from the loudest passage of each track with engine.platform_check.loudest_windows, from sources of 244, 237 and 209 seconds. Generated 2026-08-08 in 63 seconds by website/scripts/build_album_data.py.

The profiles

What each profile does

The figures that are not printed on the cards, per profile.
ProfileLargest moveBands movedDelivered peakLoudness range
Modern pop+5.46 / -6.91 dB27 / 27-1.51 dBTP1.42 LU
Hip-hop and trap+5.64 / -4.69 dB27 / 27-1.56 dBTP1.26 LU
EDM and dance+5.47 / -6.11 dB27 / 27-1.81 dBTP1.05 LU
Lo-fi and chill+2.83 / -7.76 dB26 / 27-1.86 dBTP1.48 LU
Acoustic and singer-songwriter+5.30 / -8.17 dB25 / 27-1.68 dBTP1.32 LU
Rock and band+5.12 / -7.86 dB27 / 27-1.35 dBTP1.65 LU
Pink reference+5.15 / -7.28 dB27 / 27-1.50 dBTP1.41 LU
No EQ, loudness only+0.00 / +0.00 dB0 / 27-5.13 dBTP0.69 LU
Modern pop
Firm but controlled low end, a little taken out of the low mids so the vocal has room, presence around 3 kHz and air above it.
Hip-hop and trap
Heavy sub below 80 Hz, low mids cleared out so the 808 keeps its breathing room, and sharp hi-hats up top.
EDM and dance
Big sub, full mids for synths and leads, bright top. Wide stereo image, because that is what this genre lives on.
Lo-fi and chill
Warm low mids, top end deliberately rolled off from 8 kHz. A sensible choice for lossy source material: this profile does not ask for treble that is not there.
Acoustic and singer-songwriter
Close to neutral, with some warmth around 200 Hz and gentle air on top. Keeps the dynamics instead of flattening them.
Rock and band
Mids forward for guitars and snare, a tight low end, and a top end that does not turn harsh.
Pink reference
Pulls your track toward a straight pink slope, the spectral shape a lot of mixed music sits around. Note that this is not a bypass: a source that deviates from pink really is bent toward it. If you want nothing changed, choose “no EQ”.
No EQ, loudness only
Leaves your tone alone. Runs only the repairs you tick, puts the loudness on target and keeps the true peak safe after the codec. Pick this when your mix already sounds the way you want it.

The one number worth staring at. The no eq, loudness only profile comes out 0.03 dB from its target with a correction curve that is flat zero in all 27 bands. That is the proof that the setting does what its name says. The shaping profiles start 3.83 to 5.38 dB away from their targets and land 1.71 to 2.25 dB away. They do not reach zero either, because the per-band correction is bounded and this source starts a long way out. A profile that claimed 0.00 dB would be a profile that had stopped measuring.

Method. Source: style_source.wav, 20 s, -13.08 LUFS, -4.38 dBTP, spectrum stopping at 20.2 kHz. Each profile is one full master_track() run, then a single broadband gain to -14 LUFS with the peak held under -1.0 dBTP, then MP3 at 160 kbps. The largest single move any profile makes is +5.64 dB of boost and -8.17 dB of cut. It is deliberately one source and not 8 different songs: with a different track per genre you would mostly hear the difference between the tracks, which demonstrates the generator and not this tool. Generated 2026-08-08 in 171 seconds by website/scripts/build_style_examples.py.

The figures you cannot reproduce here

Measured with the same engine, on material we cannot publish

Everything above comes out of website/data/ and can be regenerated from this repository. The figures below cannot. They were measured with the same engine on tracks that are not ours to publish, and they are marked wherever they appear rather than folded in with the rest.

Decorrelated bass folded to mono
8.8 dB lost before the correction that puts everything below 120 Hz in the centre, and 0.0 dB after it. This is the fourth figure on the landing page, and the only one there that is not from a published dataset.
A master that came out of AAC above full scale
-1.02 dBTP going in, +0.62 dBTP coming out. On a four-minute track YouTube's Opus encoder lifted the peak 1.46 dB, which forced the ceiling of the WAV down to -2.66 dBTP. Neither is reproducible from the demo above, which is exactly why the tool measures your file instead of applying a rule of thumb.
Two-band limiting versus one broadband limiter
Bass-driven modulation of the midrange sits around -28.5 dB with a single broadband limiter and -86 dB with the two-band limiter split at the same 120 Hz crossover.
A more flattering album run than the one we published
A different three-track set went from 2.28 to 1.28 dB per band and 7.47 to 0.24 LU. It is the better number and the one we cannot reproduce from anything published here, so the landing page shows the weaker one instead.
Tonal distance on a full-length track
5.06 dB to 1.80 dB. Different material, different number, and we are not going to show you only the flattering one.
The true-peak ceiling is a property, not a sample
110 tests, including the ceiling checked as a property across ten pathological signals at four ceilings and verified at 8x, 16x and 32x oversampling.

Delivery targets

What each platform asks for

A value marked consensus is not published by the platform and may be wrong.
PlatformTargetTrue peakCodecNormalisesConfidenceSource
Spotify-14 LUFS-1.0 dBTPlibvorbis 320kyesprimarySpotify for Artists
Apple Music-16 LUFS-1.0 dBTPaac 256kyesconsensusnot published
YouTube / YouTube Music-14 LUFS-1.0 dBTPlibopus 128kyesconsensusnot published
TikTok / Reels / Shorts-14 LUFS-1.0 dBTPaac 192knoconsensusnot published
Amazon Music-14 LUFS-2.0 dBTPaac 256kyesconsensusnot published
SoundCloud / Bandcamp-14 LUFS-1.0 dBTPlibmp3lame 320knoconsensusnot published

The full reference, one anchor per platform.