Device test · Camera & mic

Video Call Test

A camera and mic test for the two minutes before a meeting. It opens the microphone, then the camera, meters your input, plays a clip of your own voice back to you, and measures how much of your speaker output reaches your microphone. Every row says how it knows what it says — and the summary will not go green until you have answered the two things a browser cannot see for itself. Nothing leaves this device.

Only checking a microphone? The microphone test has the waveform, the clipping counter and a signal-to-noise measurement. Only checking a camera? The webcam test has the freeze-frame and the mirror toggle.

Summarynot run Microphonenot requested Cameranot requested Bleednot measured

Press “Start the check” to open the microphone and then the camera. Each asks for its own permission, and refusing one does not stop the other.

Input level is RMS in dBFS — relative to digital full scale, not loudness. A browser has no calibrated reference, so it cannot measure sound pressure in dB SPL and no number here is a volume in the room. There is no correct input level, so that row prints numbers and never a pass or a fail. Its RMS figure is the current instant; the peak and the clipped-window count hold since you started or last reset, and Reset clears those two without dropping the camera or your answers. For a moving meter, a waveform and a signal-to-noise figure, use the microphone test.

Records three seconds from the microphone into memory and plays it straight back through your current output. Nothing is written to disk and nothing is uploaded; the clip is discarded when you stop or leave the page.

Did you hear the playback? The browser can prove the clip played; only you can say whether any sound reached the room.

Does the picture look right? Frames arriving is a measurement; being in frame, lit and in focus is a judgement, and this page does not pretend to make it.

Speaker-to-microphone bleed

Take headphones off first, and turn the volume down. On headphones there is no acoustic path between the speaker and the microphone, so the probe measures nothing and the result is meaningless. This plays a 1.2-second sine tone at −20 dBFS through whichever output is currently selected, ramped in and out over 30 ms so it cannot click. A microphone that can hear its own speakers can build a loop into a squeal, which is loud enough to hurt on headphones.

No feedback loop can form here: the analyser reading your microphone is never connected to the audio output, and the probe oscillator is never fed from the microphone. The tone plays only when you press the button — never on page load.

Measures one narrow band near 2 kHz for 1 second with nothing playing, plays the tone for 1.2 seconds, and reports the difference in dB. 2 kHz because small laptop speakers reproduce it and it is clear of mains hum. Below 6 dB the tone did not rise above the floor; 20 dB or more means the microphone is clearly hearing this device's own output.

What each row is, and how it is known

Three kinds of evidence, kept apart on purpose: measured means this page computed it, reported means the browser said so and the page is repeating it, and confirmed by you means a human answered a question no browser can.

CheckEvidenceResult
Microphone accessmeasurednot run
Microphone signalmeasurednot run
Input levelmeasurednot run
Audio processingreportednot run
Track formatreportednot run
Camera accessmeasurednot run
Camera framesmeasurednot run
Camera formatreportednot run
Presented frame ratemeasurednot run
Speaker-to-mic bleedmeasurednot run
Playback heardconfirmed by younot run
Picture looks rightconfirmed by younot run

How this test works

Pressing start makes two separate getUserMedia requests, the microphone first and the camera second, rather than one combined request for both. That costs a second permission prompt and buys a per-device diagnosis: a combined request that fails names neither device, whereas two requests let the camera row say “in use by another app” while every microphone row is still measured. The microphone stream feeds a Web Audio AnalyserNode, which yields RMS, true sample peak and a count of windows containing a clipped sample; the camera stream feeds the preview, and where the browser supports frame-callback timing the frame rate is counted from frames actually presented on screen rather than taken from the number the driver claims. That counted rate is the only frame rate this page measures, so it has its own row; the picture size and the nominal rate come from the browser, so they sit on a separate row marked reported. Where there is no frame callback there is nothing to count: the page watches the video element's own clock instead, says so, and the measured row states that it cannot measure here rather than borrowing the nominal figure.

The bleed measurement is the one genuinely new instrument here. It reads a single narrow band for one second with nothing playing to establish a baseline, plays a 1.2-second sine at −20 dBFS through the current output, discards the first 150 milliseconds for the ramp and for acoustic latency, and reports the difference between the two medians in dB. Medians rather than means, so a door slam during the window cannot manufacture a result. The probe frequency is derived at run time from the hardware sample rate and snapped to the nearest analysis bin, which cuts the spectral leakage a between-bins tone would produce, and the page prints the frequency it actually used. Near 2 kHz because small laptop speakers reproduce it and it sits clear of mains hum and its harmonics. If a window does not collect enough reads — a background tab being the usual cause — the result is withheld rather than reported at low confidence.

The limits are the important part. There is no far end here: no other participant, no call, no server, and the site's own Content-Security-Policy forbids this page from connecting anywhere but its own origin, so a bandwidth or call-quality verdict is not merely unwise, it is impossible. The bleed figure is an acoustic loop on this device at the current output volume and nothing else; if the browser reports echo cancellation on, it is already suppressing that loop, so a small number means the loop is suppressed rather than that your speakers are inaudible, and the page says which. Every level is dBFS, relative to digital full scale, which is why no reading here is a loudness and why a browser cannot report dB SPL. Nothing on this page scores a microphone or a camera, judges lighting or framing, or measures drift between sound and picture, because none of those has a reference a browser could measure against — the preview and the playback exist so that a human can judge them, and the two rows that depend on that judgement say so.

Frequently asked questions

Can this tell me whether other people will hear an echo?
No, and nothing that runs only in your browser can. There is no far end here — no other participant, no call, no server. What the bleed measurement does is play a short tone through your own output and measure how much of it arrives back at your own microphone, which is an acoustic loop on this device at the volume it is set to right now. That loop is the raw material an echo is made from, so a large figure is worth acting on, but whether anyone actually hears an echo depends on the far end's software, and this page cannot see it.
Why won't the summary say ready until I answer two questions?
Because two of the twelve rows are not things a browser can know. It can prove that a clip played and that its clock advanced; it cannot prove that any sound left a speaker at a volume you could hear. It can prove that frames are arriving from the camera; it cannot judge whether you are in frame, lit, or pointing at the ceiling. Those two rows are marked confirmed by you, and the summary reads incomplete — never green — until you have answered them. A page that quietly passed them would be guessing and calling it a result.
Why does it ask for the microphone and the camera separately?
Because a single combined request that fails tells you nothing about which device failed, and telling those apart is the whole point of this page. Two sequential requests cost you two prompts and buy a per-device diagnosis: if the camera is busy and the microphone is fine, the camera row says so by name and every microphone row still gets measured. Refusing one never stops the other from running.
Is this a hearing test, and is the tone safe?
It is not a hearing test and cannot be used as one: the output level is uncalibrated, nothing here is a measurement of your ears, and no result carries medical meaning. The probe tone is a 1.2-second sine at −20 dBFS with 30 ms ramps at each end, so it starts and stops without a click, and it plays only when you press the button — never on load. Turn the volume down first and take headphones off: on headphones there is no acoustic path from the speaker to the microphone, so the measurement means nothing anyway.
Is any of my audio or video uploaded?
No. The preview is a direct feed from your camera to your own screen, the meter reads your microphone through the Web Audio API, and the playback clip is held in memory in this tab and discarded when you stop or leave. There is no upload step and no server to upload to. The site's Content-Security-Policy also forbids this page from connecting anywhere but its own origin, so the promise is enforced by the browser rather than only stated here.

Related tests and guides