Compress MP3

Re-encode an MP3 at 96, 64 or 40 kbps mono in your browser. Free, no upload, no watermark, and it never returns a file bigger than the one you dropped in.

🌐 Español

Drop your file here (.mp3)

🔒 Private by design: your files are processed locally in your browser and never uploaded to any server.

Where 96, 64 and 40 kbps actually sit

Most bitrate advice you find online is written for people ripping CDs in 2004. The useful question today is not “what sounds transparent” but “what is small enough to send, and what am I sending”.

The three choices under Compression target are fixed points on that scale, not a slider:

Because every preset aims at a bitrate rather than a quality level, the resulting size scales almost linearly with duration. An hour of audio at 96 kbps lands in roughly the same neighbourhood whether it is a podcast or a piano recital, which is what makes this useful for clearing a size limit.

The flag that drops your album art

The full argument list the module builds is short enough to read whole: -vn -c:a libmp3lame -b:a 96k on the default preset, with 96k replaced by 64k or 40k on the other two, and -ac 1 appended when you pick the speech preset.

That leading -vn is worth knowing about. It tells FFmpeg not to write any video stream into the output, and inside an MP3 the embedded cover image is stored as precisely that kind of stream. So the compressed file comes out without artwork. For a file you are about to email or attach to a message that is usually irrelevant, but it does mean the compressed copy is not a drop-in replacement for the one sitting in your music library.

Mono is a second lever, not just a lower number

People tend to read the three presets as one dial turned further each time. They are not. The speech preset changes two independent things, and the channel count is doing at least as much work as the bitrate.

A stereo MP3 has to describe two signals. Collapsing them to one, on material where both channels carry essentially the same voice, does not halve the perceived quality because there was nothing in the difference between them to lose. That is why 40 kbps mono can be more intelligible on a voice memo than 64 kbps stereo would be, despite the smaller number. If you want to make that trade without also re-encoding at a lower bitrate, the stereo to mono converter does the downmix on its own, and it accepts WAV, M4A, OGG and FLAC as well as MP3.

Running a file through the encoder

  1. Drop your .mp3 on the box above, or use Choose a file. Other audio extensions are turned away before anything runs.
  2. Pick a Compression target. Email attachment is the default and the sensible starting point for anything with music in it.
  3. Click Compress MP3. Encoding happens on your own hardware, so a long file takes a while, and Cancel stops it.
  4. Check the before and after sizes printed above the download button, then save the file.

Generational loss, and why the source matters more than the preset

The single biggest factor in how good the result sounds is not which preset you choose, it is what you fed in. A 320 kbps rip has a lot of headroom and takes a drop to 96 kbps gracefully. A file that was already saved at 64 kbps has very little left, and pushing it down again produces the swirly, underwater texture people associate with bad audio.

There is also an ordering question. Cutting the file down before compressing it usually beats compressing harder: trimming an MP3 uses a stream copy rather than a re-encode, so removing the dead first minute of a recording costs you no quality at all, and stripping the silent gaps out can take a surprising amount off a talk recording. If you also want consistent loudness, run the loudness normalizer first and compress afterwards, so the bitrate reduction is the last lossy step rather than one that gets re-processed. The audio section has the rest of those tools, and there is a longer write-up on the trade-off in the guide on choosing a bitrate for voice versus music.

The size check that can hand your bytes straight back

Lowering a bitrate number does not guarantee a smaller file. If your input was encoded at 48 kbps and you select the 96 kbps preset, the honest output is bigger than the input, and returning that would be an absurd result for a tool called a compressor.

So after the encode finishes, the module compares the new blob against the original file size and, when the new one is not smaller, returns your original bytes instead. The download still carries a -compressed suffix in its name, which means the filename is not evidence of anything. Trust the size line above the button.

See it in action

Screenshot of the Compress MP3 tool with sysfenix-sample.mp3 (72 KB) loaded, Compression target set to Email attachment, 96 kbps, smaller with near-original sound
Compress MP3 mid-process: sysfenix-sample.mp3 (72 KB) loaded, Compression target set to Email attachment, 96 kbps, smaller with near-original sound.
Screenshot of the Compress MP3 result screen showing sysfenix-sample-compressed.mp3 ready to download (36 KB, 50% smaller)
The finished result: sysfenix-sample-compressed.mp3 ready to download (36 KB, 50% smaller). The download link is a local blob URL — the file never leaves your device.

Frequently asked questions

Does compressing keep the album art embedded in the file?

No. The argument list starts with -vn, which tells FFmpeg to leave every video stream out of the output, and an MP3's embedded cover image is carried as exactly such a stream. The audio is re-encoded and the artwork is dropped. The one exception is the never-larger guard described below, because when that fires you get your original bytes back untouched, artwork and all. If the artwork matters, keep the original file and treat the compressed copy as a send-only version.

What encoder and bitrate mode does this actually use?

Every preset runs libmp3lame with a target bitrate passed through -b:a, rather than the quality-based variable-bitrate setting the encoder also offers. Aiming at an average bitrate makes the output size roughly predictable from the duration, which is exactly what you want when the goal is clearing an attachment limit rather than winning a listening test.

Is re-encoding an MP3 worse than encoding from a lossless source?

Yes, and it is worth understanding why. Your MP3 has already had frequency content discarded once, and this pass decodes what survived and throws away more from that reduced signal. The artefacts compound rather than cancel out. Starting from a WAV or FLAC master, if you still have one, always gives a better result at the same target bitrate.

Why is 40 kbps the only preset that also switches to mono?

Because the two savings stack for speech and only for speech. A voice recording carries its meaning in a fairly narrow band and has no stereo image worth protecting, so halving the channel count costs nothing you can hear while roughly doubling the bits available per channel. Applied to music, the same downmix collapses the entire stereo mix into one channel and is immediately obvious.

The output is the same size as my input. What happened?

The tool ran the encode, compared the result against your original file, and found the new one was not smaller, so it handed back your original bytes untouched. That is what happens when the source is already encoded below your chosen preset's bitrate. Pick a lower preset if there is one left, or accept that this file is already about as small as a fixed-bitrate MP3 re-encode can make it.

Can I compress a whole folder of MP3s at once?

Not here. This page takes one file per run, so a batch means dropping each file, choosing the preset and downloading the result before moving on. That is a deliberate consequence of running the encoder in your own tab rather than on a server farm, since a queue of long files would tie up the page for a long time with no way to see which one failed.

Related tools