Test your webcam
Test your webcam with a live preview, measured frame rate, resolution readout and a snapshot to PNG. No video ever leaves your device.
- Runs in your browser
- Files are never uploaded
- Free, no account
Your browser will ask for camera permission. The indicator light next to your camera turns on while the preview is running and goes out the moment you press stop.
Camera names appear once you have allowed access one time.
Asked for as a preference. A camera that cannot manage it returns its closest match instead of failing.
Video calls usually mirror your own preview so it feels like a mirror. Everyone else sees the unmirrored image — snapshots follow whatever you set here.
What the test tells you
Three numbers, and all three matter for different reasons.
- Resolution is what the camera is actually delivering right now, read from the video track’s own settings — not what the box claimed.
- Measured frame rate is counted frame by frame as they arrive in the page, using
requestVideoFrameCallbackwhere the browser provides it. This is the number that determines whether you look smooth or stuttery on a call, and it is frequently lower than the camera’s rating. - Aspect ratio reveals whether the camera is cropping. A 4:3 sensor pretending to be 16:9 is doing it by cutting off the top and bottom.
Why the frame rate is lower than advertised
A camera rated for 30 fps rarely delivers 30 fps in practice, and the reasons are physical rather than faults.
| Cause | Symptom | Fix |
|---|---|---|
| Low light | Drops to 15 fps or below indoors in the evening | Add light in front of you. The sensor lengthens its exposure per frame to compensate, which directly caps the frame rate. |
| USB bandwidth | High resolutions drop frames; lower ones do not | Plug into a port directly rather than through a hub or a monitor. |
| CPU load | Frame rate falls when other apps are busy | Close background video calls, encoders and browser tabs. |
| Another app has the camera | Preview is black, or stutters badly | Quit Zoom, Teams, OBS and any other tab holding the camera. |
| Auto-exposure hunting | Frame rate oscillates while brightness shifts | Stabilise the lighting, or set manual exposure in the camera’s own utility. |
Requested resolution versus what you get
The resolution dropdown asks with ideal rather than exact. That is
deliberate: an exact constraint makes a camera that cannot manage the setting throw
an error and give you nothing, while ideal makes it return its closest match. So
asking for 1080p on a 720p sensor gets you a working 720p preview rather than a failure.
Two things surprise people here. Many built-in laptop cameras really are 720p sensors, whatever the marketing said. And some cameras will deliberately drop resolution to hold a higher frame rate, or the reverse, because the USB link cannot carry both.
Mirroring, and which version other people see
Video-call apps mirror your self-view because an unmirrored image of your own face reads as wrong — text on your shirt appears backwards to you, and you reach the wrong way when adjusting the camera. Everyone else on the call always sees the unmirrored image.
This page mirrors by default to match that expectation, and the toggle lets you see what others see. Snapshots are captured exactly as displayed, so turn mirroring off first if you are photographing a document, a whiteboard or anything with writing on it.
The snapshot
The snapshot draws the current video frame onto a canvas at full sensor resolution and encodes it as PNG — lossless, so it is a pixel-exact record of what the camera delivered. Because it is generated from the live stream rather than taken by a camera application, it carries no EXIF block at all: no timestamp, no location, no device serial, no lens data. It is not saved anywhere until you press download.
That makes it a genuinely useful way to check focus and framing at full resolution, which a scaled-down preview cannot show you.
Nothing is transmitted — the structural version
Every webcam-test site claims your video is private. Most of them are streaming it somewhere, because their architecture requires a server. Here is why this one cannot be:
- The site is static, with no backend and no API routes. There is no endpoint to receive a frame.
- There is no
RTCPeerConnectionanywhere in the page, so there is no WebRTC path out either. - The site’s Content-Security-Policy lists no third-party origin in
connect-src, so a request to anywhere else would be blocked by the browser itself. - The preview is your own
MediaStreamattached to a video element. That is the entire pipeline.
Check it: open developer tools, watch the Network tab, and run the test. Nothing. Or turn off Wi-Fi and run it anyway — it works exactly the same.
Releasing the camera
Press "Stop and release the camera" and every track in the stream is stopped; the indicator light next to your camera goes out within a second. Closing the tab does the same thing. If the light stays on after both, another application or another browser tab still has the camera open — that is a good reason to check before joining a call.
Also worth testing
A camera that works and a microphone that does not is the more common failure on a video call. The microphone test covers levels, device selection and a record-and-playback loop, with the same guarantee that nothing leaves your machine. To record audio properly afterwards, there is the voice recorder.
Questions
Is my video streamed to a server?
No. The preview is your own camera stream rendered into a video element in this tab. There is no WebRTC peer connection, no signalling server and no upload endpoint anywhere in this page’s code — and the site’s Content-Security-Policy permits no third-party origin at all, so there is nowhere for it to go.
Why is the measured frame rate lower than what my camera claims?
The measurement counts frames actually delivered to the page, which is the number that matters on a call. Cameras drop below their rated rate in low light because the sensor needs a longer exposure per frame; a busy CPU, a USB hub sharing bandwidth, or a background app also holding the camera will do the same.
The picture is mirrored — is my camera wrong?
No. Video-call apps mirror your self-view because an unmirrored image of yourself feels wrong, while the people you are talking to always see the unmirrored version. This page mirrors by default and lets you toggle it; snapshots are saved exactly as shown.
I asked for 1080p but got 720p.
The resolution is requested as a preference rather than a demand, so a camera that cannot manage it returns its closest match instead of failing outright. Many built-in laptop cameras are genuinely 720p sensors, and some drop to a lower resolution to hold a higher frame rate.
The camera light stays on after I finish.
Press “Stop and release the camera”, which stops every track in the stream — the indicator goes out within a second. Closing the tab does the same. If the light stays on after both, another application or tab still has the camera open.