No — Audio Joiner does not let you mix mono and stereo files in a single join. Every track you select must decode to the same channel count through one shared browser AudioContext, so a mixture of one-channel and two-channel sources is rejected with a clear error rather than being silently duplicated, dropped, averaged, or remapped. This is an explicit product rule, not a hidden limitation: the join plan validates track count, sample rate, channel count, total frames, duration, channel-sample budget, and the frame offset where every track begins. Because the output is a single PCM16 WAV file with interleaved channels, the joiner cannot write a result whose channel count changes in the middle of the stream. If you have a true mix of mono and stereo material, you need to convert one set to the other before joining, then the joined file will play back correctly on every channel-matched playback chain, with the matching channels retained in their decoded order and concatenated independently before WAV interleaving.

What Happens With a Mono and Stereo Mixture
When you drop a one-channel mono WAV and a two-channel stereo MP3 into the same selection, the tool does not guess at your intent. It does not duplicate the mono track into both left and right, does not downmix the stereo track to a single channel, and does not average the two sources together. It reads the channel count of every decoded buffer and rejects the selection outright if those numbers do not match. The error message points at the specific validation step that failed, so you know exactly which rule and which track caused the rejection.
This is the right behavior for a gap-free concatenation tool. A PCM16 WAV file stores channels in interleaved frames — left sample, right sample, left sample, right sample, in that order. If the joiner tried to splice a one-channel stream into a two-channel stream, every later frame would misalign by one sample, and the result would play shifted, missing a channel, or out of phase on most players. Refusing the join is the only way to keep the output honest to the decoded channel layout.
How Audio Joiner Decodes and Combines Channels
Audio Joiner uses the Web Audio API's decodeAudioData to turn every selected file into an AudioBuffer in the same shared AudioContext. Per the MDN reference for AudioBuffer, each decoded buffer exposes a fixed numberOfChannels, sampleRate, and length in sample frames, and those values come from what the browser actually decoded — not from the file extension or the container metadata.
Once decoding finishes, the joiner compares every track's channel count. If they all agree, each track's Float32 channel data is copied into one combined Float32Array at tested cumulative frame offsets. Channels are kept in their decoded order, so a stereo track written as left then right stays left then right through the whole WAV. The encoder then interleaves channels frame by frame, clips each float sample to the signed 16-bit PCM range, and writes a 44-byte little-endian RIFF/WAVE header around the result.
The whole pipeline runs in the current browser tab. Files are read from your local disk via a file picker, decoded locally, and downloaded as one WAV through a temporary object URL. Nothing is uploaded to a server, and the source files are released from memory when you close the tab or make a new selection.
How to Join Audio Files With the Same Channel Count
This is the workflow for any selection where every file decodes to the same channel count — typically all mono or all stereo.
- Open Audio Joiner and click the file picker. Select 2 to 10 browser-decodable audio files together. Recognized names and MIME types include MP3, WAV, M4A, AAC, Ogg, WebM, and FLAC, but a recognized extension does not guarantee that every codec variant can be decoded by your browser.
- Wait while the tool checks the per-file limit of 25 MiB and the total limit of 100 MiB, then decodes each file sequentially through one AudioContext.
- Preview the decoded tracks. Use Move up or Move down until the list order matches the order you want in the finished WAV. Reordering updates the decoded-buffer array and the visible list together and clears any older result so a stale WAV cannot claim a previous order.
- Select Join in this order. The shared plan validates track count, sample rate, channel count, total frames, duration, the channel-sample budget, and the frame offset where each track begins.
- Preview the PCM16 WAV that the encoder produces. Listen for correct order, correct channels, and a clean cut where one track ends and the next begins.
- Download the WAV. The downloaded file is a newly encoded RIFF/WAVE file with interleaved, little-endian, signed 16-bit PCM samples. Keep the source files until you have checked the joined result.
Why One AudioContext Resamples Everything First
Web Audio may resample source files to the AudioContext's working sample rate. The sample rate you see on the decoded tracks and on the finished result can therefore differ from the rates stored in the original files. The output does not preserve independent source sample rates — every channel in the joined WAV is encoded at the single rate the AudioContext chose.
In practice, this means a 44.1 kHz MP3 and a 48 kHz WAV end up at the same working rate in the joined file. The validation step rejects anything above 192 kHz, and the sample budget of 30 million channel-samples is counted across all channels, so a long multichannel selection can hit the sample limit before it hits the 30-minute duration limit. A high-rate or multichannel selection is the most common way to reach the sample budget before the duration limit, and nothing is shortened, downmixed, downsampled, or omitted to fit either cap.
Output Format, File Size, and What Is Not Preserved
The download is a brand-new static PCM representation of the browser-decoded samples. PCM WAV is uncompressed, so a 5 MB MP3 selection can produce a 40 MB WAV depending on duration and channel count. The encoder writes the RIFF size, the WAVE and fmt identifiers, the PCM format tag, the channel count, the decoded sample rate, the byte rate, block alignment, 16-bit depth, the data identifier, and the exact data byte length — all in little-endian byte order.
The output does not preserve the original codec, bitrate, encoder settings, tags, album art, chapters, cue points, loop points, loudness fields, timestamps, or other container metadata. There is no inserted silence, overlap, crossfade, normalization, transition, or automatic trimming. 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. Float samples are clipped to the range from -1 through 1, with negative full scale mapping to -32768, positive full scale to 32767, and non-finite values written as silence. If you want to confirm exactly how a gap-free join behaves in practice, see No Gaps or Fades When You Join Audio Files for a closer look at that property.
Limits You Can Hit Before the Join Fails
Limits are explicit rather than silent. Nothing is shortened, downmixed, downsampled, or omitted to fit a limit; the selection is rejected with a specific message. The table below summarizes the published budgets that decide whether your selection can be joined at all.
| Constraint | Limit |
|---|---|
| Files per selection | 2–10 |
| Per-file size | 25 MiB (26,214,400 bytes) |
| Total selection size | 100 MiB (104,857,600 bytes) |
| Decoded duration | 30 minutes max |
| Decoded channel count | Up to 8 channels, all tracks must match |
| Decoded sample rate | Up to 192 kHz |
| Total channel-samples | 30,000,000 across all channels |
If a track is damaged, encrypted, incomplete, mislabeled, or in a codec your browser cannot decode, it produces a clear error rather than joining a corrupt result. Every file in one selection is decoded through the same AudioContext, so a selection that mixes a 192 kHz file with a 44.1 kHz file still comes out at one shared working rate — the rate constraint applies to that working rate, not to a per-track average.
When You Need Mixed Channel Counts
Audio Joiner will not produce a result that contains both mono and stereo material. If your project genuinely needs to combine mono and stereo sources, the conversion has to happen before the join, in a tool that is built for channel remapping rather than concatenation. That conversion is outside the scope of Audio Joiner; use a dedicated audio editor for stereo creation, channel duplication, or downmix operations.
Once every track decodes to the same channel count, Audio Joiner takes care of the rest: it validates the plan, copies each decoded channel into one combined buffer, and writes a fresh 16-bit PCM WAV with interleaved channels. Keep the source files and confirm the downloaded duration, order, joins, channel playback, and file size before deleting any original. If you ever need a time range instead of a full track, the Audio Cutter tool produces a matching PCM16 WAV from a single browser-decodable file.