Skip to main content

Webcam test online

Preview your camera, check resolution support, capture snapshots, and monitor FPS.

Free & unlimitedWorks offline

Camera access needed

This tool previews your webcam and measures FPS. Video is processed locally in your browser — nothing is uploaded.

All processing happens in your browser. No data is sent to any server.

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

Key facts about Webcam test online
Camera APInavigator.mediaDevices.getUserMedia, with the device chosen by deviceId
Reported settingswidth, height, frame rate, aspect ratio and the track label, from track.getSettings()
Resolutions probed480p, 720p, 1080p, 1440p and 4K, requested one at a time with exact constraints
Probe methodeach resolution opens its own short-lived stream, which is stopped before the next is tried
FPS counterrequestVideoFrameCallback where available, falling back to requestAnimationFrame
Dropped-frame flagraised when measured FPS falls under 85% of the track's reported frame rate
Hardware controlsbrightness, contrast and zoom are offered only when track.getCapabilities() lists them
Control mechanismapplyConstraints with an advanced constraint — a real camera control, not a CSS filter
Snapshotthe current frame drawn to a canvas at the video's native size and exported as PNG
Mirrorflips the preview horizontally and is baked into the snapshot when enabled
RecordingMediaRecorder writing video/webm from the same live stream
Multiple camerasenumerateDevices 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. 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. 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. 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. 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. 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. 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. 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.

Specs & compatibility
Browser supportChrome, Edge, Firefox, Safari 11+ and Opera all implement getUserMedia
Secure contextcamera access requires HTTPS; this page is served over HTTPS
requestVideoFrameCallbackChromium and Safari 15.4+; Firefox falls back to requestAnimationFrame, so FPS is capped by the display
Device labelsempty until the user grants permission — a browser privacy rule, not a bug
Camera controlsbrightness, contrast and zoom are exposed mainly by Chromium; most cameras support none of them
Recording formatWebM only, so it plays in Chrome, Firefox and Edge but needs conversion for QuickTime
iOS Safarione camera stream at a time and no MediaRecorder on older versions, so recording may be unavailable
Account or installnone — 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.
Three common causes, in order. A physical privacy shutter is still closed — check the lens. Another application already holds the stream; on Windows most webcams are exclusive, so Zoom, Teams, Discord or OBS running in the background will block the browser. Or the operating system camera permission is off for the browser itself, which is separate from the per-site permission: check Windows privacy settings or the macOS Screen and Camera privacy pane, then reload the page.
Not necessarily. The probe requests each size with an exact constraint, so the camera must deliver that precise pixel count or be refused. Some cameras only offer higher resolutions in a compressed MJPEG mode and cannot produce raw frames at that size; some are limited by USB bandwidth, especially on a shared hub; and some drivers expose fewer modes to browsers than to native apps. Try plugging the camera directly into the computer and retest before concluding anything about the hardware.
The FPS counter measures frames actually delivered to the page, and several things cap that. Low light makes the sensor lengthen exposure, halving the frame rate automatically. The browser may have negotiated 30 fps because nothing asked for more. In Firefox the counter falls back to requestAnimationFrame, so it cannot exceed your display's refresh rate. Turn a light on, check the reported frame rate in the settings panel to see what was negotiated, and compare the two numbers before blaming the camera.
No. A snapshot is the current video frame drawn onto a canvas element in this tab and converted to a PNG Blob, which your browser then saves locally. A recording is produced by MediaRecorder in the same tab and held as a WebM Blob in memory until you download or discard it. Neither passes through any server, and neither is stored after you close the tab. The video stream itself is delivered by your operating system straight to the browser and never touches a network.
Because the tool only shows a control when track.getCapabilities() reports that the camera supports it. Most consumer webcams expose no programmable controls at all, and support is mainly a Chromium feature; Firefox and Safari commonly report nothing. When the sliders are missing, the camera's own vendor utility or the operating system camera settings are the place to adjust image parameters. The tool deliberately does not fake it with a CSS filter, because that would change the preview without changing what a call would send.
This page requests video only, so the microphone is not opened and no audio is captured, including in recordings — a clip saved here has a video track and nothing else. Test the microphone separately with the dedicated microphone tester, which opens an audio-only stream and shows levels, waveform and spectrum. Keeping them separate also means the browser only asks for one permission at a time, which makes it easier to tell which device a refusal applies to.
View all

Part of Hardware testers that run in your browser

Updated

We use anonymous analytics to improve ToolChamp. No personal data is stored or sold. Privacy Policy