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.
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.
| Check | Evidence | Result |
|---|---|---|
| Microphone access | measured | not run |
| Microphone signal | measured | not run |
| Input level | measured | not run |
| Audio processing | reported | not run |
| Track format | reported | not run |
| Camera access | measured | not run |
| Camera frames | measured | not run |
| Camera format | reported | not run |
| Presented frame rate | measured | not run |
| Speaker-to-mic bleed | measured | not run |
| Playback heard | confirmed by you | not run |
| Picture looks right | confirmed by you | not 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.