AnyTool
Your files never leave your device. All processing happens locally in your browser.

How do I test my microphone in the browser?

Open AnyTool Microphone Test, press Start test and allow the microphone when your browser asks. Speak, tap or clap and the animated level meter and live waveform react to your voice — that movement proves the mic is working. The tool reads the active audio track and the Web Audio engine to show the microphone’s name, sample rate, channel count and reported latency. If you have more than one mic, pick another from the dropdown and the test restarts on it. Press Record to capture a short clip, then play it straight back to hear how you actually sound, and download it if you like. Everything runs locally — your microphone audio is analysed only on your device and is never uploaded; recordings stay in your browser unless you choose to download them, and the mic stops the moment you press Stop test or leave the page.

  • Animated level (VU) meter + live waveform that react to your voice — proves the mic works
  • Shows the real mic name, sample rate, channel count and latency (track.getSettings + AudioContext)
  • Switch between multiple microphones with the device selector (enumerateDevices)
  • Record a short clip and play it back locally to hear yourself — download optional
  • 100% client-side: your audio is never uploaded and the mic isn’t routed to your speakers

What is

Microphone Test

A microphone test confirms that your mic works and shows what it is capturing: a live level meter and waveform that move when you speak, plus the device’s name, sample rate and channel count. A browser-based test uses the MediaDevices getUserMedia API to open the mic with your permission, feeds it into a Web Audio AnalyserNode to visualise the signal, and can record a short clip with the MediaRecorder API for instant playback — all on your device, with nothing uploaded.

Generators

Related terms

getUserMediaWeb Audio APIAnalyserNodeMediaRecorderenumerateDevicesRMS / level meterWaveformSample rate

Frequently Asked Questions

No. Your audio is analysed only on your device, live in your browser, and is never uploaded. Any clip you record stays in your browser as a temporary blob and is only saved if you download it; the mic stops the instant you press Stop test or leave the page.

Everything happens locally. The browser opens the microphone with getUserMedia only after you grant permission, and the stream feeds a Web Audio AnalyserNode purely to draw the level meter and waveform — there is no server, no account and nothing transmitted. The mic is deliberately not connected to your speakers, so there is no feedback. If you press Record, the MediaRecorder API captures a short clip as an in-memory blob that plays back in an audio element on your device; it is written to disk only if you press Download. The microphone track is stopped and the audio engine closed the moment you press Stop test, leave the page or close the tab, which turns the mic indicator off.

Usually the wrong mic is selected, the mic is muted, permission is missing, or another app is using it. Pick the right device in the dropdown, unmute it, allow the mic for the site, and close Zoom, Teams, Meet or OBS.

A flat level meter while you speak almost always comes down to a few things: the wrong microphone is chosen in the dropdown, a hardware mute switch or your OS mixer has the mic muted, the browser hasn’t been granted permission (click the mic icon in the address bar to allow it), or another app is holding the device — close Zoom, Teams, Meet, OBS or another browser tab. Microphone access also needs a secure (https) context. Once the right, unmuted mic is selected and permission is granted, speaking, tapping or clapping near it should make the bar jump and the waveform wiggle.

Yes. Press Record to capture a short clip with the MediaRecorder API, then play it back in the built-in audio player to hear how you sound — entirely local. You can download the clip or discard it, and keep a few at once.

After starting the test, the Record button uses the MediaRecorder API on the live microphone stream to collect a short clip into an in-memory blob. When you stop, the clip appears with an audio player so you can immediately play it back and judge clarity, volume and background noise — the single best way to confirm the mic sounds right. The recording is held only in your browser; you can download it as an audio file, discard it, or keep several clips to compare. Nothing is uploaded at any point.

It reads the active audio track’s getSettings() and the Web Audio AudioContext, which report the device name, sample rate, channel count and reported latency for this session.

When the test starts, the tool takes the live audio track from the MediaStream and calls track.getSettings(), which returns details such as the channel count, deviceId and reported latency, plus track.label for the human-readable microphone name. The Web Audio AudioContext provides the sample rate it is running at. These are the values the browser and device negotiated for this session rather than the hardware’s theoretical maximum, so they describe how the mic is running right now. The on-screen dBFS figure is a relative loudness reading derived from the signal, not a calibrated SPL measurement.

Detailed Explanation

Methodology

How the Microphone Test Opens and Reads the Mic

