In-browser audio joiner

Audio Joiner

Combine MP3, WAV, M4A, FLAC, and OGG clips into one ordered audio file. Each input is decoded locally, normalized to a common 44.1 kHz stereo render path, and exported in the format you choose. You can reorder, trim, and preview clips before export. Core editing stays on this device; optional AI and transcription features use clearly labeled server jobs.

Core edit stays local

AI and transcript are opt-in server steps

Drop an audio file here

or click to browse

MP3WAVFLACM4AOGG
Core edit stays local. File intake, timeline editing, preview, and export run in this browser. AI Enhance and Transcript upload only after you choose those panels and confirm their separate processing boundary.

Use this when

  • You need one ordered file from several supported audio sources.
  • A new render at a common sample rate and channel layout is acceptable.

Choose another approach when

  • You need bit-for-bit concatenation without decoding or resampling.
  • The combined working set is too large for your browser or device memory.

Reproducible example

Listen to the CLI reference fixture and output

These deterministic files are FFmpeg CLI references, not measurements of the shipped browser renderer or microphone capture. Automated checks are shown below; independent human review remains pending.

Automated checks passed

Synthetic input 1

SHA-256 146533ae274550b1aceb277c222323578d84c104122aa85e9b9421a3abef59f1

Download input
  • Duration: 1 s
  • Size: 176.4 kB
  • Sample rate: 44,100 Hz
  • Channels: 2

Synthetic input 2

SHA-256 908fff30575445d37b4795f0c043d29424f50024954e83cb4daf65260db948b5

Download input
  • Duration: 1.25 s
  • Size: 220.5 kB
  • Sample rate: 44,100 Hz
  • Channels: 2

Rendered output

SHA-256 514aa29dc0d71e255fc961e1f3ef2f81b3ad3f6190e96024ec3db915ef6e3959

Download output
  • Duration: 2.25 s
  • Size: 396.9 kB
  • Sample rate: 44,100 Hz
  • Channels: 2

Automated fixture check

  • Output duration Pass.
    Observed: 2.25 s. Expected: 2.25 ± 0.02 s.
  • First segment frequency Pass.
    Observed: 440 Hz. Expected: 440 ± 1 Hz.
  • Second segment frequency Pass.
    Observed: 660 Hz. Expected: 660 ± 1 Hz.
  • Join-boundary signal level Pass.
    Observed: 0.004157 FS. Expected: ≤ 0.01 FS.

Environment

audio-v1 · Sep 3, 2026, 2:44 AM UTC

FFmpeg CLI · darwin arm64 · v23.7.0

ffmpeg version 8.1.2 Copyright (c) 2000-2026 the FFmpeg developers

ffprobe version 8.1.2 Copyright (c) 2007-2026 the FFmpeg developers

@ffmpeg/ffmpeg 0.12.15 with @ffmpeg/core 0.12.10

Public evidence manifest
evidence.json
Fixture license
CC0 1.0
Generator source
generate-audio-flagship-evidence.mjs.txtSHA-256 228ca719f843debbddd1e1b3482f2b6d406b3d89afab34ef7797eacf01c998c7
Source base commit
e11eef48f52df732e0ef32d69f7ea10635b150bc
Browser renderer source
src/lib/audio/editor.tsSHA-256 159c26bb4f175dc8c823d2c70178f631d0125cf8059b3f8ea1494a3f3fba6479

The repository is private. The exact generator snapshot is public; the browser renderer and commit are retained privately and pinned here by full hash.

Fixture rights: CC0 synthetic audio generated in the repository. No customer or third-party recording is used.

Reference commandffmpeg -y -hide_banner -loglevel error -i public/fixtures/audio/v1/join-a-440hz.wav -i public/fixtures/audio/v1/join-b-660hz.wav -filter_complex '[0:a]atrim=start=0:end=1.000,asetpts=PTS-STARTPTS,aresample=44100,aformat=sample_fmts=fltp:channel_layouts=stereo,afade=t=out:st=0.9940:d=0.006[c0];[1:a]atrim=start=0:end=1.250,asetpts=PTS-STARTPTS,aresample=44100,aformat=sample_fmts=fltp:channel_layouts=stereo,afade=t=in:st=0:d=0.006[c1];[c0][c1]concat=n=2:v=0:a=1[out]' -map '[out]' -vn -c:a pcm_s16le -map_metadata -1 -bitexact public/fixtures/audio/v1/joined-reference.wav

Limitations and failure modes

  • Every source is decoded and rendered again. Lossless output avoids an additional lossy codec, but it does not preserve the original bitstream.
  • Six-millisecond microfades reduce join clicks but cannot guarantee a seamless boundary for every waveform.

Methodology

The public corpus is deterministic. Full hashes, commands, engine version, and semantic signal checks are recorded in the manifest. These files exercise the native FFmpeg reference graph; browser workflow behavior is a separate release gate and device speed is not inferred.

Technical sources

How it works

Step 1

Load and add clips

Choose the first audio file, then add more. Each source becomes a separate clip on the timeline.

Step 2

Set the sequence

Drag, trim, and preview clips in the order you want. Short microfades reduce clicks at internal joins.

Step 3

Export one file

Render the complete timeline as MP3, WAV, FLAC, M4A, or OGG on this device.

Questions from current search and product use

How many files can I join?

There is no fixed clip-count limit. Before decoding, FileMorf estimates each source’s PCM footprint and checks the whole project against a device-aware browser memory budget.

Can I combine different formats and sample rates?

Yes. The editor decodes supported sources and normalizes render branches to 44.1 kHz stereo before joining. That makes mixed sources compatible, but it is a new render rather than a bit-for-bit copy.

Can I control the order?

Yes. Each source becomes a timeline clip. Reorder, trim, copy, or remove clips before you export the combined file.

Does joining upload my audio?

Core editing, preview, and export run locally in your browser. AI Enhance and Transcript are optional account features that upload only after you choose them and see their server-processing disclosure.

Accountability

Author
Jesse Delia
Technical review
Pending independent review
Report a correction
support@filemorf.com

Change history

2026-07-30: Tool-first page, precise processing boundary, synthetic fixture evidence, limitations, and accountability record added.