yescord

Webcam test

See if your camera works, what resolution and frame rate it really delivers, and if it fails, why and how to fix it.

The camera turns on only when you press this. The picture stays in this tab: nothing is uploaded or saved unless you save a still.

What the numbers mean

  • Delivered now is what the camera track reports in track.getSettings(): the size of the frames this page receives and the frame rate the browser set the camera to. It is the live preview’s real size, not the size it is drawn at on your screen.
  • Frame rate, measured counts the frames that actually reach the page for 3 seconds (with requestVideoFrameCallback) and divides by the time between the first and the last. 90 frames in 3 seconds is 30 fps. It can be lower than the set rate, and when it is, the usual reason is light: many webcams lengthen each exposure in a dim room, which caps them at 15 fps or less. Turn on a lamp in front of you and test again. A busy computer can also drop frames, and browsers slow down background tabs, so keep this tab in front while it measures.
  • This camera’s maximum comes from track.getCapabilities(): the largest width, height and frame rate the browser believes this camera offers. They are separate maxima: a camera listing 1920 × 1080 and 60 fps may only manage 60 fps at a smaller size. “Try its highest resolution” asks for that size and shows what really arrives.
  • HD request. After the first picture, the page closes the camera and opens it again the way a typical page does when it wants HD: ideally 1280 × 720 at 30 fps (ideal constraints, which the browser meets as closely as the camera allows). The line says what that request gets on this device, with the rate measured. A camera that cannot do 720p gets its nearest size instead, which is why video on some sites looks soft. The live preview keeps that HD stream.
  • No size asked for is what the first request, with no size at all, received. Browsers pick their own default here, often a small one (Chrome gave 640 × 480 in our test), so a site that does not ask for HD can look worse than the camera is.

When it fails: the error name tells you why

Web pages reach the camera through one browser call, getUserMedia(). When it fails, the browser gives a named error, and each name means a different fix. This page shows the error it got, with steps for the system and browser it detects. Here is what each name means, following MDN’s list of exceptions:

Error nameWhat it meansWhere the fix is
NotAllowedError (older Chrome: PermissionDeniedError)Access was refused: by you, by a remembered choice for this site, by the operating system, or by a policy.The site permission in the browser, then the system’s camera privacy switch for the browser.
NotReadableError (older Chrome: TrackStartError)Permission is fine, but the system or driver would not start the camera. Usually another app has it.Close the other app or tab; replug or restart.
NotFoundErrorNo camera was found at all.The cable, a camera-off key, the driver (Windows Device Manager).
OverconstrainedErrorNo camera meets what the page demanded, such as an exact size or a camera that has been unplugged.The page’s request; this page retries once without any.
SecurityErrorCamera use is switched off for this page, for example in an embedded frame, or not on https.Open the page directly, over https.
NotSupportedError / TypeErrorThe browser has no camera API here, typical of in-app browsers.Open the page in the real browser, or update it.
AbortErrorSomething else stopped the start, with no clearer reason.Try again; close other camera apps; restart.

On NotReadableError: browsers do not reveal which app holds the camera, and no web page can find out. The usual holders are another tab with a call or camera page, a call app (Zoom, Microsoft Teams, Skype, Slack, Discord, FaceTime), OBS Studio or its virtual camera, and the camera maker’s own software. On Windows, one app at a time is the rule for most cameras, and a call app minimised to the tray still counts.

Picture is black, but no error?

If frames arrive (the measured frame rate is above 0) but the picture is black, the camera works and something covers or blanks it: a privacy shutter or slider over the lens, a sticker, or a camera-off key on the laptop keyboard. The page checks the brightness of the picture after it starts and says so when it is almost completely black or very dark.

What this page cannot do

  • It cannot fix drivers or hardware. It can tell you the browser found no camera, or could not start it, but installing a driver or repairing a camera happens outside the browser.
  • It cannot test the camera inside another app. Zoom, Teams, OBS or a desktop recorder open the camera themselves, with their own settings; a working test here shows the camera and the system are fine, not that another app is set up right.
  • It cannot name the app that holds the camera. Browsers do not tell web pages, on any system.
  • It cannot change the camera’s own settings: focus, exposure, white balance, zoom. Some browsers offer them to pages in some cases, but this page does not use them.
  • It cannot see the microphone. This is a camera test only; the recorder shows a sound level while it records.
  • Browser gaps, from MDN’s compatibility data (checked 2026-09-24): Firefox measures the frame rate only from version 132, when it gained requestVideoFrameCallback; before that the page says “this browser cannot measure it”. Firefox also reports the camera’s maximum only from version 132 (getCapabilities); before that the page says “your browser does not report this”. Chrome has had the measurement since version 83 and the maximum since 59, Safari since 15.4 and 11.
  • Camera names appear in the list only after you allow the camera. Before that, browsers hide them so a page cannot fingerprint your devices.

What works where

Needed forChromeFirefoxSafari (Mac, iOS)This browser
Delivered size and rate (getSettings)595011
Camera maximum (getCapabilities)5913211
Measured frame rate (requestVideoFrameCallback)8313215.4

Version numbers are the first release with the feature, from MDN browser-compat-data for getSettings, getCapabilities and requestVideoFrameCallback, checked 2026-09-24. They are not test results. Edge is built on Chrome’s engine and has matched it since Edge 79. The “This browser” column asks the browser you are using now.

What has actually been tested

One browser: headless Chrome 150 on Linux with Chrome’s built-in fake camera, driven by the automated test in this site’s repository on 2026-09-24. Asked for no size, the fake camera came up at 640 × 480; asked for HD, at 1280 × 720, with a measured 20 fps, which is the rate that fake camera runs at, and a reported maximum of 3840 × 2160. It checked that nothing asks for the camera before the button is pressed; that after it, the preview plays, the size shown equals the track’s own settings, the measured frame rate is above zero, and the camera list has an entry; that Save a still downloads a PNG; that Stop ends every camera track the page opened; and that a camera made to fail with NotReadableError shows that error’s help. Real cameras, Firefox, Safari and phones have not been tested by us; the help steps come from the vendors’ support pages below.

Sources

All read on 2026-09-24.