About this microphone test

A small, dependency-free page for one job: showing you, in real time, whether your microphone is picking up sound — before a call, a recording, or an interview depends on it.

Why it exists

"Is my mic working?" is usually answered too late — mid-call, when a colleague or interviewer says they cannot hear you. Video-call apps bury their own mic check behind settings menus that differ between products, and many people do not think to look until something has already gone wrong. This page needs no install, no account and no app switch: open it, click Start, speak, and watch the meter move.

How the level meter is computed

Once getUserMedia returns a stream, it is connected to a Web Audio AnalyserNode with an FFT size of 2048. Roughly once per animation frame, the tool reads the node's current time-domain samples (each one an amplitude between −1 and 1) and computes two numbers:

RMS (root-mean-square) — the square root of the mean of the squared samples, the standard measure of a signal's average loudness over a short window.
Peak — the single largest absolute sample in that window, used for the peak-hold marker.

Both are linear amplitudes, converted to decibels relative to full scale with the standard formula dBFS = 20 · log₁₀(amplitude), then mapped onto the meter between −60 dBFS (0% — the meter's practical noise floor for display purposes) and 0 dBFS (100% — full scale, the loudest a digital sample can represent before clipping). The peak marker decays gradually rather than jumping instantly, so a brief loud sound stays visible long enough to see rather than flickering past in a single frame.

Nothing here needs a fixed sample-rate assumption or hardware-specific calibration — AnalyserNode works on whatever the browser hands it, at whatever sample rate the active device reports (shown in the readout under the meter).

How the site is built

  • Static HTML, one small stylesheet, one small script. No framework, no build step, no bundler.
  • Nothing about your audio leaves your device. There is no recorder, no upload endpoint, and no analytics beacon on this page for it to reach even by accident.
  • System font stack. Your operating system's UI font, so nothing has to download and nothing shifts as the page loads.
  • Dark mode follows your system setting via prefers-color-scheme.
  • The microphone is released deterministically. Clicking Stop stops every audio track and closes the AudioContext; the same happens automatically if you navigate away or close the tab.

Scope and honesty about limits

This tool answers exactly one question: is a signal reaching this device's microphone input, and is it neither silent nor clipping? It cannot evaluate frequency response, background noise character, echo, wind handling, or how you sound to another person — those need an actual test recording or call, not an amplitude meter. It also cannot see past what the browser is given: an operating-system-level mute, a disabled device, or a driver problem can each prevent getUserMedia from returning a usable stream at all, and the browser's own error is the most this page can surface in that case.

Behaviour can differ slightly between browsers — default noise suppression and echo cancellation are applied by the browser or OS before this page ever sees the signal, and are not something a page can fully disable or standardise across vendors.