Lotamyst / The Bench / Microphone Test

Microphone Test

Check any microphone in your browser — level meter, waveform, spectrum, playback and a real diagnosis. Nothing is uploaded; the audio never leaves this tab.

Device names stay hidden until you grant access — that is a browser privacy rule, not a bug. Press Start and the real names appear.

Idle — press Start microphone. Your browser will ask for permission.

Input levelpeak — · rms —
max peak dBFS
rms dBFS
noise floor
dc offset
sample rate
Waveform — last ~43 msrails at ±1.0
Spectrum — 20 Hz to 22 kHz (or Nyquist, whichever is lower), log scaleanalyser range −100 to −10 dB
Diagnosis
Reported by the device

Firefox reports fewer of these fields than Chromium does; “not reported” means the browser withheld the value, not that the feature is off.

Everything on this page runs locally: the meter, waveform and spectrum come from a Web Audio AnalyserNode in this tab, and there is no upload code anywhere in the page. The microphone is released the moment you press Stop, switch tabs or close the page.

Hear yourself

Monitoring routes the microphone straight back to your output so you can hear what the mic hears. Use headphones. On speakers this becomes a feedback loop and can squeal loudly.

Turn your volume down before you enable this. Monitoring starts quiet and is capped well below full scale, but a feedback loop can still get loud fast.

⏺ Record and play back

Thirty seconds, maximum. Record a sentence at your normal speaking distance, then listen to it — playback is the only test that tells you what other people actually hear.

0.0 s / 30 s

Start the microphone first.

Chrome and Firefox write WebM/Opus without a duration field, so the player's scrub bar can show a blank or infinite length until playback finishes — the audio itself is complete. If you are on speakers, the playback will be picked up by the microphone and show on the meter.

How to use it, and how to read the result

  1. Pick the device, then press Start. Allow the permission prompt. Before you allow it the browser hides device names by spec, so the list reads “Microphone 1, 2, 3” — it fills in with real names the moment access is granted.
  2. Leave the three processing toggles off for testing. They are on by default in most calling apps and all three change the thing you are trying to measure. Flip them on afterwards to hear what Discord or Zoom will do to your voice.
  3. Speak normally, at your normal distance. Aim for a peak between −18 and −6 dBFS. RMS for speech usually lands 12–18 dB below that, so roughly −30 to −20 dBFS. Green bar is fine, gold means you are close to the ceiling, red means you hit it.
  4. Watch the waveform, not just the number. It should be a roughly symmetric band around the centre line. Flat-topped humps touching the dashed rails are clipping. A band sitting visibly off-centre is DC offset.
  5. Measure the noise floor. Stop talking, keep the room as it normally is, press Measure noise floor and stay quiet for the three seconds. Under −60 dBFS is excellent; over −40 dBFS is loud enough that people will hear it behind you.
  6. Record ten seconds and listen back. Every meter on this page can look perfect while the audio still sounds wrong — plosives, room echo, a fan, a loose connector crackling. Your ears catch those; the meter does not.
  7. Read the diagnosis rows. Each one names the fault and the fix. If a row is red, fix that before changing anything else.

What is actually being measured

dBFS means decibels relative to full scale. 0 dBFS is the largest number the converter can encode, so every real level is negative and there is no “above zero”. The peak figure is the largest single sample in the last analysis window; RMS is the energy average over that window and tracks loudness far better. They are never the same number: a full-scale sine reads 0 dBFS peak but −3.01 dBFS RMS, and speech typically shows a 12–18 dB gap between the two. That gap is your crest factor, and it is why aiming for “peaks at −6” leaves an RMS around −20.

Where the numbers come from. The browser hands the page a live MediaStream; a Web Audio AnalyserNode exposes the most recent 2048 samples as floats between −1 and +1. Peak, RMS, DC offset and the clipping check are computed from that array once per animation frame. The spectrum is the same node's FFT, redrawn on a logarithmic frequency axis so the voice range is not squashed into the left-hand tenth of the graph.

Clipping is what happens when the signal asks for a number larger than full scale and gets the largest one instead. The peaks come back sliced flat, and the flat top is a burst of harmonics that sounds like crunch, buzz or a tearing noise on loud consonants. It is destructive — no plugin, no “normalize”, no AI cleanup puts back samples the converter never stored. The page flags a clip when three or more consecutive samples sit at 99.7% of full scale, and separately warns when the peak reaches −0.5 dBFS even without a confirmed run. The clip count is a severity indicator, not an event count: analysis windows overlap at 60 frames per second, so one long clipped syllable can register in several consecutive windows. Fix clipping at the source — lower the input level in the OS mixer, turn off any “+20 dB microphone boost”, move back from the capsule, or engage the pad on an audio interface.

