Audio Joiner produces a single gap-free PCM16 WAV from 2 to 10 browser-decoded tracks in the exact list order, and that result is previewed, checked, and downloaded entirely in your current tab. To check the result after you join audio, preview the new WAV in the tool, compare the decoded track list and the reported sample rate, channel count, and total duration against what you expected, and only then download. The downloaded file is a freshly encoded RIFF/WAVE file with interleaved little-endian signed 16-bit PCM samples, so its header bytes, byte rate, and data length can be read with any WAV inspector to confirm the join was faithful. Because no fade, silence, overlap, crossfade, or normalization is inserted, the joined duration equals the sum of the decoded track durations, and the channel count of the output equals the channel count of every decoded input. Files are never uploaded, so every verification step happens locally on the same tab.

What the Joiner Produces Before You Download
Audio Joiner is a browser-local concatenator that combines 2 to 10 audio files into one PCM16 WAV in the exact order shown in the decoded list. Every file is read, decoded through one shared AudioContext, concatenated at the channel level, encoded, previewed, and downloaded without ever leaving your browser tab. The Audio Joiner tool builds the WAV from the decoded channel arrays themselves, so the last sample frame of track A is followed immediately by the first sample frame of track B in the output buffer. There is no inserted silence, overlap, crossfade, normalization, transition, or automatic trimming, which is why the joined duration should equal the sum of the decoded track durations when your work is finished.
Because the join operates on decoded samples rather than on the source containers, the output 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. The WAV is a fresh, static PCM representation of the browser-decoded samples, so it can be much larger than the original MP3, AAC, Ogg, Opus, Vorbis, or FLAC files. This matters when you check the result after you join audio, because an unexpectedly large file size is a normal consequence of uncompressed PCM16 storage rather than a sign that something went wrong. If the file size looks reasonable for the duration you played back, the join is almost certainly intact.
How to Verify the Joined Result
Before you delete any original recording, walk through the same checks the joiner itself uses internally. Each step targets a property the tool is contractually required to preserve, so a green check on all seven gives a high-confidence result.
- Open Audio Joiner and pick the same 2 to 10 files you intended to combine, staying inside the 25 MiB per-file and 100 MiB total input budgets shown next to the picker.
- Wait for the browser to decode every file. Each decoded track appears with its own duration, sample rate, and channel count; read those values and confirm the channel count matches across every track, because a mono and stereo mixture is rejected rather than silently remixed.
- Use Move up and Move down on the decoded list until the order is exactly what you want. Reordering changes both the decoded buffer array and the visible list together, and clears any older WAV so a stale result from a previous order cannot survive.
- Press Join in this order and play the preview. Listen for the boundary between tracks and confirm the transition is sample-tight with no inserted silence, overlap, crossfade, or normalization.
- Compare the displayed total duration against the sum of the decoded per-track durations shown just above it. The two numbers should match within sub-second rounding.
- Download the WAV, then open it in any player or header inspector and confirm duration, channel count, sample rate, and the absence of metadata tags.
- Keep the source files until you have verified the downloaded duration, order, joins, channel playback, and file size match your expectation.
Reading the WAV Header to Confirm Format
The downloaded file is a newly encoded RIFF/WAVE container with interleaved little-endian signed 16-bit PCM samples. The encoder writes a 44-byte header whose fields you can read with any WAV inspector to confirm the join was faithful. Float samples from the decoder are clipped to the range from -1 through 1, with negative full scale mapped to -32768 and positive full scale to 32767, and any non-finite values are written as silence, so the byte length of the data chunk matches the declared data length with no padding.
| Header field | Expected value | Why it matters |
|---|---|---|
| RIFF size | 36 plus the data byte length | Confirms the declared payload matches the file |
| WAVE and fmt identifiers | ASCII "WAVE" and "fmt " | Identifies a valid RIFF/WAVE container |
| PCM format tag | 1 (uncompressed PCM) | Confirms there is no lossy re-encoding |
| Channel count | Matches every decoded track | Catches any silent channel remap |
| Sample rate | Decoded working rate of the AudioContext | May differ from rates stored in the original files because Web Audio can resample sources to its working rate |
| Byte rate | Sample rate times channels times 2 | Verifies 16-bit little-endian interleaving |
| Block alignment | Channels times 2 | Confirms frame width |
| Bits per sample | 16 | Confirms signed 16-bit depth |
| data identifier and size | "data" followed by exact byte length | Confirms no padding and no truncation |
Golden stereo fixtures inside the joiner use different values in the left and right channels across two tracks, which is how the tool proves that track order and channel identity survive the concatenation. If your downloaded header matches the table above and your left-right playback still matches the decoded list order, the join is faithful at the byte level and at the channel level.
Limits and Reasons a Result Is Rejected
Limits in Audio Joiner are explicit rather than silent. A selection is rejected with a specific message the moment it crosses a budget, and nothing is shortened, downmixed, downsampled, or omitted to fit. When a join refuses to produce a result, the reason is one of the budgets below.
| Limit | Maximum | What happens when exceeded |
|---|---|---|
| Track count | 2 to 10 files per selection | The picker rejects a selection outside that range |
| Per-file size | 25 MiB (26,214,400 bytes) | The file is flagged before decoding starts |
| Total input size | 100 MiB (104,857,600 bytes) | The selection is rejected with a budget message |
| Decoded duration | 30 minutes across all tracks | Decoding stops and the join is refused |
| Channel count | 8 channels per track | Tracks above eight channels are rejected |
| Sample rate | 192 kHz per track | Rates above 192 kHz are rejected |
| Channel-sample budget | 30,000,000 samples across all channels | A high-rate or multichannel selection can reach this before the duration cap |
| Channel-count match | All tracks decode to the same count | A mono and stereo mixture is rejected, not silently remixed |
Damaged, encrypted, incomplete, mislabeled, or unsupported files produce a clear error as well, because a recognized extension does not guarantee that every codec variant can be decoded by Safari, Chrome, Firefox, or another browser. The picker recognizes common MP3, WAV, M4A, AAC, Ogg, WebM, and FLAC names and MIME types, but the actual decode work depends on the codecs available in your current browser and operating system. For a deeper look at why the join refuses to slip in a fade or stretch the timeline between tracks, the no-gaps and no-fades joining guide walks through the channel-by-channel concatenation that the joiner runs.
When to Use a Different Tool Instead
Audio Joiner is a strict concatenator, so several checks a creator might want are deliberately outside its scope. Reach for Audio Cutter when you need a precise time range rather than a full track, because it produces a trimmed PCM16 WAV from a chosen start and end point. Use Audio Effects when you want fades, echo, reverb, or normalization applied before or after the join, because the joiner itself does not change sample values. If your workflow needs crossfades, loudness matching, channel conversion, compressed output, or metadata preservation, a dedicated offline editor is the right place, because the WAV Audio Joiner writes discards all of that container data and exposes only the decoded sample stream.
Related reading: How Do I Choose the Right Approach to Join Audio.