streamtoolset
DocsChecking session…

Guide

Balancing stream audio in OBS

Viewers forgive blurry video. They do not forgive ear-blast alerts and whisper-quiet mic. This is the streamer-side guide to leveling sources, scenes, and the master bus — plus a clear answer to a question that comes up a lot: can you safely double-normalize?

Why audio balance matters more than video quality

A viewer who clicks into a stream forms an opinion in about ten seconds. Half of that is video, half is audio. Video forgiveness is high — chat will sit through 720p if the content is good. Audio forgiveness is near zero. A mic that sits 12 dB under the game makes you sound unprepared. An alert that ear-blasts above the bus makes someone mute and move on.

The fix is not "turn things up until they're loud." The fix is to land every source at the same target loudness, then mix from there. OBS gives you three places to do that: per-source, per-scene, and the master bus.

The three layers

Every OBS audio signal passes through three control points before it hits the encoder:

  1. Source level — the volume slider and filters on each individual capture (mic, desktop audio, browser source, media source). This is where you fix a chronically-quiet input or trim a chronically-loud one.
  2. Scene level — implicit in OBS: whichever sources are visible in the current scene are the only ones routed to the bus. Use scene-specific visibility (or scene-specific gain via a Source on the scene rather than as a global) to make sources louder or quieter only on the scenes that need it.
  3. Master bus — the final mix that hits Twitch / YouTube / Kick. The master fader, plus any master-bus filter (most streamers want a limiter here as a safety net). Everything you mix at the source and scene levels lands here, summed.

Most balance problems come from trying to fix a source-level issue at the master bus — pulling the master down to escape a loud alert, then everything else goes quiet too. Solve loudness at the source whenever you can.

The mixer filters that matter

OBS ships four audio filters that cover 95% of streamer needs:

  • Gain — straight ±dB. The first knob to reach for when a source is chronically too quiet or too loud. No dynamics, no character — just shift the floor and ceiling together.
  • Compressor — reduces dynamic range. Quiet mic moments come up, loud mic moments come down. Set a sensible ratio (3:1 or 4:1 for voice), a threshold around your normal-speaking peak, and a fast attack / medium release.
  • Limiter — a wall. Anything trying to cross the threshold gets clamped. Put one on the master bus at −1 dB so a sudden spike physically cannot blow out the encoder. Limiters on the source level catch shouting fits before they reach the bus.
  • Noise gate — silence below a threshold. Great for mics with fan / keyboard noise. Set the open threshold above the noise floor and the close threshold below your normal speaking volume so it doesn't chop syllables.

The target — −16 LUFS for live

LUFS is the loudness unit broadcast and streaming platforms use internally. The standard target for live platforms (Twitch, YouTube Live, Kick) sits around −16 LUFS integrated for the master bus. Twitch doesn't aggressively re-normalize, so aiming for −16 lands you in the same loudness band as the channels viewers were just watching.

You don't need to measure this in real time — OBS doesn't show LUFS, and an internal soundcard meter is too jumpy to make a decision off of. Use a reference: pick a streamer whose audio you like, A/B their loudness against yours during a test stream, and adjust your master fader until you land in the same neighborhood. Once it's set, it stays set.

Auto-normalize vs do-it-yourself

The toolset auto-normalizes some sources for you and leaves others for you to level in OBS. Every catalog tile on the dashboard now shows which is which — look for the speaker-icon badge next to the resolution badge.

  • Auto-normalized (you do nothing extra): BRB player, Video shout-out, and Clip play all run EBU R128 normalization on every clip they play. Quiet ASMR clips and shouty hype clips end up at the same on-stream level.
  • Pass-through: Music Player doesn't normalize — Spotify already does it server-side, and stacking another normalizer on top would slightly degrade quality without adding consistency. Set the widget's level in OBS like any other source.
  • Manual: SFX-driven tools (Death counter chime, Chat box notify sound, Timer tick, and Event list per-event sounds) play short SFX you choose. The toolset doesn't normalize these — level them in OBS so they sit just under your speaking volume.