Noise floor is the level of everything that is not you: preamp hiss, computer fans, air conditioning, mains hum, USB power noise bleeding into a cheap interface. The three-second measurement takes the median RMS across the window rather than the average, so a single cough or keyboard click does not wreck the reading — and if the loudest frame is far above the median, the page tells you the measurement was disturbed and to try again. Rough guide, measured with all processing off: below −60 dBFS excellent, −60 to −50 fine for streaming and calls, −50 to −40 audible hiss in quiet passages, above −40 noisy enough to comment on. With noise suppression enabled this number is fiction — the DSP gates the room to digital silence between words, so it will read −80 or lower on a genuinely hissy chain.

DC offset means the waveform is not centred on zero: the whole signal sits above or below the line. A failing electret capsule, a bias-mismatched ADC or a cheap USB interface can all do it. It costs you headroom on one side, produces a thump at every edit point, and can make a meter read hot when the room is silent. This page reports the offset as a percentage of full scale and flags anything above 0.5%. It only means something with echo cancellation off — the browser's AEC includes a high-pass filter that strips DC before the analyser ever sees it, so with AEC on the reading will be a flat 0.00% no matter how bad the hardware is.

Sample rate is reported twice on purpose. track.getSettings().sampleRate is what the capture device is running at; the Web Audio graph runs at its own rate and resamples into it, which on Windows is usually whatever the shared-mode mixer format says (commonly 48 000 Hz even for a 44 100 Hz device). If those two disagree, nothing is broken — but it does mean any recording you make here is the device's own stream, not the resampled graph. Firefox reports fewer of these fields than Chrome does; missing entries show as “not reported”, which is not a fault.

Before you blame the microphone

  • “Could not start audio source” / NotReadableError on Windows is almost always another app holding the device — Discord, Zoom, Teams, OBS, a game, or a second tab. Close them and press Start again. If nothing is obviously using it, open Sound settings → More sound settings → Recording → your mic → Properties → Advanced and untick Allow applications to take exclusive control of this device.
  • Nothing in the device list? Windows hides disabled inputs from the browser entirely. In the Recording tab, right-click the empty area, tick Show Disabled Devices, then enable yours.
  • Bluetooth headsets only expose a microphone in hands-free mode. If the headset is connected as high-quality stereo output only, no input device appears — and switching to hands-free will noticeably degrade the audio you hear. That trade-off is Bluetooth's, not the browser's.
  • Two system-level switches beat everything the browser can do. Windows: Settings → Privacy & security → Microphone, with both app access and desktop app access on. macOS: System Settings → Privacy & Security → Microphone → enable your browser.
  • The level is set in the OS, not here. A microphone reading −45 dBFS while you shout is usually sitting at 10% in Windows Sound → Recording → Levels, or has its boost turned off on a quiet dynamic mic.
  • Test the cable by wiggling it. Crackles, dropouts and one-sided noise while you move the connector are a cable or jack fault, and no amount of software will fix them.

FAQ

How do I test my microphone online?

Press Start microphone on this page and allow access when the browser asks. Speak at your normal distance and watch the level meter: a healthy voice signal peaks somewhere between -18 and -6 dBFS. Then record a few seconds and play it back, because the only test that really counts is what the other person hears.

Why can't the test hear my microphone?

Four causes cover almost everything. The wrong device is selected in the picker; the input is muted or set to zero in the operating system's sound settings; a headset has a hardware mute switch or the laptop has a mic-mute key; or another app such as Discord, Zoom or OBS is holding the device, which shows up as a NotReadableError. Work down that list in order and one of them will be it.

What does clipping mean and how do I fix it?

Clipping means the signal hit the loudest number the converter can store, so the tops of the waveform are sliced flat. It sounds like crunch or buzz on loud consonants and it cannot be repaired afterwards. Fix it at the source: lower the input level in your sound settings, turn off any microphone boost, back a few centimetres away from the capsule, or switch on the pad if your interface has one.

What is a good noise floor for a microphone?

Measured on this page with processing turned off, below -60 dBFS is excellent, -60 to -50 dBFS is fine for voice chat and streaming, -50 to -40 dBFS means an audible hiss under quiet passages, and above -40 dBFS is noisy enough that listeners will comment. Gain set too high, a long unbalanced cable, a cheap preamp, or a USB port shared with a charging phone are the usual culprits.

Should I turn echo cancellation and noise suppression off?

Turn all three off when you are testing the microphone itself, because they change what you measure. Auto gain control rewrites your level continuously, noise suppression gates the room to digital silence so the noise floor reads far better than it really is, and echo cancellation applies a high-pass filter that hides any DC offset. Turn them back on for calls, where they genuinely help.

Does this test upload or store my voice?

No. The audio never leaves your browser. Everything — the meter, the waveform, the spectrum and the recording — is produced locally by the Web Audio API and MediaRecorder, the recording lives only in this tab's memory until you download it or leave the page, and the page contains no upload code of any kind.

Related tools