Joining audio in your browser does not upload your audio files to any server when the joiner runs entirely client-side. The Audio Joiner reads each file you pick, decodes it through the Web Audio API in the same browser tab, and concatenates the resulting channel samples before writing a single PCM16 WAV for download. File reading, decoding, channel concatenation, header writing, preview playback, and the final download all stay on your machine, and the temporary local object URLs used for preview and download are released when you replace the selection or close the page. The tool does not see, store, or transmit your recordings: nothing leaves your device except the freshly encoded WAV you choose to save. This matters for voice memos, work calls, podcast masters, and any other audio that contains content you would rather not pass through a third-party server. The rest of this article walks through the exact local steps, the limits that guard the in-browser pipeline, and what the resulting WAV actually contains.

are my audio files uploaded when i join audio
Are Audio Files Uploaded When You Join Audio Locally?

What "Joining Audio" Actually Does in Your Browser

Joining audio means concatenating the decoded channel samples of two or more files in a chosen order, then writing a single output that can be played back or shared. In a fully in-browser joiner, that work happens in three stages: the picker reads each file, the Web Audio API decodes each file into an AudioBuffer, and the joiner copies the decoded samples into one big Float32Array per channel before encoding the result as a WAV. None of those stages requires a network round trip. The same browser tab that opens the picker is the one that decodes the audio, builds the join plan, and produces the file you download.

Because the join is "last sample of track A, then first sample of track B," the output is a faithful chain of the source buffers at the resolution the browser settled on. There is no overlap, no crossfade, no normalization, no transition, and no automatic trimming added between the original tracks. If you need fades, loudness matching, or sample-level repair, this is not the right tool for the job; a dedicated editor is. For the common case of stitching files together in a specific order, the in-browser pipeline produces a result whose order, sample data, and channel identity you can audit by ear.

Why Files Stay Local With an In-Browser Joiner

An in-browser joiner keeps your files on your device because every operation happens in JavaScript inside the page you have open. The file picker hands the joiner File objects directly from your disk; those File objects never leave the page until you explicitly trigger the download. Decoding uses the Web Audio API's decodeAudioData method on a single shared AudioContext, which means audio is decoded by the browser's own audio engine rather than by a remote service. The decoded buffers, the join plan, the temporary object URLs used for preview, and the freshly encoded WAV all live in your tab's memory and on your local drive.

Once the work is done, the joiner releases the object URLs, invalidates older jobs, and closes the AudioContext so a slow decode from an earlier selection cannot overwrite a newer one. That cleanup is what stops a previous result from being mistaken for the current one if you reorder the list. From a privacy standpoint, the only artifact that exists outside your machine is the WAV file you choose to save yourself; the joiner does not upload a copy, store a thumbnail, log your filenames, or keep any state on a server between sessions.

Audio Joiner Limits You Cannot Hit Without Checking

The browser-side pipeline has hard limits because the joiner refuses to silently downsample, downmix, or shorten your audio to fit. Before any decoding begins, the picker validates the selection against these rules:

LimitMaximumWhat happens if exceeded
Files per selection2 to 10Selection rejected with a specific message
Per-file encoded size25 MiB (26,214,400 bytes)Selection rejected
Total encoded size100 MiB (104,857,600 bytes)Selection rejected
Total decoded duration30 minutes across all filesSelection rejected
Channel count per fileUp to 8, and all files must matchChannel mismatch rejected; high count rejected
Decoded sample rateUp to 192 kHzSelection rejected
Total channel-samples30,000,000 samples across all channelsSelection rejected

Because the working sample rate is set by the shared AudioContext, a high-rate or multichannel selection can fill the 30 million-sample budget before it hits the 30-minute ceiling. The same goes for mono and stereo: a mono file and a stereo file in the same selection is rejected outright rather than being silently duplicated, dropped, averaged, or remapped to a common channel layout. Because limits are stated up front, you can split a long recording or convert a multichannel mix before you start, instead of finding out after the joiner has decided for you.

How to Join 2–10 Audio Files Without Uploading Them

Joining 2 to 10 files locally is a three-step task: pick, reorder, join. The Audio Joiner handles each step in your browser.

  1. Open the Audio Joiner and select 2 to 10 browser-decodable audio files together. Each file must be at most 25 MiB and the whole selection must not exceed 100 MiB.
  2. Wait for the browser to decode every file through its built-in audio engine. Preview each track in the list to confirm you picked the right files.
  3. Use Move up or Move down on each entry until the list reflects the exact sequence you want in the final WAV.
  4. Choose Join in this order. The joiner rebuilds the plan, copies each decoded channel into one Float32Array at cumulative frame offsets, and prepares the WAV for preview.
  5. Listen to the preview, then download the file. The download is a freshly encoded 44-byte RIFF/WAVE header followed by interleaved little-endian signed 16-bit PCM samples.

Reordering clears any older WAV, so you never see a previous order masquerading as a new result. If you want to start over with different files, the file input is reset on every choice, and picking the same files again is safe. Listening to the preview before download lets you catch a wrong order, a bad decode, or a sample-rate surprise without losing the original sources.

What the Output WAV Keeps and What It Drops

The downloaded WAV is a brand-new static PCM16 file built from the decoded buffers in your tab. It keeps the order you set, the channel layout each file decoded to, and the exact sequence of samples the Web Audio API produced. The header is written explicitly: the RIFF size, the WAVE and fmt identifiers, the PCM format tag, the channel count, the decoded sample rate, the byte rate, the block alignment, the 16-bit depth, the data identifier, and the exact data byte length. Float samples are clipped to the -1 through 1 range, with negative full scale mapped to -32768, positive full scale to 32767, and any non-finite values written as silence.

The WAV drops everything that came from the original container. It does not preserve the source codec, bitrate, encoder settings, ID3 or Vorbis comment tags, album art, chapters, cue points, loop points, loudness fields, timestamps, or any other metadata. PCM WAV is also uncompressed, so the file can be several times larger than the MP3, AAC, Opus, Vorbis, or FLAC sources you selected. Before you delete the originals, play the downloaded WAV end to end and check the duration, order, joins, channel playback, and file size against what you expected; once the originals are gone, the only copy is the one on your disk.

Privacy vs. Cloud Tools: What Changes

The practical difference between an in-browser joiner and a cloud joiner is where the audio lives while it is being processed. With an in-browser tool, every byte stays in your tab; with a cloud tool, the same bytes travel to a remote server, sit in working storage while the service concatenates them, and remain there until the provider purges them according to a policy you do not control. That distinction matters for recordings of meetings, medical dictations, client calls, voice messages, or any audio whose content you do not want leaving the building.

AspectIn-browser joinerCloud joiner
Where audio travelsStays in your browser tabUploaded to a remote server
Account requiredNoUsually yes
Result deliveryDirect browser downloadDownload from server or shared link
Source metadata preservedNo (fresh PCM16 WAV)Varies by service
Failure modesPer-file or total size rejection before decodingUpload stalls, quotas, account locks

An in-browser joiner also narrows what can fail in the middle: there is no upload step that can stall at 99 percent, no quota that can reject your batch, and no account that can lock you out of your own files. The trade-off is scope. If you need fades, loudness matching, channel conversion, compressed output, metadata preservation, or sample-level repair, reach for a dedicated editor instead. For stitching 2 to 10 recordings into one local WAV without sending them anywhere, the in-browser path is the simplest match for the task. If you want to confirm the same local-only behavior for a related tool, see how reverse audio keeps files in the browser.