The double-normalize question

"If I leave normalization on for every clip the toolset plays, and then OBS has a master-bus filter, am I double-normalizing? Is that bad?"

Short answer: no, it's fine. Pure EBU R128 normalization to the same target is idempotent. The math is closed under composition:

  1. Measure integrated loudness across the program.
  2. Compute the linear gain needed to land at the target (e.g. −16 LUFS).
  3. Apply that gain.

Run the same algorithm again on already-normalized audio and the measurement returns the target value, the computed gain is +0 dB, and nothing audible changes. Two passes with the same target = one pass.

The actual failure modes (and what to do about them):

  • Different targets in series. If the toolset normalizes a clip to −16 LUFS and your OBS master limiter is set to clip at +0 dB pushing the master loud, the limiter will start engaging on transients. Solution: don't push the master past −1 dBFS true peak. The limiter is a safety net, not a louder-maker.
  • Stacked true-peak limiters with different ceilings. Two limiters set to slightly different thresholds will each shave a tiny crest off transients. Inaudible in practice but redundant. Solution: pick one — toolset-side OR OBS-side, not both with different settings.
  • Mismatched algorithms. EBU R128 (loudness) and peak normalization (loudest sample) measure different things. If one layer uses LUFS and the next uses peak, the output is unpredictable. Solution: stay on EBU R128 throughout. The toolset uses R128; set OBS filters to behave consistently (gain + limiter is fine; "Compressor — Normalize" filters are not).

For the engineering side of how the toolset does in-browser EBU R128 — sample buffer integration, asymmetric gain clamping, the noise-floor problem — see EBU R128 loudness in the browser. That note covers why the auto-normalization in BRB player, Video shout-out, and Clip play actually works on cross-origin clips.

A streamer-friendly recipe

A reasonable starting point for someone who hasn't tuned this yet:

  • Mic source — Gain to get average speaking around −18 dB on the OBS meter. Compressor at threshold around −18 dB, ratio 4:1, attack 6 ms, release 60 ms. Noise gate open around −36 dB, close around −42 dB.
  • Desktop audio (game) — Gain set so the game peaks 10–14 dB below your mic peaks. The mic should sit a little above the game so chat hears you over a busy scene. Re-balance per game.
  • Music Player widget — Pull it 6–10 dB below the game so it reads as background, not "we're listening to a song now."
  • Auto-normalized overlays (BRB / VSO / Clip play) — set the source volume so a normalized clip lands at roughly the game's level. Once it's set, you don't touch it again — every clip the overlay plays will hit the same target.
  • Master bus — Limiter at −1 dB. That's it. Don't put a second compressor up here; let the source filters do the shaping work.

Common problems

  • Game is louder than mic. Pull the desktop-audio source down 6 dB, not the mic up 6 dB. Pushing the mic up forces the limiter to engage more often and squashes dynamic range.
  • Alerts and SFX blow out the chat. The alert tools are manual, not auto-normalized. Find the loudest alert in your set and pull it down to match the others. If you're using chained tools, normalize the alert library once via Alert! Alert! (which EBU R128-normalizes during export) so they all sit at the same level.
  • Subathon timer chime is whisper-quiet. The Timer tool is manual. Replace the SFX with one mastered closer to your mic level, or amp it up in OBS with a Gain filter on the source.
  • BRB clips inconsistent volume. They shouldn't be — the BRB player auto-normalizes. If they sound different, the source-level slider on the BRB browser source in OBS is probably set too low, exposing the noise floor of the quieter clips. Move the slider up; let the auto-normalization do the level work.

Recap

Fix loudness at the source, then the scene, then the master. Aim for −16 LUFS integrated on the bus. Leave a single master limiter at −1 dB as a safety net. Trust the auto-normalized overlays — the toolset takes care of those — and manually level the SFX-driven tools and your mic / game / music. The double-normalize question isn't a real problem at the same target; it only bites when the targets diverge or the algorithms differ.