How to convert mono audio to stereo — free, no upload
- Step 1Drop your mono file onto the tool — Drag in an MP3, WAV, FLAC, M4A, OGG, Opus, or video file. It is decoded in your browser by FFmpeg WebAssembly — nothing is uploaded. If the file is already 2-channel, see the edge cases below: Duplicate on a stereo input would collapse it, so this tool is for mono sources.
- Step 2Pick a Mode — The single control is a Mode selector. Choose Duplicate (true mono → stereo) for an identical-channel stereo file, or Pseudo-stereo (Haas widen ~15 ms) to add perceived width. These are the only two options — there are no width sliders, no pan controls, and no per-channel routing.
- Step 3Understand what each mode does to the signal — Duplicate sends the mono signal to L and R unchanged (
-ac 2). Pseudo-stereo splits the duplicated signal and delays the right side by 15 ms (FFmpegadelay=15:all=1) before merging to stereo. Width is perceived, not recorded — and the Haas delay introduces comb-filtering if the file is later summed back to mono. - Step 4Run the conversion — Click to process. FFmpeg builds the 2-channel output in-browser. Duplicate is near-instant because it only changes the channel layout and re-encodes; Pseudo-stereo runs a small filter graph (split → delay → merge) so it takes a little longer.
- Step 5Confirm the output container — The output keeps your input's extension by default — drop an MP3 and you get an MP3, drop a WAV and you get a WAV. The encoder is chosen automatically (MP3 → libmp3lame, WAV → pcm_s16le, FLAC → flac, OGG → libvorbis, Opus → libopus, M4A → AAC).
- Step 6Download and verify the channel count — Save the file. To confirm it registers as stereo, check the channel-count indicator in any media player or run
ffprobe. A correct output reports 2 channels. If a downstream app still calls it mono, it is detecting identical-channel content, not the header — see the FAQ on that.
The two modes — what each actually does
These are the only modes the tool offers. Both produce a 2-channel file; the difference is whether the right channel is delayed.
| Mode | Option value | FFmpeg under the hood | Result | Mono-sum safe? |
|---|---|---|---|---|
| Duplicate (true mono → stereo) | widen: false (default) | -ac 2 — copy mono to both channels | 2-channel file, L and R identical, centred image | Yes — sums back to original mono exactly |
| Pseudo-stereo (Haas widen ~15 ms) | widen: true | asplit → adelay=15:all=1 on R → amerge → stereo | 2-channel file with perceived width from a 15 ms right-channel delay | No — the delay causes comb-filtering when summed to mono |
Input format → output container & encoder
Output keeps the input extension for this tool (the client exposes Mode only, so format falls back to the source). Encoders are selected automatically.
| Input you drop | Output container | Encoder used | Notes |
|---|---|---|---|
| MP3 | MP3 | libmp3lame | Lossy re-encode — minor generation loss, unavoidable when re-containering MP3 |
| WAV | WAV | pcm_s16le | 16-bit PCM, lossless; file size roughly doubles vs mono |
| FLAC | FLAC | flac | Lossless; compressed, stereo FLAC is larger than mono FLAC |
| M4A | M4A | aac | Lossy AAC re-encode |
| OGG | OGG | libvorbis | Lossy Vorbis re-encode |
| Opus | Opus | libopus | Lossy Opus re-encode |
| Video file | Audio in source-derived container | matched to extension | Audio is extracted and converted to a 2-channel audio file |
Tier limits for this tool
All audio tools share the audio family limits. Note the per-file duration cap is separate from the size cap.
| Tier | Max file size | Max duration / file | Files per 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
Concrete before/after channel counts and what each mode produces. ffprobe lines are illustrative of what you'd see verifying the output.
Mono MP3 voice memo → stereo MP3 (Duplicate)
The default and most common case: a 1-channel voice recording that a tool insists must be stereo. Duplicate copies the signal to both channels, no width added, sums perfectly back to mono.
Before: ffprobe memo.mp3 → channels: 1 (mono) Mode: Duplicate (true mono → stereo) FFmpeg: -i memo.mp3 -ac 2 -c:a libmp3lame memo-stereo.mp3 After: ffprobe memo-stereo.mp3 → channels: 2 (stereo) Left == Right (identical samples)
Mono WAV → stereo WAV with perceived width (Pseudo-stereo)
When dead-centre dual-mono sounds too flat and you want some width for a stereo-only listening context. The Haas delay widens perception but is not real stereo.
Before: ffprobe loop.wav → channels: 1 Mode: Pseudo-stereo (Haas widen ~15 ms) FFmpeg filter graph: [0:a]aformat=channel_layouts=mono,asplit=2[L][Rsrc]; [Rsrc]adelay=15:all=1[R]; [L][R]amerge=inputs=2,aformat=channel_layouts=stereo[out] After: ffprobe loop-widened.wav → channels: 2 Right channel lags Left by 15 ms → perceived width WARNING: comb-filtering if later summed to mono
Choosing the right mode for a podcast host upload
Most podcast hosts accept mono and prefer it for spoken word (smaller file, no phase risk). If a host requires stereo, use Duplicate — never Pseudo-stereo for speech, because the Haas delay damages mono playback on phones and smart speakers.
Host requires stereo? → Duplicate. Host accepts mono? → don't convert at all; mono is smaller. Never use Pseudo-stereo for a spoken-word episode: many listeners hear it on a single mono speaker (phone, smart speaker), where the 15 ms delay comb-filters the voice.
Mono FLAC archive → stereo FLAC (lossless, Duplicate)
When a mastering or library workflow demands 2-channel files but you want to stay lossless. FLAC stays FLAC; the channels are identical so compression is efficient.
Before: archive.flac → channels: 1, 24-bit Mode: Duplicate FFmpeg: -i archive.flac -ac 2 -c:a flac archive-stereo.flac After: archive-stereo.flac → channels: 2, lossless File size grows but Left==Right keeps FLAC compression tight.
When NOT to use this tool — already stereo
If your file is already 2-channel, this tool is the wrong choice. Duplicate would force a 2→2 re-encode with no benefit; if you actually want to isolate or recombine channels, use the sibling tools.
Your file is already stereo? Skip mono-to-stereo.
Need to split L/R into two files →
/audio-tools/channel-splitter
Need to join two mono files into one stereo →
/audio-tools/audio-merger
Need to level a quiet voice track →
/audio-tools/speech-levelerEdge cases and what actually happens
Input is already stereo (2 channels)
By designThis tool targets mono sources. If you drop a stereo file, Duplicate's -ac 2 is a no-op on channel count and just re-encodes — wasting quality on lossy formats with no benefit. To work with existing stereo, use channel-splitter to separate L/R, or audio-merger to combine channels.
File exceeds 50 MB or 30 minutes on the free tier
Limit reachedFree tier caps each file at 50 MB and 30 minutes — and the duration cap is checked separately from size, so a long, low-bitrate file can pass the size check but fail on length. Pro raises this to 200 MB / 120 min, Pro-media and Developer to 100 GB / unlimited duration. Trim long files first with audio-trimmer.
Downstream app still reports the file as mono
Identical-channel detectionAfter Duplicate, the file header genuinely says 2 channels, but some apps inspect the audio and flag effective-mono content (L == R). That is correct behaviour, not a conversion failure — the file IS stereo-format dual-mono. If the app needs differing channels, only Pseudo-stereo produces non-identical channels, and even that is perceived width, not true stereo.
Pseudo-stereo output sounds hollow on a mono speaker
ExpectedThe Haas mode delays the right channel 15 ms. When a single mono speaker (phone earpiece, smart speaker, mono Bluetooth) sums L+R, the delayed copy comb-filters the original, thinning the sound. This is inherent to Haas pseudo-stereo. Use Duplicate for anything that may play in mono, especially speech.
Lossy input re-encoded (MP3/AAC/OGG/Opus)
Generation lossConverting a lossy mono file to stereo requires a decode/re-encode pass, which adds a small amount of generation loss. It is usually inaudible for a single pass, but stacking conversions degrades quality. For archival masters, keep a lossless source (WAV/FLAC) and convert that instead.
Output file is roughly double the size
ExpectedA 2-channel file stores two channels. For PCM WAV the size roughly doubles versus mono. For lossy formats the increase is smaller because the encoder exploits inter-channel redundancy (identical channels in Duplicate compress well). If size matters, weigh whether you truly need stereo or just need mono accepted elsewhere.
File has no extension
Format fallbackThe output container is derived from the input extension. A file with no extension falls back to a generic handling path and may not produce the container you expect. Rename the file to include its real extension (e.g. .wav, .mp3) before dropping it in.
Corrupt or non-audio file
Decode errorFFmpeg must decode the input first. A truncated, DRM-protected, or non-audio file fails to decode and the conversion errors out before producing anything. Re-export a clean source from your recorder or editor and try again.
Trying to set a specific output bitrate or format here
Not availableThe mono-to-stereo client exposes only the Mode selector — there is no bitrate or output-format control on this page. Output keeps the input container. To change bitrate, run the file through bitrate-changer afterwards; to convert format, use a converter such as wav-to-mp3.
Frequently asked questions
What does 'convert mono to stereo' actually change?
It changes the file from 1 channel to 2 channels. In Duplicate mode the same mono signal is copied to Left and Right (FFmpeg -ac 2), so the file is a true stereo container with identical channels. In Pseudo-stereo mode the right channel is delayed ~15 ms for perceived width. Neither adds real stereo information that wasn't recorded.
Is it really free?
Yes. The conversion runs in your browser via FFmpeg WebAssembly with no account required for files within the free tier (up to 50 MB and 30 minutes per file). There is no watermark and no upload.
Does my audio get uploaded to a server?
No. Everything runs locally in your browser. The file is read into memory, processed by FFmpeg compiled to WebAssembly, and written back out — it never leaves your device. For the privacy-focused walkthrough see the no-upload converter spoke.
Duplicate vs Pseudo-stereo — which should I pick?
Pick Duplicate for almost everything, especially speech and anything that might play on a single mono speaker; the channels are identical and it sums back to mono cleanly. Pick Pseudo-stereo only when you specifically want perceived width in a stereo-only listening context and you accept the Haas comb-filtering risk on mono playback.
Will this make my mono recording sound better?
No. The underlying audio quality is unchanged — you are only changing the channel layout. Duplicate sounds identical to the original (just centred across two speakers). Pseudo-stereo adds a width effect but does not improve fidelity and can degrade mono playback.
What output format will I get?
The same container as your input. Drop an MP3 and you get an MP3, drop a WAV and you get a WAV, and so on for FLAC, M4A, OGG, and Opus. The encoder is chosen automatically (e.g. MP3 → libmp3lame, WAV → 16-bit PCM).
Can I change the bitrate or convert format at the same time?
Not on this page — the only control is the Mode selector. Convert format afterwards with a converter like wav-to-mp3, or change bitrate with bitrate-changer.
Why does my podcast app still say the episode is mono?
After Duplicate the file header reports 2 channels, but some apps detect that Left and Right are identical and label it effective-mono. That is accurate — it is a stereo container carrying mono content. Only Pseudo-stereo produces differing channels, and that adds a Haas delay rather than true stereo.
What input formats are accepted?
MP3, WAV, FLAC, M4A, OGG, Opus, and video files (the audio track is used). The dropzone decodes them in-browser via FFmpeg 8.1.
My file is already stereo — what should I use instead?
This tool is for mono sources. To split a stereo file into separate channels use channel-splitter; to combine two mono files into one stereo file use audio-merger.
How big a file can I convert?
Free: 50 MB and 30 minutes per file. Pro: 200 MB and 120 minutes. Pro-media and Developer: 100 GB with unlimited duration. The duration limit is checked separately from the size limit.
Can I batch-convert many files?
This tool processes one file at a time. The free tier allows 1 file per batch; Pro allows 10, Pro-media 100, Developer unlimited — but mono-to-stereo itself runs single-file, so convert them one by one or upgrade for higher per-tool batch ceilings on multi-file tools.
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.