Processor and graphics card specifications are live
Free · Runs in its own window

Webcam resolution test. Every mode, then a call.

A webcam's box names its best mode; what you get depends on the light, the USB link and the computer. This test asks the camera for each standard mode it claims, from 480p to 4K at 15, 30 and 60 fps, reads back what it delivered and counts the frames. Then it sends the camera through a video call between two connections on this page, with no server, and reads what the call's encoder did: its name where the browser shares it, the time per frame, the size it sent, and whether the processor held it back.

One check · About a minute

Asks for: The camera. It runs in its own window and nothing leaves this page.

In short

Webcam resolution test: the answer first

To check a webcam's real resolution and frame rate, ask for each mode and count the frames that arrive. This test does that for every standard mode the camera claims, then sends the camera through a video call inside the page and reads the encoder's statistics, so you see both what the camera gives and what a call on this computer would send.

Reading your result

Delivered, smaller, slower
Delivered is the size and rate you asked for. Smaller means the camera or browser gave a smaller picture; slower means the frames counted fell short, often in dim light.
Limited by cpu
The encoder cut the call's quality because the processor could not keep up. A call app on this machine will do the same.
Limited by bandwidth
Here that is the browser's estimate climbing at the start of a call, because the call never leaves the computer. It is not your connection.

What it measures

Measured here, not assumed.

What the camera claims
The width, height and frame rate ranges from getCapabilities(), the browser's statement of what this camera offers. A claim, so each mode is then tried.
Each mode, tried and counted
Each standard size and rate inside those ranges asked for with applyConstraints, the size read back with getSettings(), and the frames counted for two seconds with requestVideoFrameCallback. Delivered means the size matches and the counted rate is within 10 percent of the asked one (our line).
A call on this page
Two RTCPeerConnections on the page, one sending the camera to the other, for twelve seconds. The last five are read from the sender's statistics, because a call starts small and steps up.
Encoder and encode time
encoderImplementation and powerEfficientEncoder where the browser shares them (with the camera open it may), and totalEncodeTime over framesEncoded: milliseconds to encode each frame. You can pick the codec: VP8, VP9, H.264 or AV1 where the browser can send them.
What limited it
qualityLimitationReason and the share of the window spent limited by the processor or by bandwidth, the encoded size and rate against the camera's, and the camera frames the encoder skipped.

If it fails

The usual failures, and what fixes each.

The camera delivers less than the box says
Plug it into a USB 3 port on the computer itself, not a hub, and give it more light: many cameras halve their frame rate in dim rooms.
The call is limited by the processor
Close other programs, plug a laptop in, and set the call app to send 720p. A codec the browser encodes in hardware, often H.264, costs the processor less.
Only a software encoder
Hardware encoding needs hardware acceleration on in the browser and a current graphics driver. The hardware acceleration test shows which is missing.

Where a browser stops

What it cannot tell you.

  • The sensor's size, the lens and the true optical resolution. A mode the camera delivers may be upscaled inside it.
  • The USB link's speed, beyond what it implies: a camera that offers 1080p but delivers 720p at 30 often lacks the bandwidth or compression for more.
  • Your network. The call never leaves the computer, so a bandwidth limit here is the browser's estimate climbing at the start of a call, not your connection.
  • What a particular call app does. Zoom, Teams and Meet choose their own codec, size and encoder, and some use their own instead of the browser's.
  • The encoder's name in browsers that do not share it.

Privacy

Nothing leaves this page.

The camera is opened and shown on this page only. The call is made between two connections inside the page, with no server, so nothing from the camera leaves the computer. Nothing is recorded or stored.

The privacy policy

Questions

Webcam resolution test, answered

How do I check my webcam's resolution and FPS?
Open the test above, allow the camera, and try every mode. The table shows each size and rate asked for, what was delivered, and the frames counted, so you see the best mode the camera really gives on this computer.
Why is my 1080p webcam sending 720p in calls?
The call's encoder may be limited by the processor, or the call app may cap it. The call on this page shows whether the processor limited the encoder here, and at what size it sent.
Is anything recorded or uploaded?
No. The camera is shown and counted on this page, and the call runs between two connections inside the same page. Nothing leaves the computer.
What does qualityLimitationReason mean?
It is the browser's statement of why the encoder is sending less than it could: cpu means the processor could not keep up, bandwidth means the estimated bandwidth was too low, none means nothing limited it.
Why does my webcam only reach 15 fps?
Most often the light: many cameras lengthen the exposure in a dim room and halve the frame rate. Add light facing you and try the mode again. A slow USB port or hub can also limit the larger modes.

Read next

Then test the machine itself. A free stress test, in the same browser.