On this page
Video Playback Test
Measure real video decode performance — presented, dropped and corrupted frames — using the browser's own playback-quality APIs.
- Available — Live on this site right now.
- Browser Tool — Runs in the browser you are reading this in.
- No Install — Nothing to download, no extension, no account.
- Client-Side — Runs entirely on your device. No test data is uploaded.
This page explains the tool. The tool itself is one click away and needs no sign-in.
Open Video Playback TestWhat is this tool?
The Video Playback Test measures how smoothly your device decodes and displays video. It plays a clip and reads the browser's own playback-quality data rather than guessing: getVideoPlaybackQuality() for frame counts and requestVideoFrameCallback() for the presentation cadence.
Frame totals are baseline-subtracted so the numbers reflect this test, not the whole page's history: presented, dropped and corrupted frames all count from the moment the run starts. Where a browser does not expose the quality API, those fields honestly read N/A instead of showing a fabricated zero.
You can play a bundled sample clip or a synthetic canvas stream (SMPTE bars, a pursuit block, a diagnostic stamp), across presets from a quick check up to 4K and high-frame-rate. Picture-in-Picture is offered only when the browser actually supports it.
How to use it
- Pick a presetChoose Quick, HD, high-resolution, 4K or high-FPS. Each sets a target resolution, frame rate, test mode and source, then loads the media.
- Choose a sourcePlay the bundled H.264 / AVC MP4 sample, or a synthetic live canvas stream generated in the browser. The synthetic stream has no codec — it is drawn frame by frame — which the tool states plainly.
- Let it playWatch the live calculated FPS, total, dropped and corrupted frame counts, drop rate and stall count. A duration of zero loops continuously; otherwise it stops when the time is up.
- Read the smoothness verdictThe tool rates playback Excellent, Good, Moderate or Frame Drops Detected based on the drop rate and the number of stalls it observed.
What the results mean
Calculated FPS
The presentation rate derived from requestVideoFrameCallback timestamps over a one-second rolling window. Samples while the tab is hidden are discarded, and only plausible rates (0-360 FPS) are accepted.
Presented, dropped and corrupted frames
Read from getVideoPlaybackQuality() and baseline-subtracted to this run. When that API is absent the total falls back to a presented-frames count and dropped/corrupted read N/A rather than a fake zero.
Drop rate and stalls
The percentage of frames the decoder could not present in time, plus the number of playback stalls. These two drive the smoothness verdict.
Smoothness verdict
Frame Drops Detected above a 3% drop rate or three or more stalls; Moderate above 1% or one stall; Good above 0.2%; otherwise Excellent.
What it can detect
- How smoothly your device decodes and presents video, from real dropped-frame counts
- Whether higher resolutions or frame rates (up to 4K / high-FPS) overwhelm your decoder
- Playback stalls and the drop rate behind them
- Which video codecs your browser reports it can decode (a capability probe, not what is playing)
Limits worth knowing
A browser can only report what the platform gives it. These are the honest boundaries of this page, so a result is never read as more than it is.
- It reads decode and presentation quality, not GPU load. No GPU temperature, power, clock, utilisation or VRAM is read — those are not available to a browser.
- Dropped and corrupted frame counts depend on getVideoPlaybackQuality(). Where the browser does not implement it, the tool shows N/A and says so, rather than inventing numbers.
- The browser does not expose the codec that is actively decoding, so the tool labels the source honestly — bundled H.264/MP4, live canvas stream with no codec, or a container with codec not exposed — and never guesses.
- The codec-capability check reports what the browser says it can decode at 1080p60, which is support information, not a measurement of the current playback.
- Frames sampled while the tab is hidden are dropped from the FPS calculation, so keep the tab visible for accurate cadence.
Tips
- Test the resolution and frame rate you actually watch: a device can be flawless at 1080p and drop frames at 4K, and only the matching preset will show it.
- If dropped and corrupted read N/A, your browser does not expose the playback-quality API — try Chrome or Edge to get real counts.
- A synthetic canvas stream is useful for isolating presentation cadence from decode, since it has no codec to decode at all.
Troubleshooting
Dropped and corrupted frames show N/A.
Your browser does not implement getVideoPlaybackQuality(). The tool refuses to fake those counts, so it shows N/A. A Chromium-based browser will report real dropped and corrupted frame numbers.
Why won't it tell me the codec that is playing?
Browsers do not expose the codec of the actively decoding stream. The tool labels the source honestly instead — the bundled clip is H.264/AVC in MP4, the synthetic stream has no codec — and never guesses the rest.
Playback would not start automatically.
The browser blocked autoplay (a NotAllowedError). Interact with the page — press play — and the clip will start; this is a browser policy, not a fault in the test.
Ready to run it?
Measure real video decode performance — presented, dropped and corrupted frames — using the browser's own playback-quality APIs. Nothing to install, and it opens in this browser.