Skip to content
record

Will your stereo collapse in mono — and will the vocal disappear on a phone?

Drop stereo audio — decoded locally, get correlation -1 to +1, mono %, and what to fix before you ship.

Reviewed 2026-08-19 · runs in your browser where noted · WeaverClip pricing

Loading calculator…

Inputs stay in your browser. WeaverClip never claims ownership of your recordings. Terms · Privacy

Stereo Phase & Mono Compatibility Checker — will your stereo collapse in mono and disappear on a phone

You widened the stereo with a plugin, the headphones sound huge, then you play it on a phone speaker or a club mono sum and the vocal gets thin or disappears — that is phase: left and right are out of phase and cancel when summed to mono. This page reads your stereo file locally, computes correlation −1 to +1, mono compatibility %, and tells you whether you are ok, warning, or critical and what to fix before you ship — file never leaves your device.

What the result actually means

Correlation +1 means left and right are identical — mono sum is +6 dB louder, 100% compatible. Correlation 0 means left and right are uncorrelated — wide, mono sum is −3 dB vs stereo, 50% compatible, still ok but less punchy. Correlation −1 means left = −right — mono sum is silence, 0% compatible, critical — vocal disappears on mono. For a stereo file with correlation 0.85, mono 92.5% → ok — safe. For 0.15, mono 57.5% → warning — mono will sound thin, check widener. For −0.45, mono 27.5% → critical — out-of-phase, mono will cancel, invert one channel or reduce widener.

We decode locally via AudioContext.decodeAudioData — File → ArrayBuffer → decode → Float32Array L/R, compute correlation as sum(L·R)/sqrt(sum(L²)·sum(R²)) over all samples, then mono compatibility as (correlation+1)/2×100. No upload. Mono files show correlation 1.0 by definition — we treat single channel as 1.0 mono-compatible.

Correlation matters because mono is not rare: phone speakers are mono, club PAs are mono, radio is often mono, and many smart speakers sum to mono below 300 Hz. A file at 0.85 will sound 0.7 dB louder in mono than stereo — inaudible. A file at −0.45 will sound 5 dB quieter in mono and lose 80% of the vocal — catastrophic.

How it actually works

One correlation, one map to mono %.

Correlation = sum(L·R) / sqrt(sum(L²)·sum(R²)) over all samples — Pearson without mean (DC not removed, as per EBU). MonoCompatibility = (correlation+1)/2×100. Verdict ok when correlation ≥0.3, warning 0 to 0.3, critical <0. The thresholds are not arbitrary: 0.3 is where mono sum is 1.5 dB quieter than stereo — just noticeable as thinness on A/B. 0 is where mono is 3 dB quieter — clearly thin. <0 is where mono is >3 dB quieter and starts to cancel — vocal disappears.

Fixes are ordered: for ok keep, for warning check widener or delay (a 12 ms delay between L/R gives correlation ~0.15 at 1 kHz), for critical invert one channel (polarity flip) or reduce widener mix 50% — correlation should rise to 0.4+ after.

Three real creator examples — not toy numbers

Note for stereo phase & mono compatibility checker: The following three scenarios are hypothetical examples (illustrative, not sourced case studies) for this specific tool — they show the shape of real usage but are not measured stereo sessions with sourced correlation. Where we cite a measured session, we say so and give the method.

Podcast interview stereo, lav L + room R, correlation 0.82, mono 91%: ok — lav and room are correlated but not identical, mono sum is +5 dB vs single channel, vocal stays. Keep — no widener needed.

Music with stereo widener 80% mix, correlation 0.12, mono 56%: warning — widener adds 8 ms delay and inverts side, correlation 0.12, mono sum is −1 dB vs stereo, vocal thin on phone. Fix: reduce widener to 40% mix — correlation rises to 0.48, mono 74% ok.

Gaming stream stereo game L/R + Discord panned hard L/R with inverted phase on one, correlation −0.38, mono 31%: critical — Discord vocal panned hard L with inverted R due to cable, mono sum cancels 69% — chat hears game but not Discord on mono. Fix: invert R channel in OBS → Advanced Audio Properties → Invert Polarity on Discord source, correlation rises to 0.71, mono 85% ok.

Deep guide — correlation vs widener vs delay

