Join MP3 Files Without Gaps or Clicks
Joining MP3s by copying bytes breaks timing and leaves gaps. Here is why, what a proper re-encode does at the seam, and when to export WAV instead.
The short answer
Join MP3s with a tool that decodes every file and encodes one new stream. Do not glue the files together byte by byte. A proper join has no gap at the seam, because the second file starts on the exact sample where the first one ends. In our test, two 10-second MP3 tones joined this way showed no silence at the seam (checked down to -60 dB), and the same two files exported as WAV came to exactly 20.000 seconds. The only cost is one extra MP3 encode, which adds a few milliseconds of encoder padding at the very end of the file, not in the middle. Use [PixelTools' audio joiner](/join-audio) for this; it runs in your browser and the files are not uploaded.
Why copying the files together goes wrong
You can paste two MP3 files end to end with `cat a.mp3 b.mp3 > joined.mp3` or the Windows `copy /b`, and many players will still play it. But MP3 files carry a header with the length and a seek table for the first file only. We joined two 10-second tones that way and ffprobe reported the result as 18.6 seconds instead of 20. Players that trust that header show the wrong length and jump to the wrong place when you drag the timeline. Each file also ends with a little padding from its own encoder, which can leave a tiny pause or tick where the two meet. It only works cleanly when both files came from the same encoder with the same settings.
Mixed sample rates and voice memos
Files from different sources rarely match. A phone voice memo is often mono at 48 kHz, a downloaded track is stereo at 44.1 kHz. A plain byte join of those can play too fast, too slow or with a click, because the player cannot change rate midway. PixelTools converts every input to 44.1 kHz stereo before joining them. We checked it with two mono 48 kHz memos: the joined file came out as 44.1 kHz stereo and 60.0 seconds, the sum of the two. The tradeoff is that a mono memo becomes a stereo file that carries the same sound in both channels. That is harmless, but it means a joined voice memo is not a bit-for-bit copy of the original.
MP3 or WAV for the joined file
Pick WAV when the join has to be exact, and MP3 when size matters. WAV stores the audio uncompressed, so there is no encoder padding at all: our two-tone test came out at exactly 20.000 seconds, while the same join saved as MP3 was 20.036 seconds, 36 ms of padding at the end. Neither shows a gap at the seam. If you plan to edit the joined audio further, join to WAV first and convert to MP3 last, so the audio is only compressed once. The [MP3 to WAV converter](/convert-audio/mp3-to-wav) goes the other direction if you already have the joined MP3 and want to edit it without more quality loss.
Order, limits and a final check
Files join in the order you arrange them, so set the order before you export. The joiner takes up to 20 files at once, each up to 2 GB, in MP3, WAV, M4A, OGG or FLAC, and the output can be a different format from any input. After exporting, play the last few seconds of each original and the matching moment in the joined file. To remove silence from the start or end of a clip first, the [audio trimmer](/trim-audio) does that before you join. Keep your originals until you have listened to the result.
Frequently asked questions
Try it on PixelTools — free, no upload needed