How Browser Sound Measurement Works
Every displayed number comes from one typed engine — no component computes levels on its own.
Last materially reviewed: 2026-09-19
Browser microphone access
Pressing Start calls getUserMedia with explicit media constraints requesting echo cancellation, noise suppression and automatic gain control off, plus mono input. The browser may refuse any of these; when processing stays enabled the meter says so instead of hiding it. Input is never connected to speakers. Capture runs over HTTPS in a secure context, per the W3C Web Audio API.
Local audio processing
Samples flow from the microphone stream into an AudioContext worklet that accumulates contiguous PCM blocks (sums of squares, peak, clipping flags). A display-only spectrum tap feeds the analyzer bars; measurement never uses FFT bars. Nothing is uploaded — the pipeline, session stats and history all live on your device (see microphone privacy).
RMS, dBFS and the immediate estimate
Each block is reduced to an RMS value and converted to digital decibels relative to full scale (dBFS). dBFS is negative by definition: 0 is the loudest representable signal and silence sits near −100. Before calibration, the public meter adds a nominal +100 dB offset to the weighted digital level, so −34.1 dBFS appears as an explicitly uncalibrated 65.9 dBA estimate. Raw dBFS remains available in Digital Diagnostics.
Calibrated mode
With a compatible saved profile, the engine replaces the nominal offset with your reference-derived offset (estimated SPL = raw + offset) and displays it in the selected dBA, dBC or dBZ unit on a 20–120 dB visual scale. Follow the calibration guide.
Weighting and response
A, C and Z corrections approximate standard frequency weightings from the dominant band; Fast (125 ms) and Slow (1 s) apply exponential time weighting. Neither changes the underlying estimate — only how quickly the display follows it. Details: dB vs dBA.
Session statistics
Each run accumulates current, minimum, energy-average Leq and maximum plus duration; the graph keeps the last 240 points. Environmental estimates export to CSV/JSON only when compatible calibration is active; uncalibrated sessions export no dB values.
Walkthrough: from permission to first number
You press Start and the browser asks for microphone permission once per origin over HTTPS. Grant it and getUserMedia opens a mono stream with echo cancellation, noise suppression and automatic gain control requested off. The browser or OS can refuse that request, so the meter surfaces the actual processing state instead of pretending. Audio flows into a local AudioContext worklet that gathers contiguous PCM blocks and tallies sums of squares, peak and clipping flags for each block. Nothing leaves your device and the input is never routed to speakers, so feedback cannot occur. Each block becomes an RMS value, then a negative dBFS figure where 0 is full scale and quiet rooms sit far below. The public number adds the nominal +100 dB offset to the weighted digital level — for example −41.5 dBFS becomes a 58.5 dBA estimate — until your own calibration replaces that nominal figure. Raw dBFS stays viewable in Digital Diagnostics the whole time.
How display choices shape what you see
Your weighting pick steers the correction applied from the dominant band: A trims bass and extreme treble the way everyday listening comparisons usually want, C stays flatter for louder thumps, Z stays near-flat for diagnostic comparison. Response only changes follow speed — Fast averages near 125 ms and jumps with speech syllables, Slow averages near 1 s and draws a steadier line through the same passage. The spectrum bars beside the number are display only; the level never derives from FFT bins. Below the big readout the session accumulates current, minimum, energy-average Leq, maximum and duration, and the scrolling graph holds the last 240 points so a 4-minute Slow run paints a complete skyline. Idle input shows "--" rather than a made-up low number.
Where your numbers live after you stop
Stop the run and the browser keeps up to 20 recent sessions locally — no account, no upload, usage-only analytics. Open one back up and you get the same five stats plus the shape of the graph. Export behaves deliberately: calibrated sessions download CSV or JSON with dB values intact, while uncalibrated sessions export no dB values so a raw phone figure cannot drift into a report dressed as environmental data. If you need the digital-domain truth for debugging, copy the dBFS trace and compare it against the room-noise workflow in background noise test or the raw-input check in microphone noise floor test. Current Chrome, Edge, Firefox and Safari builds all follow this same local path.
Sources and technical references
Browser capture behavior follows MDN getUserMedia() and the W3C Web Audio API. See CDC/NIOSH app guidance for why phone-based readings need careful validation.
Open the online decibel meter → · Accuracy →
Try it live
Curious how loud your surroundings are right now? Measure in seconds — no app, no account. Open the live decibel meter →