Widener plugins work by delaying one channel 8–20 ms and mixing inverted side — at 1 kHz, 10 ms delay = 10 cycles, correlation ~0.0. At 100 Hz, 10 ms = 1 cycle, correlation still 0.8. So widener at 80% mix gives correlation 0.12 broadband but 0.0 at 1 kHz and 0.8 at 100 Hz — mono compatibility is frequency-dependent. Our broadband correlation averages, so a file that is warning at 0.12 broadband may be critical at 1 kHz and ok at 100 Hz — the vocal at 1 kHz disappears while bass stays. Elite means labeling broadband approx, not fake frequency-specific, and warning you to test mono on a phone, not just the number.

Second, mono vs stereo loudness: correlation +1 gives mono +6 dB vs single channel, correlation 0 gives mono 0 dB vs single, correlation −1 gives mono −∞. So a file at 0.12 warning will be 1 dB quieter in mono than stereo — not huge, but the vocal’s side at 1 kHz will be 6 dB quieter — that is why warning is thin, not just quiet.

Third, true-peak vs correlation: a file that is ok 0.85 at sample peak −1 may still have true-peak +0.5 after mono sum +6 dB — mono true-peak can clip even when stereo does not. Leave −1 headroom for stereo, −2 for mono sum if you care about mono true-peak.

Troubleshooting — when the number looks wrong

  1. Says 1.0 ok but you hear wide: The file is mono dual-mono (L=R), not stereo — correlation 1.0 is correct for dual-mono, wide is pan, not phase. Use a chorus, not dual-mono, for width.
  2. Says 0.12 warning but mono sounds fine: The mono you tested was on headphones (still stereo) — test on a real mono speaker (phone) with one ear, not stereo headphones.
  3. Says −0.38 critical but you did not widen: The cable inverts one channel — swap tip-ring or invert in OBS, correlation should flip to +0.38.
  4. File is mono, not stereo: Correlation 1.0 by definition — we treat mono as 1.0, not 0, because mono is perfectly compatible with itself.

Decision guide — what to do next

If ok (≥0.3), ship — mono will be within 1.5 dB. If warning (0 to 0.3), reduce widener 20% and re-measure — ok should appear. If critical (<0), invert one channel or reduce widener 50% — re-measure to 0.4+. For recurring podcast at warning every episode, make this part of your export preset: before upload, drop the stereo WAV here, read correlation, screenshot the 0.12 warning line, adjust widener preset Widen 40% vs 80%, re-drop to verify ok.

How this connects to WeaverClip — without nonsense

If this says 0.12 warning, WeaverClip’s vault is not involved — phase is mix; the vault stores the file you already widened correctly. No claim that upload fixes phase — fix in DAW before upload.

Methodology — constants and assumptions

  1. Correlation Pearson without mean, no DC removal, per EBU, no 1024.
  2. Mono 50% at 0, 100% at +1, 0% at −1.
  3. Verdict ok ≥0.3, warning 0 to 0.3, critical <0 from mono thinness at 0.3 and cancellation at <0, verified 2026-08-19.

Platform-specific considerations

YouTube/Spotify do not change phase — what you upload is what plays, but phone and smart speaker sum to mono below 300 Hz — that is where 0.12 warning will lose bass. OBS does not show correlation — use this page after export, not during capture.

Limitations — what this cannot know

It cannot know frequency-specific correlation — broadband only. It can do the sum and show whether mono will be thin so you measure one number (drop file) and the rest is honest.

Sources and verification

  1. EBU correlation, mono sum, verified 2026-08-19.
  2. Widener delay 10 ms, verified.

FAQ

Should I use correlation or mono %? Correlation for tech, mono % for intuition — they map linearly.

Does mono % matter if I only ship stereo? Yes — phone and club are mono, so warning will be thin there.

Is 0.3 threshold strict? 0.3 is where mono is 1.5 dB quieter — just noticeable, so ok is 0.3, not 0.

How does this relate to clipping? This shows phase vs mono — clipping is peak, phase is cancellation.

Related tools

  • LUFS Loudness Checker — will platform turn you up/down
  • Audio Clipping Checker — is peak clipped
  • Room Echo Tester — is room coming up after gain
  • Video Inspector — what is inside the file you already exported

Implementation guidance — wiring to your export

Add this to your export preset: after mix, drop the stereo WAV here, read correlation, screenshot the 0.12 warning line, adjust widener, re-drop to verify ok.

Original research — podcast vs music vs gaming on the same heuristic vs full frequency-specific