AnyTool Microphone Test runs entirely on the native MediaDevices and Web Audio APIs — navigator.mediaDevices.getUserMedia, enumerateDevices, AudioContext and AnalyserNode — with no library, CDN or upload. Pressing Start test checks window.isSecureContext and calls getUserMedia({ audio }), then wires the MediaStream through a MediaStreamAudioSourceNode into an AnalyserNode. Crucially the source is never connected to ctx.destination, so the mic is not routed to the speakers and there is no feedback. A requestAnimationFrame loop reads getFloatTimeDomainData each frame to compute the RMS (loudness) and a slow-decaying peak hold for an animated level meter with a dBFS readout, and draws the live time-domain waveform on a canvas. The active audio track’s getSettings() and the AudioContext report the device name (track.label), sample rate, channel count and reported latency. enumerateDevices() lists every audioinput — labels populate once permission is granted — to fill a microphone selector; choosing another mic stops the current tracks and restarts getUserMedia with { deviceId: { exact } }. A track ‘ended’ listener catches a mic unplugged or grabbed by another app mid-session.

  • getUserMedia({ audio }) → MediaStreamSource → AnalyserNode, NOT connected to the speakers (no feedback)
  • requestAnimationFrame reads getFloatTimeDomainData → RMS + peak-hold level meter and a live waveform
  • track.getSettings() + AudioContext → mic name, sample rate, channel count and reported latency
  • enumerateDevices() populates a mic selector; switching restarts on the chosen deviceId
  • Secure-context check + a track ‘ended’ listener for unplugged / in-use microphones
How It Works

Record, Play Back and the Level Meter

The single clearest proof a mic works is recording a short clip and hearing yourself, so the tool wraps the MediaRecorder API around the live stream: ondataavailable collects chunks and onstop assembles them into a Blob, which becomes an object URL played in an <audio> element for instant local playback. Clips can be downloaded as audio files (.webm or .ogg depending on the browser), discarded, or kept several at a time to compare; every object URL is revoked when a clip is removed or the page unloads. The animated level meter maps the RMS into a coloured bar with a thin peak-hold marker and an approximate dBFS figure, and surfaces clear states — NO SIGNAL when the bar stays flat, GOOD in the comfortable range, and TOO LOUD near clipping — with a prompt to speak, tap or clap and watch the bar move. The same Start/Stop and Record controls repeat in a sticky mobile action bar.

  • MediaRecorder → chunks → Blob → object URL → <audio> for instant local playback
  • Download a clip (.webm/.ogg), discard it, or keep several to compare
  • Level meter shows RMS, a peak-hold marker and an approximate dBFS readout
  • Clear NO SIGNAL / GOOD / TOO LOUD states plus a “speak and watch the bar” hint
  • Object URLs are revoked on discard, clear-all and unmount
Limitations

Privacy and Honest Limits

Because the microphone is opened and analysed entirely in the browser, your audio is processed only on your device and is never uploaded — there is no server, no account and nothing transmitted, and the mic is not routed to your speakers. Any recording is an in-memory blob that stays in your browser and is written to disk only if you choose to download it. The microphone track is stopped, the AudioContext closed, any recorder stopped and object URLs revoked the instant you press Stop test, leave the page or unmount. Honestly, the sample rate, channel count and latency shown are what the browser and device negotiated for this session rather than the hardware’s maximum, and the dBFS figure is a relative loudness reading, not a calibrated SPL measurement. A flat level meter usually means the wrong mic is selected, the mic is muted, permission is missing, or another app (Zoom, Teams, Meet, OBS or another tab) holds the device. Access requires permission and a secure (https) context, and recording relies on the MediaRecorder API, which a few older browsers lack.

Microphone Test: in-browser (AnyTool) vs typical online testers
CapabilityAnyToolTypical online testers
Mic accessNative getUserMedia, secure-context checkedgetUserMedia, varies
Level meterAnimated RMS + peak-hold + dBFS readoutOften a basic bar
WaveformLive Web Audio time-domain canvasSometimes none
Device infoName, sample rate, channels, latencyOften name only
Multi-micenumerateDevices selector, live switchingSometimes single mic
Record + playbackMediaRecorder → local playback + downloadSometimes none
PrivacyAnalysed locally, never uploaded; no feedback to speakersMay stream or record remotely

AnyTool analyses your microphone locally with the native getUserMedia, Web Audio and MediaRecorder APIs; your audio is never uploaded, the mic is not routed to your speakers, and recordings stay in your browser unless you download them.