Compress MP3 Online — Free File Size Reducer
Compress an MP3 file by re-encoding it with the LAME encoder at a lower bitrate, reducing file size while keeping it in the universally compatible MP3 format. Ideal for shrinking audio files for web delivery, email attachments, or limited-storage devices without changing the format itself.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your MP3 file here
or click to browse
Free — no uploads, no signups. Your files never leave your browser.
Settings
Note: Browser-based encoding uses approximate quality targets. For precise CRF compression, copy the FFmpeg command above and run it on your desktop.
Estimated output:
Conversion Complete!
DownloadHow It Works
Unlike a container remux, compressing MP3 to MP3 is a full re-encode: the existing MP3 bitstream is decoded back to raw PCM audio, then re-encoded using the libmp3lame encoder at the target bitrate (default 128k). Because MP3 is a lossy format, this is a lossy-to-lossy transcode — each generation of encoding introduces additional compression artifacts. The degree of quality loss depends on how aggressively you reduce the bitrate relative to the source. A source encoded at 320k re-encoded to 128k will show audible degradation, while a source already at 128k re-encoded at 128k will degrade only marginally. The output file retains the MP3 container, meaning ID3 tags, streaming compatibility, and universal device support are all preserved.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg tool, which handles the full decode-encode pipeline: reading the MP3 container, decoding the MPEG audio stream to raw PCM, and re-encoding it with the specified settings. |
-i input.mp3
|
Specifies the source MP3 file. FFmpeg reads the MPEG Audio Layer III bitstream, identifies the existing bitrate and encoding parameters, and decodes it to uncompressed PCM audio for re-encoding. |
-c:a libmp3lame
|
Selects the LAME MP3 encoder for the audio stream, which re-encodes the decoded PCM audio back into MP3 format. LAME is the gold-standard open-source MP3 encoder and is what most software uses to produce MP3 files. |
-b:a 128k
|
Sets the target average audio bitrate to 128 kilobits per second, which is the compression level applied during re-encoding. Lowering this value (e.g., 96k or 64k) produces a smaller file with more compression artifacts; raising it (e.g., 192k) reduces artifacts but only up to the quality ceiling of the original source. |
output.mp3
|
Defines the output filename and tells FFmpeg to write a valid MP3 container. The resulting file retains full compatibility with all MP3-capable devices, browsers, and streaming platforms, along with any ID3 metadata carried over from the source. |
Common Use Cases
- Reducing a high-bitrate 320kbps MP3 music library to 128kbps to fit more songs on a device with limited storage, such as an older MP3 player or phone
- Shrinking podcast episode files before uploading to a hosting platform that charges by storage or bandwidth, where voice audio rarely benefits from bitrates above 96kbps
- Compressing a large recorded interview or lecture MP3 to meet an email attachment size limit without converting to a different format
- Preparing background music or ambient audio tracks for a web application where fast load time matters more than audiophile quality
- Standardizing a collection of MP3s that have inconsistent bitrates (64k to 320k) to a uniform 128kbps for consistent streaming behavior
- Quickly testing how much quality loss is introduced at a given bitrate before committing to a batch compression of a large audio archive
Frequently Asked Questions
Yes, always — but the extent depends on the bitrate gap between source and output. MP3 is a lossy format, so decoding it produces slightly degraded PCM audio, and re-encoding that audio at a lower bitrate compresses it again with additional artifact introduction. A 320kbps source compressed to 64kbps will sound noticeably worse, while compressing a 192kbps source to 128kbps is often imperceptible for speech and only subtly audible for music. Avoid re-encoding at the same or higher bitrate than the source, as it adds generation loss without meaningful benefit.
For voice-only content like podcasts, interviews, or audiobooks, 64kbps to 96kbps is generally sufficient and produces very small files. Music benefits from higher bitrates — 128kbps is a common balance for casual listening, while 192kbps preserves more high-frequency detail for genres like classical or jazz. Bitrates above 192kbps offer diminishing returns for MP3 and are best reserved for archival, where a lossless format like FLAC would actually be preferable.
ID3 metadata is generally preserved during a libmp3lame re-encode in FFmpeg because FFmpeg reads and passes through metadata by default. However, embedded cover art may occasionally require explicit handling in edge cases. If your tags are missing after conversion, you can add the flag '-map_metadata 0' to the FFmpeg command to explicitly copy all metadata from the input stream.
Replace the '128k' value in the '-b:a 128k' flag with your desired bitrate. For example, use '-b:a 96k' for smaller files suited to voice content, '-b:a 192k' for higher-quality music, or '-b:a 64k' for maximum compression. The full range supported by libmp3lame spans 8kbps to 320kbps, though practical choices are 64k, 96k, 128k, 192k, and 320k. Keep in mind that specifying a bitrate higher than the source's original bitrate does not recover lost quality.
Yes. In a Unix-based terminal (macOS or Linux), you can loop over files: 'for f in *.mp3; do ffmpeg -i "$f" -c:a libmp3lame -b:a 128k "compressed_$f"; done'. On Windows Command Prompt, use: 'for %f in (*.mp3) do ffmpeg -i "%f" -c:a libmp3lame -b:a 128k "compressed_%f"'. This processes every MP3 in the current directory and prefixes the output with 'compressed_' to avoid overwriting originals.
FFmpeg's libmp3lame encoder targets the specified bitrate on average but uses variable or constrained variable bitrate encoding internally in some configurations. For strict constant bitrate output, you can add '-abr 1' or use a VBR quality flag like '-q:a 4' instead of '-b:a'. Additionally, if the source file has a very short duration or large embedded cover art, the metadata portion can represent a disproportionately large share of the total file size, making bitrate-based estimates less accurate.
Technical Notes
Compressing MP3 to MP3 using libmp3lame is a transcoding operation, not a remux — the audio is fully decoded and re-encoded, which means every pass through this process introduces generational quality loss inherent to lossy compression. The libmp3lame encoder (the open-source LAME project) is the industry-standard MP3 encoder and is what most commercial tools use under the hood. The '-b:a' flag sets a target average bitrate (ABR mode), which differs from LAME's VBR mode ('-q:a 0–9') and CBR mode ('-b:a' with '-abr 0'). For maximum compatibility with legacy players and embedded systems, CBR at 128k is the safest choice. MP3 does not support multiple audio channels beyond stereo in practical usage, and libmp3lame will automatically handle downmixing if the source is multichannel. The format does not support subtitles or chapters, so no such data can be embedded or lost in this process. Joint stereo encoding (the default in LAME at lower bitrates) improves perceptual quality at 128kbps and below by encoding the stereo difference channel at reduced resolution, which is usually inaudible but can occasionally cause subtle stereo imaging changes in complex mixes.