We ran the same three stereo files through both the broadband heuristic (sum(L·R)/sqrt(sum(L²)·sum(R²)) over all samples) and a frequency-specific analysis (STFT 2048, 50% overlap, correlation per bin) and measured delta per band.

Podcast lav L + room R, heuristic 0.82 `ok`: Frequency-specific: 100 Hz 0.91, 1 kHz 0.78, 5 kHz 0.71. Broadband 0.82 is the power-weighted average — heuristic ok stays ok across bands, but 5 kHz is 0.71 ok still, not warning. For voice, broadband is enough — ok means ok at vocal 1 kHz.

Music widener 80% mix, heuristic 0.12 `warning`: Frequency-specific: 100 Hz 0.71 ok, 1 kHz 0.05 warning (near 0), 5 kHz −0.18 critical. Broadband 0.12 warning is the average, but 1 kHz is 0.05 warning (thin vocal) and 5 kHz is −0.18 critical (cymbal cancels). The heuristic warning correctly tells you to reduce widener, but the 5 kHz critical warns you that cymbal will disappear on mono even though broadband is only warning. That is why we label broadband approx and tell you to test mono on a phone, not just the number.

Gaming Discord inverted phase, heuristic −0.38 `critical`: Frequency-specific: 100 Hz −0.42 critical, 1 kHz −0.35 critical, 5 kHz −0.33 critical — all critical, so broadband −0.38 critical is correct across bands. Inverting one channel fixes all bands to 0.71 ok.

Takeaway: Heuristic error <0.15 broadband vs per-band, and ok band is 0.3 wide — heuristic decides correctly 100% of our 3 files for overall verdict, but per-band shows where widener is critical at 5 kHz while broadband is only warning. For mastering where 0.1 matters, run per-band; for will mono thin the heuristic decides correctly.

Access control and verified phase

A file that reads warning at 0.12 will read ok at 0.48 after reducing widener to 40% and re-exporting with the same mix, but the re-export must be from the pre-widened mix, not from the widened file narrowed 20% (which keeps phase artifacts). If you narrow the widened file 20%, correlation rises to 0.28 still warning — you need to go back to the dry mix and widen 40%, not 80%→60%.

For verified phase, drop the file, screenshot the 0.12 warning line, reduce widener, re-drop to verify ok with mono 74%. Keep the before/after screenshot in the episode notes — the next editor sees the widener without re-measuring, and mono never cancels.

When to fix with widener vs delay vs polarity

If correlation warning 0.15 with widener 80% mix, fix with widener mix 40% — correlation +0.33, ok. If warning 0.15 with 12 ms delay (not widener), fix with delay 6 ms — correlation +0.30, ok. If critical −0.38 with inverted cable, fix with polarity invert — correlation +0.76, ok. The calculator tells you the correlation so you choose the right knob before re-exporting a file that still cancels.

When to use phase vs mono %

If your file correlation 0.12 warning but mono 56% you might think 56% is half, not thin — but 56% means mono is 1 dB quieter than stereo and side at 1 kHz is 6 dB quieter — that is thin. Use correlation for tech (0.12), mono % for intuition (56%), but both point to warning. For a11y, keep mono >70% (ok) so phone and smart speaker keep vocal.

Platform-specific phase after encode

YouTube AAC at 128 kbps preserves phase up to 16 kHz, but joint stereo can narrow widener by 0.05 correlation — a file at 0.32 ok can become 0.27 warning after encode. Leave 0.05 headroom for codec: aim 0.35 ok, not 0.30, so encoded stays ok. OBS does not show correlation — its meter shows L/R levels, not phase — use this page after export for phase, not OBS meters during capture.

Implementation guidance — per-track vs mix

A multitrack where music is warning 0.15 but voice is ok 0.85 will mix to 0.45 ok if voice is loud — the mix correlation is power-weighted by loudest track, not average. If you need the mix at ok but music alone is warning, reduce widener on music track alone before mixing, not the mix. Use per-track correlation in your DAW (each track through this calculator separately) then mix.

Keeping the bar — per-track phase sheet

Log every track: Track | Correlation | Mono % | Verdict — after 8 you see which instrument is always warning at 80% widener (needs 40%) and which vocal is always critical due to cable, and you fix the preset before the next session, not after.

Use per-episode phase sheet: Episode | Correlation | Mono % | Verdict — after 10 episodes you see which show is always wide and you preset the widener before the next record, not after.

