A three-minute track at 44.1 kHz is 7,938,000 samples. Drawn 800 px wide, each pixel column has to stand for 9,922.5 samples. Almost every waveform generator picks one of them and draws its height.
That looks at 800 samples out of 7,938,000 — 0.0101 % of the file. It is not a summary of the column, it is a point sample of it, and point-sampling a signal far below its own rate is the textbook definition of aliasing. The result is not "slightly less accurate". It is a picture of the relationship between the tone's frequency and the pixel stride, which is not a property of the music.
We generated a constant full-scale tone — amplitude 1.0 from the first sample to the last, 180 seconds of it — and drew it 800 px wide. The true picture is a solid block of height 1.000. Here is what one-sample-per-column returns as the frequency changes:
| Tone | One sample per column | Every sample (peak) |
|---|---|---|
| 100 Hz | 0.0036 | 1.0000 |
| 220 Hz | 0.0078 | 1.0000 |
| 261.63 Hz | 0.6361 | 1.0000 |
| 440 Hz | 0.0157 | 1.0000 |
| 441 Hz | 0.6352 | 1.0000 |
| 1000 Hz | 0.0356 | 1.0000 |
| 2000 Hz | 0.0710 | 1.0000 |
Identical audio, answers from 0.0036 to 0.6361. One hertz apart — 440 and 441 — the shortcut draws a flat line and then a waveform at 64 % height. Reading every sample returns 1.0000 for all of them, because that is what is in the file.
This is the part that gives it away. Take that one 440 Hz file and redraw it at different widths, changing nothing else:
| Width | Samples per column | One sample per column | Every sample |
|---|---|---|---|
| 600 px | 13,230.0 | 0.0000 | 1.0000 |
| 700 px | 11,340.0 | 0.6259 | 1.0000 |
| 800 px | 9,922.5 | 0.0157 | 1.0000 |
| 1000 px | 7,938.0 | 0.6155 | 1.0000 |
| 1200 px | 6,615.0 | 0.0000 | 1.0000 |
| 1920 px | 4,134.4 | 0.5114 | 1.0000 |
A waveform that changes when you change the canvas is not describing the audio. If you have ever exported a waveform at two sizes and thought the second one looked wrong, this is why.
A 2 ms burst at 44.1 kHz is 88 samples — 0.89 % of a 9,922-sample column. One-sample reading lands on it about 0.89 % of the time. We built a click track of 360 full-scale bursts, one every 500 ms, and drew it:
| Measurement | One sample per column | Every sample (peak) |
|---|---|---|
| Columns showing a burst | 0 of 800 | 360 of 800 |
| Tallest column | 0.0000 | 0.8973 |
| Single full-scale sample found (200 tries) | 0 / 200 | 200 / 200 |
| 2 ms full-scale burst found (200 tries) | 3 / 200 | 200 / 200 |
A drum track drawn this way can show no drums. Not quieter drums — none: every one of 360 bursts fell between the samples that were looked at, and the drawing came back a flat line.
Reading all 7,938,000 samples and reducing them to 800 columns took 4.70 ms, best of five runs, in an ordinary browser. The shortcut took 0.00 ms. That is the entire saving, and it buys a picture that is not of your audio.
This tool reads every sample and keeps the minimum and maximum of each column, which is what survives resizing and what catches a transient. You can switch it to one-sample-per-column in the dropdown and watch your own file lose its peaks, and the second canvas shows that comparison by default so you do not have to take our word for it.
RMS is offered too, and it is worth saying it is not wrong — it is a different quantity. RMS of a sine is 0.7071 against a peak of 1.0000, so an RMS waveform is 29.29 % shorter than a peak waveform of the same audio. Pick one and stay with it; a tool that mixes them within a single image is inconsistent with itself.
The full set of measurements, including the frequency sweep and the closed forms, is written up in Why your waveform image is missing the drums.
Decoding happens in your browser, so the list is your browser's list: MP3, WAV, FLAC, M4A, AAC, OGG and Opus all decode. AIFF, WMA and APE do not — they raise a decode error on perfectly valid files. If you have one of those, convert it first with the audio converter, which runs the conversion server-side, and then come back. The page tells you which of the two problems you actually hit rather than guessing.
No. The file is decoded by your browser, reduced to columns in the page, and drawn on a canvas you download. It never reaches a server, which is also why it keeps working with the tab offline once the page has loaded.
Almost certainly because the other tool reads one sample per pixel column and this one reads every sample. On a three-minute track that is the difference between looking at 0.01 % of the audio and looking at all of it. The second canvas on this page draws your file both ways so you can compare them directly.
Peak is the loudest sample in the column; RMS is the average energy of the column. They are both correct answers to different questions. RMS of a sine wave is 0.7071 against a peak of 1.0000, so an RMS waveform is about 29 % shorter. Peak is the usual choice for a waveform image because it shows transients; RMS looks smoother and closer to perceived loudness.
Two different reasons, and the page distinguishes them. AIFF, WMA and APE are not decodable in any browser we tested, even when the file is perfectly good — convert those first. Anything else that fails is a damaged or mislabelled file, and a different message says so.
Yes, tick Transparent and download the PNG. The SVG export is transparent unless you leave the background on. Transparent is what you want for putting the waveform over a video or a coloured card.
PNG for anything going into a video or a social post. SVG if you are going to print it or scale it — an SVG waveform stays sharp at any size because it stores the columns as rectangles rather than pixels. The SVG is built from the same column data as the PNG, so the two are the same drawing.
The limit is your browser's memory, not a rule here — decoding holds the whole file uncompressed, roughly 10 MB per minute of stereo at 44.1 kHz. Very long files are better trimmed first with the audio trimmer, which also lets you draw the part you actually mean.
No. Nothing is written back to your file — normalising only scales the drawing so the loudest column reaches the full height of the image. Turn it off to see the waveform at its true level against the top of the frame, which is the honest view if you are comparing two files.