Join clips end to end or stack them on one timeline, with an equal-power crossfade that holds the level through the join, BS.1770 loudness matching between files, and the merged result measured before you download it.
Initializing in your browser…
Turn audio into a waveform image in five styles, exported as PNG or real vector SVG. Reads every channel, shows true level in dBFS, and redraws correctly at any size.
Fade in and out with five curve shapes: linear, exponential, logarithmic, S-curve and equal power. The graph, the preview and the exported file all come from the same function.
Detect tempo from onset autocorrelation, within 0.20 BPM across thirteen known-tempo fixtures. Draws the beats it found and plays them back as a click so you can check by ear.
An intro, the interview and an outro are three separate stereo files that must become one episode.
Input
intro.wav + interview.wav + outro.wav - 0.5 s equal-power crossfade - match levels to -16 LUFS
Output
One stereo file, every clip present, level flat through both joins
The build this replaces dropped every clip after the first whenever the input was stereo: on a two file test the second file measured -120.0 dB, which is absent, and the first file’s right channel was displaced into the second half of the timeline. Both files now land within 0.001 dB of their input level. The crossfade is equal power, so the join holds its level where the linear blend it replaced dipped 3.06 dB, and the clips are measured to BS.1770 (within 0.02 LU of ffmpeg) and matched before mixing.
Join clips end to end, or stack them on one timeline, and see what you got before you download it. The crossfade defaults to equal power so the level does not dip where two clips meet, every clip can be measured to ITU-R BS.1770-4 and brought to a common loudness, and the merged result is measured and played back in the page rather than described.
Join an intro, the interview and an outro into one episode, with level matching so the intro music does not tower over the speech.
String tracks together with an equal-power crossfade, so the level does not sag where one track becomes the next.
Merge several short memos into one recording, with a silent gap of a set length between them so they stay distinguishable.
Stack a voiceover over a music bed in Overlay mode, set where each one starts, and hold the mix under a true peak ceiling.
Every file is decoded with the Web Audio API and the merge works on the raw samples in your browser. Sequential lays the clips out one after another in the order you arrange them; Overlay stacks them on one timeline, each with its own start time, so it doubles as a small multitrack mixer. The timeline drawn above the track list is generated from the same plan the render uses, so what you see is where the audio actually goes.
Three things were measurably wrong with the merge this replaces, and each was measured on a fixture whose right answer was fixed before the tool ran. The output write position was advanced once per channel instead of once per track, so on stereo input every clip after the first was pushed past the end of the output buffer and dropped by a bounds check: merging two stereo tone files produced the first file only, with its left channel in the first half of the timeline and its right channel in the second, and the second file measured -120.0 dB and -116.8 dB at its two frequencies, which is absent. Mono input merged correctly, which is why the fault survived. A mono clip mixed into a stereo output was given silence on the extra channel rather than a copy of itself, a 114.8 dB imbalance. And Overlay divided every clip by the number of clips, so stacking two files put both 6.45 dB below where they started. All three are gone: the four tones of a two-file stereo merge now land within 0.001 dB of their input level, the mono-into-stereo imbalance is 0.0000 dB, and three stacked clips each keep their own level to within 0.001 dB.
The crossfade defaults to equal power, which follows a quarter sine so the two ramps satisfy sin squared plus cos squared equals one and the power stays flat through the join. The linear blend it replaced loses 3 dB in the middle of every crossfade between unrelated clips: measured across a one second join, 3.06 dB against the 3.01 dB the linear law predicts. All five shapes from the fade tool are available, since linear is the right answer when the two clips are correlated, and a crossfade longer than either clip it joins is clamped to that clip rather than gating the join. The alternatives to a crossfade are a butt join and a silent gap of an exact length.
Match levels measures each clip with the same ITU-R BS.1770-4 implementation the volume normalizer uses, and applies the gain that puts it on your target. On a pair of clips written exactly 16 LU apart, the tool read -15.72 and -31.72 LUFS where ffmpeg ebur128 reads -15.70 and -31.70, and after matching the two halves of the merged file measured within 0.00 dB of each other. A true peak ceiling is applied to the finished mix, since summing clips is the operation most likely to push a file over full scale: it either turns the whole mix down or runs a look-ahead limiter, and the panel says which it did and what the mix peaked at first.
Measuring and mixing run in a Web Worker. The Measured Result panel reports the file that was produced, not the settings that produced it: duration, integrated loudness, true peak, sample rate and channel count, with the merged audio playable in the page. Export writes a 16 or 24-bit WAV, which is sample exact and comes out at exactly the length shown, or an MP3 at 128 to 320 kbps, which carries about 49 ms of encoder padding. Sample rate is whatever your browser decoded to, shown in the panel, and a clip that arrives at any other rate is band-limited and resampled rather than relabelled.
No. Each file is decoded by the browser and the merge works on the decoded samples, so any format your browser can play can be mixed with any other. The output format is your choice at download time and is independent of what went in.
Because two unrelated clips do not add up the way one clip does. With a linear blend the power sags in the middle of every join: measured across a one second crossfade between two unrelated sources, 3.06 dB, which is clearly audible as a dip. Equal power follows a quarter sine so the two ramps hold the power constant. Linear is still the right choice when the two clips are correlated, for example two takes of the same material, so it is offered.
Yes. Set the join to Silent gap and choose its length; exactly that much silence is inserted between each pair of clips. A butt join, with neither blend nor gap, is the third option.
It measures each clip with ITU-R BS.1770-4 integrated loudness, the same measurement streaming platforms use, and applies the gain that puts each one on the target you set. On clips written exactly 16 LU apart the tool measured them within 0.02 LU of ffmpeg ebur128, and after matching the two parts of the merged file were within 0.00 dB of each other.
Not while the true peak ceiling is on. Summing clips is exactly the operation that pushes a file over full scale, so the finished mix is measured and held at or below the ceiling, either by turning the whole mix down or with a look-ahead limiter. The panel reports what the mix peaked at before the ceiling and what it peaked at after.
With WAV, yes: the export is sample exact and comes out at the length in the Measured Result panel. MP3 carries encoder padding and lands about 49 ms longer, which is a property of the format rather than of the merge.
There is no fixed cap. Measuring and mixing run in a Web Worker so the page stays responsive, but everything is held in memory, so very long material across many clips is limited by what your browser will allocate.
Audio is decoded and processed locally with the Web Audio API. Your files are never uploaded to a server.