Webcam test online
Preview your camera, check resolution support, capture snapshots, and monitor FPS.
Camera access needed
This tool previews your webcam and measures FPS. Video is processed locally in your browser — nothing is uploaded.
This webcam test opens a live preview with getUserMedia and then reads the truth back out of the video track. getSettings reports the width, height and frame rate the camera actually negotiated, not the number on the box, and the device label names the hardware. A resolution probe requests 640x480, 1280x720, 1920x1080, 2560x1440 and 3840x2160 in turn with exact constraints and records which ones the camera accepts. A frame counter driven by requestVideoFrameCallback shows live FPS and flags when it falls below 85% of the rated rate. Snapshots are drawn to canvas and saved as PNG; short clips record to WebM.
Key facts about Webcam test online
| Camera API | navigator.mediaDevices.getUserMedia, with the device chosen by deviceId |
|---|---|
| Reported settings | width, height, frame rate, aspect ratio and the track label, from track.getSettings() |
| Resolutions probed | 480p, 720p, 1080p, 1440p and 4K, requested one at a time with exact constraints |
| Probe method | each resolution opens its own short-lived stream, which is stopped before the next is tried |
| FPS counter | requestVideoFrameCallback where available, falling back to requestAnimationFrame |
| Dropped-frame flag | raised when measured FPS falls under 85% of the track's reported frame rate |
| Hardware controls | brightness, contrast and zoom are offered only when track.getCapabilities() lists them |
| Control mechanism | applyConstraints with an advanced constraint — a real camera control, not a CSS filter |
| Snapshot | the current frame drawn to a canvas at the video's native size and exported as PNG |
| Mirror | flips the preview horizontally and is baked into the snapshot when enabled |
| Recording | MediaRecorder writing video/webm from the same live stream |
| Multiple cameras | enumerateDevices lists every videoinput; labels only appear after permission is granted |
What happens to your file
The video never leaves your computer. getUserMedia hands the page a MediaStream that is attached directly to a video element in this tab; there is no upload, no recording on a server, and no third-party video service involved. Snapshots are drawn into a canvas in the same tab and turned into a PNG Blob that your browser downloads locally. Recordings are assembled by MediaRecorder into a WebM Blob held in memory until you save or discard them. When you stop the camera, every track is stopped, which is what turns the camera indicator light off. Closing the tab ends the stream and discards everything.
About this tool
- 1
Allow the camera
Click start and accept the browser permission prompt. If you previously blocked the camera on this site, the prompt will not reappear — clear the permission from the padlock icon in the address bar first.
- 2
Pick the right camera
The device list only shows real names once permission is granted. On a laptop with an external webcam, both appear; select the one you actually want to test rather than assuming the default is right.
- 3
Read the negotiated settings
Width, height and frame rate come from the track itself, so they show what the camera is delivering right now. A camera sold as 1080p often opens at 640x480 by default until you request more.
- 4
Run the resolution probe
The probe asks for 480p through 4K in turn with exact constraints. Anything marked unsupported was refused by the camera or the driver at that exact size, which is a stronger result than a preview that silently downscales.
- 5
Watch the FPS counter
Point the camera at a well-lit scene and check the live FPS. Many webcams drop from 30 to 15 frames per second in dim light because the sensor lengthens its exposure; that is the camera, not the browser.
- 6
Try the hardware controls
If brightness, contrast or zoom sliders appear, the camera exposes those as real constraints. Moving them calls applyConstraints on the live track, so the change happens in the camera and will carry into video calls.
- 7
Capture and record
Take a snapshot to download a PNG at the camera's native resolution, or record a short WebM clip and play it back to check for stutter, banding or audio-free video output.
| Browser support | Chrome, Edge, Firefox, Safari 11+ and Opera all implement getUserMedia |
|---|---|
| Secure context | camera access requires HTTPS; this page is served over HTTPS |
| requestVideoFrameCallback | Chromium and Safari 15.4+; Firefox falls back to requestAnimationFrame, so FPS is capped by the display |
| Device labels | empty until the user grants permission — a browser privacy rule, not a bug |
| Camera controls | brightness, contrast and zoom are exposed mainly by Chromium; most cameras support none of them |
| Recording format | WebM only, so it plays in Chrome, Firefox and Edge but needs conversion for QuickTime |
| iOS Safari | one camera stream at a time and no MediaRecorder on older versions, so recording may be unavailable |
| Account or install | none — no signup, no plugin, no app |
- Close Zoom, Teams, Discord and OBS before testing. On Windows many cameras allow only one application to hold the stream, and the browser will fail with a busy device error.
- A preview that stays black with the camera light on usually means a privacy shutter is closed or another app has the sensor.
- If the probe says 1080p is unsupported but the camera box claims it, check whether the camera only offers that size in MJPEG and the browser is requesting raw YUV.
- Frame rate falling in the evening is almost always exposure, not a fault. Add a light in front of you rather than behind you and retest.
- The mirror toggle only affects what you see and what a snapshot contains; it does not change what a video-call app sends.
- Use the snapshot to compare two cameras at their native resolutions, since the preview is scaled to fit the page and hides real sharpness differences.
- External USB cameras on a hub can be bandwidth-limited; plug directly into the computer before concluding that 1080p is not supported.
- WebM recordings play in Chrome, Edge and Firefox but not in QuickTime — convert the file if you need to send it to a Mac user.
- Live preview with a mirror toggle and fullscreen
- Real negotiated resolution, frame rate, aspect ratio and device name
- 480p to 4K support probe using exact constraints
- Live FPS counter with a dropped-frame warning
- Hardware brightness, contrast and zoom where the camera exposes them
- PNG snapshots at native resolution
- WebM recording with playback and download
- Checking that a webcam works before a job interview or a first video call.
- Finding out which resolutions a camera genuinely supports before buying a capture setup around it.
- Diagnosing why a video call looks soft when the camera is advertised as 1080p.
- Confirming that a newly installed external webcam is the one the browser selects by default.
- Testing whether low frame rate in calls is the camera's exposure behaviour or the calling software.
- Capturing a reference snapshot to compare image quality between two cameras.
Related tools
View allPart of Hardware testers that run in your browser
Works well with this5
More hardware testers10
More in Gaming11
Related categories2
Updated