# Codec Check

> Ask this tab if it can play HEVC, AV1, VP9 or H.264. Hardware vs software decode, powerEfficient, canPlayType maybe/probably. Nothing uploaded.

- URL: https://bytescope.dev/en/codec-check/
- Locale: en · Also: [ja](https://bytescope.dev/ja/codec-check.md) · [zh-Hant](https://bytescope.dev/zh-Hant/codec-check.md)
- Runs: Nothing is uploaded. The scan reads this browser's decoder APIs in this tab and never sends a file.
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

This page asks the browser in front of you whether it can play HEVC, AV1, VP9, H.264, Dolby Vision, AAC, Opus, AC-3, E-AC-3, FLAC and MP3. It does not upload a file. It calls `navigator.mediaCapabilities.decodingInfo()`, `MediaSource.isTypeSupported()`, and `HTMLMediaElement.canPlayType()` for a fixed matrix of codec strings, then prints what came back. An HEVC browser support test and an AV1 codec check are the same scan — one table, this tab.

### Three APIs, one table

`decodingInfo` is async and can reject; each row is try/caught so one failure cannot take the table down. `canPlayType` is left as `""` / `maybe` / `probably` — it is not flattened to a boolean. `isTypeSupported` is the MSE answer, which is not the same as a `<video src>` file.

### Hardware vs software

When `decodingInfo` returns, three flags are shown: `supported`, `smooth`, and `powerEfficient`. Supported and power-efficient is labelled hardware decode. Supported but not power-efficient is labelled likely software (it uses more power). Missing or rejected `decodingInfo` stays unknown — this page will not guess from `canPlayType` alone.

### maybe is not yes

`canPlayType("maybe")` means the browser is unwilling to promise. `probably` is a stronger hint, still not a frame-accurate guarantee. The empty string means no. Those three states are the API; collapsing them would hide the answer people actually get from Safari and Firefox.

### What this browser has

Feature detection runs after the page mounts. Chromium, Firefox and Safari all expose `canPlayType`; MediaCapabilities and MSE coverage differs. About and FAQ render in every browser, including ones that cannot decode HEVC. Trust the live rows, not a version table — HEVC on Chrome is an OS and GPU question.

## Limits

Does not convert videos or install codecs; it reports which codecs this browser can decode and encode, and whether in hardware.

## Machine output

Copy JSON copies an envelope `{ tool, url, generatedAt, userAgentHint, result }`. `tool` is `"codec-check"`; `result` is the decode-only probe below. Encode is not measured.

- `apis` (object) — Whether each probe API exists: `mediaCapabilities`, `mediaSource`, `canPlayType` (each boolean or `null`). `null` = not probed yet; `false` = probed, missing; `true` = present.
- `codecs` (array of objects) — One row per scan-matrix target, same order as on screen. Each row has `id`, `familyId`, `kind` (`"video"` | `"audio"`), `container` (`"mp4"` | `"webm"`), `codec`, `mimeType`, `canPlayType` (`""` | `"maybe"` | `"probably"`), `mseSupported` (boolean or `null`; `null` = MSE API missing or threw), `decodingSupported` (boolean or `null`; `null` = `decodingInfo` was not asked, rejected, or timed out), `smooth` (boolean or `null`; `null` = same as decoding not asked), `hardwareAccelerated` (boolean or `null`; `null` = not asked, or the codec is unsupported, or `powerEfficient` was missing; `false` only when supported and the browser said not power-efficient).

## FAQ

### Can Chrome play HEVC?

Sometimes. Safari generally can (Apple silicon and many iPhones). Firefox generally cannot. Chrome and Edge depend on the OS HEVC pack and the GPU, not the Chrome version string. This page is the HEVC browser support test for *this* install.

### What does powerEfficient mean?

`powerEfficient: true` is the browser saying a dedicated decoder (hardware) is likely in use. `false` with `supported: true` is the software path — it will play, and it will use more CPU and battery. The page labels those hardware and software in plain language.

### Why do you show maybe and probably instead of yes/no?

`canPlayType` is specified as three states: `""`, `maybe`, `probably`. `maybe` is a real answer, especially for HEVC and Dolby Vision. Flattening it to a boolean would pretend the browser was more sure than it is.

### Is a video uploaded?

No. There is no sample file. The scan is MIME strings and decoder queries in this tab. Nothing is sent to a server.

### Why test both mp4 and webm?

The same codec token can be allowed in one container and refused in the other. VP9 and AV1 are at home in WebM; HEVC and Dolby Vision almost only in MP4. Trying both is how you see which combination this browser actually accepts.

## Related tools

- [Video Info Inspector](https://bytescope.dev/en/video-info.md) — Drop a file: codecs, bitrate, HDR, and why it will not play.
- [HLS / M3U8 Player](https://bytescope.dev/en/hls-player.md) — Play an m3u8, inspect the ladder, and see the CORS error honestly.
- [My Computer Specs](https://bytescope.dev/en/my-computer-specs.md) — See which GPU, how many CPU threads and how much RAM this browser reports, and whether hardware acceleration is on.
