How to create a stereo file from mono audio — free browser tool
- Step 1Start with a true mono source — Confirm the file is 1-channel (
ffprobeshowschannels: 1). Dual-mono is built from a single channel; if the source is already stereo, see the edge cases — you don't need this tool. - Step 2Drop the file in — Drag an MP3, WAV, FLAC, M4A, OGG, Opus, or video file onto the tool. FFmpeg WebAssembly decodes it locally — nothing uploads.
- Step 3Select Duplicate mode — In the Mode selector choose Duplicate (true mono → stereo). This is the dual-mono path. Do not choose Pseudo-stereo if you want clean identical channels — that mode intentionally delays the right side.
- Step 4Process to a dual-mono file — Run the conversion. FFmpeg applies
-ac 2, copying the mono signal to both channels. The operation is fast because it changes the channel layout and re-encodes without any filter graph. - Step 5Verify identical channels — Check the output: it should report 2 channels, with Left and Right identical. In an editor, a null test (invert one channel and sum) should produce silence — confirming true dual-mono.
- Step 6Download the stereo file — Save it. The output keeps your input container, so a mono WAV becomes a stereo WAV, a mono MP3 becomes a stereo MP3, ready for the workflow that required a valid 2-channel file.
Dual-mono vs. pseudo-stereo vs. true stereo
What this tool makes (dual-mono) compared with the alternatives. Only true stereo carries independent channel content, and it can't be created from a mono source.
| Type | How it's made here | L vs R | Sums to mono cleanly? |
|---|---|---|---|
| Dual-mono (this page) | Duplicate mode, -ac 2 | Identical | Yes — perfect |
| Pseudo-stereo | Pseudo-stereo mode, Haas 15 ms delay on R | R delayed ~15 ms | No — comb-filters |
| True stereo | Not possible from mono (needs multi-mic source) | Independent content | Depends on mix |
Before / after with Duplicate
Channel-count outcome for common inputs. The signal content is unchanged.
| Input | Channels in | Channels out | Output container |
|---|---|---|---|
| Voice-over WAV | 1 | 2 (identical) | WAV (pcm_s16le) |
| Mono MP3 | 1 | 2 (identical) | MP3 (libmp3lame) |
| Mono FLAC sample | 1 | 2 (identical) | FLAC (lossless) |
| Mono M4A | 1 | 2 (identical) | M4A (aac) |
| Mono OGG/Opus | 1 | 2 (identical) | OGG/Opus |
Tier limits
Size and per-file duration are enforced independently.
| Tier | Max size | Max duration | Batch |
|---|---|---|---|
| Free | 50 MB | 30 min | 1 |
| Pro | 200 MB | 120 min | 10 |
| Pro-media | 100 GB | Unlimited | 100 |
| Developer | 100 GB | Unlimited | Unlimited |
Cookbook
Recipes for producing a clean dual-mono file and verifying it really is dual-mono.
Voice-over mono → dual-mono WAV
A single-mic voice-over needs to land in a stereo-format deliverable without any width. Duplicate produces identical channels — the cleanest possible 2-channel file.
vo.wav → channels: 1 Mode: Duplicate -i vo.wav -ac 2 -c:a pcm_s16le vo-stereo.wav → vo-stereo.wav: channels: 2, L == R
Null test to prove true dual-mono
After conversion, confirm the channels are identical. Inverting one channel and summing should cancel to silence — the definitive dual-mono check.
In an editor: 1. Invert the Right channel 2. Sum L + (-R) 3. Result == digital silence → true dual-mono If you hear anything, the channels differ (not dual-mono).
Mono sample → dual-mono for a stereo sampler slot
Some samplers expect stereo samples even when the source is mono. Duplicate gives a valid 2-channel file that loads without down-mix warnings.
hit.flac (1 ch) → Mode: Duplicate → hit-stereo.flac (2 ch) Loads into the stereo sample slot; mono-sum identical to source.
Confirming the output reads as stereo
Verify the header so a strict validator accepts the file as 2-channel.
ffprobe -show_entries stream=channels,channel_layout vo-stereo.wav channels=2 channel_layout=stereo
Why not Pseudo-stereo for dual-mono
If your goal is clean correctness, Pseudo-stereo is the wrong mode — it intentionally makes the channels differ via a Haas delay, which breaks the null test and harms mono playback.
Want identical channels (dual-mono)? → Duplicate. Want perceived width? → Pseudo-stereo, see /audio-tools/solutions/widen-mono-recording-browser
Edge cases and what actually happens
Downstream app labels the dual-mono file as mono
Identical-channel detectionA valid dual-mono file has a 2-channel header but identical L and R. Some apps inspect the samples and report effective-mono. That is accurate, not a defect — the file IS proper stereo-format dual-mono. If the app demands differing channels, dual-mono can't satisfy it; only Pseudo-stereo produces non-identical channels.
Source is already stereo
By designDual-mono is created from a 1-channel source. If your file is already 2-channel, there's nothing to duplicate. To force both channels to carry the same content from an existing stereo file, that is a different operation — use channel-splitter and recombine, or audio-merger.
Null test doesn't fully cancel
Expected for lossyFor lossless inputs (WAV/FLAC) the null test cancels to digital silence. For lossy inputs, re-encoding both identical channels can leave tiny encoder-introduced differences, so the null may not be bit-perfect silence. The file is still dual-mono in intent; for a perfect null start from a lossless source.
File over the size or duration limit
Limit reachedFree tier caps at 50 MB and 30 minutes per file, checked independently. Use Pro (200 MB / 120 min) or higher, or trim first with audio-trimmer.
Lossy source re-encoded
Generation lossBuilding dual-mono from an MP3/AAC/OGG/Opus file decodes and re-encodes, adding minor generation loss. For deliverables that will be re-processed, prefer a lossless master to avoid stacked loss.
Output size roughly doubles (WAV)
ExpectedPCM WAV stores both channels uncompressed, so a dual-mono WAV is about twice the size of the mono source. Lossy formats grow less because identical channels compress efficiently. If size matters, consider whether your target really needs a stereo file.
Wanting added width instead of clean channels
Wrong modeDuplicate deliberately produces no width. If you actually want the audio to feel wider, switch to Pseudo-stereo — but understand that is perceived width with a Haas delay, not clean dual-mono. See the widen spoke.
Decode error on the source
Decode errorFFmpeg must decode the input before duplicating channels. A corrupt or unsupported file errors out. Re-export a clean source and retry.
Frequently asked questions
What is a dual-mono file?
A true 2-channel stereo container in which Left and Right carry the identical signal. It reads as stereo everywhere, but there is no stereo image — the sound is centred. It is what Duplicate mode produces from a mono source via FFmpeg -ac 2.
How is this different from true stereo?
True stereo has independent content in each channel, which requires a multi-mic or mixed source. You cannot create true stereo from a single mono channel. Dual-mono gives you a valid stereo file with identical channels — the honest result of duplicating a mono signal.
Which mode makes dual-mono?
Duplicate (true mono → stereo). It copies the mono signal to both channels with no delay or phase manipulation. Pseudo-stereo is the other mode and intentionally makes the channels differ, so it is not dual-mono.
How do I verify it's really dual-mono?
Run a null test: invert one channel and sum it with the other. For a lossless dual-mono file the result is digital silence, proving the channels are identical. Lossy inputs may leave tiny encoder differences.
Will a dual-mono file pass a 'stereo required' check?
Usually yes — its header reports 2 channels. But a strict validator that inspects the samples may still flag it as effective-mono because L equals R. If a platform requires differing channels, dual-mono can't meet that; only Pseudo-stereo produces non-identical channels.
Does dual-mono sum back to the original mono?
Yes, perfectly — because both channels are identical copies of the source. That makes dual-mono the safe choice for anything that may be folded down to mono later, unlike Pseudo-stereo which comb-filters on mono-sum.
What output format do I get?
The same container as your input — MP3 in/MP3 out, WAV in/WAV out, and so on for FLAC, M4A, OGG, Opus. The Mode selector is the only control on this page.
Is the audio uploaded anywhere?
No. Everything runs in your browser via FFmpeg WebAssembly; the file never leaves your device. See the no-upload spoke for details.
Why is my dual-mono WAV twice the size?
A stereo WAV stores two channels of uncompressed PCM, so it is roughly double a mono WAV. Lossy formats grow much less because the encoder exploits the identical channels.
What input formats are supported?
MP3, WAV, FLAC, M4A, OGG, Opus, and video files (the audio track is used). All decoded in-browser by FFmpeg 8.1.
How large a file can I convert?
Free: 50 MB / 30 min per file. Pro: 200 MB / 120 min. Pro-media and Developer: 100 GB / unlimited duration. Size and duration are separate caps.
I actually want my mono to sound wider — what then?
Use Pseudo-stereo instead of Duplicate. It applies a Haas ~15 ms delay for perceived width. Read the trade-offs in the widen spoke before using it on speech.
Privacy first
Every JAD Audio tool runs entirely in your browser via FFmpeg (WebAssembly) and RNNoise. Your audio files never leave your device — verified by zero outbound network requests during processing.