The video stays in your browser. Nothing is uploaded or recorded, and the camera turns off when you click Stop or leave the page.
About this tool
This webcam test checks that your camera works in the browser before a video call, interview or recording. Click Start camera, allow access, and you get a live preview plus a report of what the camera is really sending: its name, the resolution and frame rate the browser reports, and a frame rate measured on the page. You can switch cameras, ask for a higher resolution, and save a snapshot as a PNG. Everything runs locally with the browser's own camera API. The page has no recording feature and sends no video anywhere.
How to use the webcam test
- Click Start camera. Your browser shows a permission prompt. Choose Allow. The status line tells you whether access was granted, blocked or failed, and why.
- Check the preview. Mirror preview is on by default so the image moves like a mirror. Turn it off to see the camera's true orientation.
- Pick a camera. If you have more than one, choose it from the Camera list. Browsers only show camera names after you grant permission, so the list fills in once the camera starts.
- Try a resolution. Ask for 720p, 1080p or 4K and the page restarts the camera with that request. The report then shows what the camera actually delivered, which may be lower.
- Take a snapshot. Take snapshot copies the current frame at full resolution; Download PNG saves it. The snapshot is never mirrored, so text in it reads correctly.
- Click Stop camera when you are done. The camera also stops when you switch tabs or leave the page.
How it works
The page calls navigator.mediaDevices.getUserMedia() with video only, so no microphone is requested. The live stream is attached to a video element on the page. The report comes from the video track's getSettings(), which returns the width, height and frame rate the browser negotiated with the camera. The camera list comes from enumerateDevices(). MDN notes that device labels are empty until you have given permission to at least one camera or microphone, which is why names only appear after you start.
The reported frame rate is what the camera was asked to deliver; the measured rate counts real frames. Where the browser supports requestVideoFrameCallback(), the page reads its presentedFrames counter about once a second and divides the new frames by the elapsed time. Otherwise it falls back to the video's playback-quality frame counter, checked on each animation frame. That callback fires at the lower of the video frame rate and the screen refresh rate, so a measured value well below the reported one means frames are not arriving as fast as the camera settings say.
When you click Stop, every track in the stream is stopped. Per the W3C Media Capture spec, a stopped track is permanently ended, and once all tracks using a camera have stopped, the source is stopped. The camera's indicator light should then go off, unless another app or tab is still using it.
Common webcam resolutions
| Name | Width × height | Aspect ratio | Megapixels |
|---|---|---|---|
| VGA | 640 × 480 | 4:3 | 0.31 |
| 720p (HD) | 1280 × 720 | 16:9 | 0.92 |
| 1080p (Full HD) | 1920 × 1080 | 16:9 | 2.07 |
| 1440p (QHD) | 2560 × 1440 | 16:9 | 3.69 |
| 2160p (4K UHD) | 3840 × 2160 | 16:9 | 8.29 |
Use the Aspect Ratio Calculator to work out other sizes.
Worked example
Say you ask for 1280 × 720 and the camera accepts. The report shows Resolution 1280 × 720, Aspect ratio 16:9 (both sides divided by their greatest common divisor, 80) and 0.92 MP (921,600 pixels). If the reported frame rate is 30 and the frame counter rises by 59 frames in 1.97 seconds, the measured rate is 59 ÷ 1.97 = 29.9 fps, so the camera is keeping up. A snapshot is then a 1280 × 720 PNG. If you ask for 4K on a 720p camera, the browser picks the closest mode it can, and the report shows the real size, not the request.
Webcam not working? Troubleshooting
- Permission blocked. If you clicked Block, the browser remembers it. In Chrome, open Settings > Privacy and security > Site settings > Camera and move this site from Not allowed to Allow (Google help). In Edge, open Settings > Privacy, search, and services > Site permissions > All sites, then set Camera to Allow for this site. In Firefox, click the permissions icon on the left of the address bar and clear the Blocked entry, or use Settings > Privacy & Security > Permissions > Camera (Mozilla help). In Safari on a Mac, choose Safari > Settings > Websites > Camera and set this site to Ask or Allow (Apple help). Menu names can change between browser versions. Reload the page afterwards.
- Operating system privacy settings. The OS can block the browser even when the site is allowed. On Windows 11, go to Start > Settings > Privacy & security > Camera, and make sure camera access and desktop app access are on (Microsoft help). On macOS Ventura or later, open Apple menu > System Settings > Privacy & Security > Camera and turn on your browser (Apple help).
- Camera in use by another app. A
NotReadableErrormeans permission was given but a hardware or system problem stopped the browser reading the camera. Close video-call apps and other tabs that may be using it, then click Start again. - Privacy shutter or switch. Many laptops have a sliding cover over the lens or a camera key or switch. A black picture with a working report often means the shutter is closed.
- Not on HTTPS. According to MDN, camera access is only available in secure contexts: pages loaded over HTTPS, from
localhostor from a local file. On a plainhttp://page the camera API is missing entirely.
Common mistakes
- Judging image quality from a mirrored preview. Video-call apps also mirror your self-view, but other people see you unmirrored, as in the snapshot.
- Assuming the requested resolution is what you get. Only the report shows the real size.
- Checking only the picture. The measured frame rate shows whether video is actually smooth, which a still glance can miss.
- Leaving another call open in a background tab, which can hold the camera.
Use cases
- A quick camera check before a job interview, telehealth visit or class.
- Confirming a new external webcam really delivers 1080p.
- Grabbing a still for a profile picture, then shrinking it with the Image Resizer or Image Compressor.
- Testing your microphone too with the Mic Test.
Frequently asked questions
Yes. The video goes from your camera to the video element on this page and nowhere else. The page has no recording feature and sends no video over the network. A snapshot is drawn in your browser and only saved if you click Download PNG. The camera stops when you click Stop or leave the page.
If the report shows a resolution but the picture is black, check for a closed privacy shutter, a camera function key, or a very dark room. If nothing starts at all, another app may be using the camera, or the browser or operating system may be blocking access. The status line names the error the browser returned.
When a page does not ask for a size, the browser picks a default, which can be lower than the camera maximum. Choose 1920 x 1080 in the Ask for list and the camera restarts with that request. If the report still shows a lower size, the camera, its driver or a USB connection may not support that mode, or another app may be holding it at a lower setting.
Open this page in your phone browser and tap Start camera. If your phone has front and back cameras, use the Camera list to switch between them. Mobile browsers ask for permission the same way, and the phone settings app can also block the browser from the camera, so check there if you see a permission error.
Compare the measured rate with the reported rate. If they are close, the camera is delivering what it promised. If the measured rate is much lower, close other apps and tabs using the camera, improve the lighting, and try a lower resolution in the Ask for list, then check whether the measured rate recovers.
This page stops every camera track when you click Stop, switch tabs or leave. If the light stays on, another tab or app is probably still using the camera. Close video-call apps and other browser tabs that asked for the camera, then check again.