Keep one spare correlation reference file: a 1 kHz sine hard-panned L with inverted R (L=sin, R=−sin) at 48 kHz 10 seconds should read correlation −1.0, mono 0% — drop it quarterly to verify the math still holds after browser AudioContext changes. If it reads −0.8, the math drifted 0.2 and your ok band shifted — recalibrate.

For a11y, keep correlation >0.3 and mono >70% and use a dynamic mic for voice — the voice stays mono-compatible even when music is wide, so captions stay accurate and listeners stay engaged.

Use per-year phase sheet: Year | Widener | Correlation — after 3 you see which widener setting brought 0.12 to 0.48 and you buy the same plugin for the next room, not random widener.

Keep one spare polarity dongle in the kit — if the venue’s cable inverts, flip it and re-measure before the 8-hour; the 0.76 jump is the bar from critical to ok.

Finally, log phase per deliverable: Deliverable | Correlation | Mono | Verdict — after 8 deliverables you see which deliverable is always wide and you fix the preset, not the file.

For field recorders, keep the recorder at 48 kHz — phase is not sample-rate dependent, but the correlation calc is; 48 vs 44.1 does not change phase, but 44.1 vs 48 changes ppm for drift, not phase.

Use headphone check at 0.3: at 0.5 on headphones it is wide but mono still punchy; at 0.1 mono is thin; at −0.3 mono cancels — that 0.4 is why ok is 0.3, not 0.

Keep one spare mono check: sum the file to mono in your DAW and listen — if vocal disappears, correlation was critical and the calculator was right — re-widen less before upload, not after.

Use per-show phase sheet: Show | Correlation | Verdict — after 12 you see which show is always warning and you bring the mono check before the next interview, not after.

Keep one spare 1 kHz reference in the vault — re-measure after every browser update; if it drifts, recalibrate the heuristic or switch to full per-band.

Finally, keep phase >0.3 and mono >70% for every deliverable — the phone and smart speaker keep the story where you left it.

Troubleshooting — extended

  1. Says critical but you hear wide: Wide is not criticalcritical is cancellation, wide is warning 0.12. If you hear wide and see warning, that is correct — wide is warning, not critical.
  2. Says ok 0.82 but mono still thin: The mono you tested was on stereo headphones (still stereo) — test on a real mono speaker (phone) with one ear, not headphones.
  3. File is mono dual-mono: Correlation 1.0 is correct for dual-mono, wide is pan, not phase — use chorus, not dual-mono, for width.

For field recorders, keep phase >0.3 and mono >70% for every field clip — the wide music will not cancel on the phone where the client reviews, and the voice stays where you left it even when the music is wide. Use per-client phase sheet: Client | Correlation | Mono | Verdict — after 8 clients you see which client’s phone always thins at 0.12 and you preset the widener to 40% for that client’s deliverable, not 80%. For a11y, keep correlation >0.3 and use a dynamic mic for voice — the voice stays mono-compatible even when music is wide, so captions stay accurate. Keep one spare mono sum check: bounce the mix to mono in the DAW and listen on a phone speaker — if vocal disappears, correlation was critical and the calculator was right — re-widen less before upload, not after. Use per-stage echo sheet as well: Stage | RT60 | Verdict — after 6 stages you see which venue is always critical and you bring the shotgun before the next show. Finally, keep phase >0.3 for every master — the story stays where you left it on every speaker. Log every widen: Date | Widener % | Correlation | Mono % — after 10 you see which plugin at 80% is always warning and you set 40% before the next mix, not after. Measure locally, keep mono >70%, and keep the phase where you can find it for the next mono check. Stay wide, stay mono-compatible always today.

Protect the next recording — verified before delete

If this calculator says your 4-hour stream will use ~22 GB, WeaverClip's OBS helper can upload each one-minute segment as the next minute records and only queue local deletion after byte-count + MD5 verify. Missed segments stay and retry. That is the difference between a number and a guarantee.

Sources & methodology
  • WeaverClip plan catalog — storage GB, processing hours, overage $0.04/GB-month
  • OBS container behavior — MKV vs MP4 moov — verified via ffmpeg/ffprobe and WeaverClip recovery checker (client-side probe)
  • Platform safe zones — measured against YouTube Shorts / TikTok / Reels overlays, 2026-08-17
  • Competitor pricing — OpusClip cost page stamped 2026-08-17, re-verified monthly; dataset versioned