Audio Joiner concatenates the decoded channel samples of every selected file in list order, so the last sample frame of one file is followed immediately by the first sample frame of the next file with no inserted silence, no overlap, no crossfade, and no normalization. The tool is built for users who want one gap-free WAV output from two to ten browser-decodable sources without any of the smoothing, padding, or transitions that other audio mergers sometimes add.

The reason this matters is that "joining" can mean very different things in audio software. Some tools insert a short silence so listeners hear a breath between tracks, others apply a short crossfade so two clips blend smoothly, and a few normalize loudness across files. Any of those steps will change the original timing of the material. If you are stitching narration takes that need to land on the millisecond, a podcast intro that must start on the downbeat of the next file, or game audio cues whose playback timing must match code triggers, those edits are unacceptable.

are gaps or fades added between files when i join audio
No Gaps or Fades When You Join Audio Files

What "No Gaps and No Fades" Actually Means

The join is a direct concatenation. Each file is decoded by the Web Audio API into one or more AudioBuffer channel arrays, and the tool copies those arrays end-to-end into a single output buffer. The last sample frame of one decoded track is followed immediately by the first sample frame of the next track in the output channel arrays. No extra samples are inserted, no samples are mixed across tracks, and no amplitude is scaled.

The contract reflects this exactly: decoded channel samples are concatenated directly in list order with no inserted silence, overlap, crossfade, or normalization. That is the same result you would get from running a raw concat on PCM bytes. If you need a fade, overlap, loudness match, or trim, the joiner is not the right tool, by design.

Limits That Apply to a Gap-Free Join

A direct concatenation only stays gap-free if every file is decoded into a compatible shape. The join enforces a small set of explicit limits so the math stays consistent, and rejects the selection rather than silently remixing, downmixing, or trimming to make it fit.

LimitValue
Files per selection2 to 10
Per-file size25 MiB (26,214,400 bytes)
Total selection size100 MiB (104,857,600 bytes)
Decoded duration30 minutes maximum
Channel countUp to 8; all files must match
Sample rateUp to 192 kHz; one shared context rate
Total channel-samples30,000,000 across all channels

A high-rate or multichannel selection can hit the sample budget before the time budget, and that check runs before any join begins. Nothing is shortened, downmixed, downsampled, or omitted to make a selection fit; the selection is rejected with a specific message instead.

How to Join Audio Files Without Gaps or Fades

This is the workflow that produces a gap-free WAV. The whole process runs locally in your browser, so nothing is uploaded and the original files stay untouched on disk.

  1. Open Audio Joiner and choose between 2 and 10 browser-decodable audio files from your device. The picker recognizes common MP3, WAV, M4A, AAC, Ogg, WebM, and FLAC extensions and MIME types, although the actual decoding still depends on what your browser and operating system support.
  2. Wait for the browser to finish decoding each file. Sample rate, channel count, and total duration are read from the decoded buffers, not from filename guesses.
  3. Use the Move up and Move down controls next to each track to put the list in the order you want. Reordering updates both the decoded-buffer order and the visible list, and clears any older WAV so a stale result cannot claim a previous sequence.
  4. Click Join in this order. The tool concatenates the channel arrays, clips each float sample to signed PCM16, and writes a new RIFF/WAVE file.
  5. Preview the resulting WAV in the page, then download it to your device. The download is a fresh PCM16 file encoded locally; the original codec, bitrate, tags, and metadata are not preserved.

If any file is damaged, encrypted, incomplete, mislabeled, or in a codec variant that the current browser cannot decode, the join fails with a clear error rather than producing a partial WAV.

Channel Matching and Sample Rates

Because the join is a direct sample-by-sample concatenation, the output channel count must be uniform across the selection. All decoded tracks must share the same channel count, and the joiner rejects a mono and stereo mixture instead of silently duplicating, dropping, averaging, or remapping channels. Matching channels are retained in their decoded order and concatenated independently before WAV interleaving.

Sample rates are handled differently. The browser's decodeAudioData call uses one shared AudioContext, and Web Audio may resample sources to that context's working sample rate. The rate shown for the tracks and the result can therefore differ from the rate stored in the original files, and the output does not preserve independent source sample rates. If you need to keep an exact source rate, decode your sources in an editor that lets you set the AudioContext rate, or use a command-line tool with a fixed sample-rate flag.

What the Output WAV Is, and What It Is Not

The downloaded file is a freshly encoded RIFF/WAVE with interleaved, little-endian, signed 16-bit PCM samples. The encoder writes the RIFF size, the WAVE and fmt identifiers, the PCM format tag, channel count, decoded sample rate, byte rate, block alignment, 16-bit depth, the data identifier, and the exact data byte length. Float samples are clipped to the range from -1 through 1, where negative full scale maps to -32768, positive full scale maps to 32767, and non-finite values are written as silence.

Because PCM16 WAV is uncompressed, the output is often much larger than the original MP3, AAC, Opus, Vorbis, or FLAC files. The output also does not preserve the original codec, bitrate, encoder settings, tags, album art, chapters, cue points, loop points, loudness fields, timestamps, or any other container metadata. It is a new static PCM representation of the browser-decoded samples. Keep your source files, and verify the downloaded duration, order, joins, channel playback, and file size before deleting anything.

When You Need Something Different

A direct concatenation is the right answer for some tasks and the wrong answer for others. Use Audio Cutter when you need an exact time range from a single file rather than the full track, and reach for a dedicated editor when you want fades, loudness matching, channel conversion, compressed output, metadata preservation, or sample-level repair. The joiner is designed to be honest about what it does: no surprises, no silent padding, no transitions you did not ask for.