Why gluing MP3 files together isn't quite enough
An MP3 is a long run of small, independent frames, so two MP3s can be joined just by putting one after
the other. That is what copy /b on Windows or cat on a Mac does, and many
people do it for audiobook chapters, lecture parts or a voice memo split in two. The result usually
plays. It also keeps three leftovers from the files it was made of:
- The first file's information block. MP3s start with a small block that gives their length. After a plain join it still describes only the first file. With constant-bitrate files that is harmless, but with variable-bitrate files players guess the length from it and get it wrong.
- Tags in the middle. The title, artist and cover picture of the second and later files end up inside the sound.
- A small gap at every join. Each MP3 encoder adds a few dozen milliseconds of silence at the start and the end of a file, which players remove only at the ends of a whole file.
What we measured
We split a 20-second test recording (a tone sweep with clicks, so any gap or shift shows) into three parts of 7, 6 and 7 seconds, made each part a separate MP3, and joined them in Chrome 154 on 13 October 2026. Each result was decoded with FFmpeg and lined up against the original recording.
| Method | Length shown in Chrome | Extra silence at the joins | Sound |
|---|---|---|---|
| Plain join, constant bitrate (128 kbps) | 20.15 s | 27 and 35 ms | unchanged |
| Plain join, variable bitrate | 18.34 s (real length 20.06 s) | not measured | unchanged |
| This tool, without re-encoding | 20.06 s, constant and variable bitrate | 27 and 35 ms | byte for byte the same |
| This tool, seamless | 20.00 s | 0 ms at both joins | encoded once |
Windows File Explorer was stricter than Chrome: it listed the plainly joined variable-bitrate file as 00:00:07, the length of the first part alone, and the file joined here as 00:00:20.
The joins without re-encoding took 0.15 seconds for the three files: no frame is decoded, so the time depends on reading the files, not on their length. The new information block is written for the whole file, so a joined variable-bitrate audiobook shows its real length, and the tags of the later parts are removed so they don't sit inside the audio.
Which mode to use
Without re-encoding is right for separate pieces: chapters, songs, lectures, voice notes. The quality can't change because nothing is encoded, and a pause of a few dozen milliseconds between chapters is shorter than the pause a narrator leaves anyway. It needs files with the same sample rate that are all mono or all stereo; different bitrates are fine.
Seamless is for one continuous recording that was split, such as a concert, a DJ mix or a long interview recorded in parts. Each file is decoded with its encoder silence removed, the parts are laid end to end and the whole thing is encoded once, at the bitrate of the best input unless you choose another. In our test both joins landed on exactly the right sample. Files in different formats, such as a 22 kHz mono voice memo and a 44.1 kHz stereo song, are always joined this way, and the result says why.
Order, names and tags
Files are added in natural name order, so part 2 comes before part 10, and you can drag them or use the arrows to change it. The joined file takes its name from the first one, and keeps that file's title, artist and cover art.
If one part is too big once joined, Compress MP3 brings it under a size limit. To cut a few seconds from the start or end first, use Trim audio, which also works without re-encoding. Parts in other formats can be turned into MP3s with M4A to MP3 or WAV to MP3.