Skip to content
All fingerprint checksEnvironment & locale

mediaCapabilities and canPlayType agree about the same codec

Check id mediacapabilities-vs-canplaytype

What an ordinary browser yields

All six codecs agree across both APIs; no hard contradiction (severity: warn).

What a detector infers

Two different APIs answer from the same platform decoder registry. The probe calls navigator.mediaCapabilities.decodingInfo() for six codecs (audio ogg/vorbis, ogg/flac, mp4a.40.2, mp3; video theora, avc1.42E01E) with a fixed config — video 1920x1080 @60fps 120kbps, audio 2ch 300kbps — and separately calls canPlayType() on a real <video> or <audio> element for the same codec string. The check only records a contradiction in two hard directions: canPlayType returns "probably" while decodingInfo reports supported=false, or canPlayType returns "" (explicit no) while decodingInfo reports supported=true. The vague middle answer "maybe" is deliberately never treated as a failure, because the spec permits it to mean "cannot commit". Because both surfaces are backed by one registry, a hard disagreement cannot arise from a real decoder — it means one of the two surfaces was overridden and the other was not, which a detector can read as a partial patch rather than a genuine platform.

How to resolve it

Patch both surfaces consistently, or neither. If you override canPlayType to add or remove a codec, mediaCapabilities.decodingInfo must report the same supported value for that codec — and vice versa. Leaving both native is the reliable option. Note the row is skipped entirely (no result) when navigator.mediaCapabilities.decodingInfo is absent, since there is nothing to cross-check.

What is codec fingerprinting?

Nearby checks in Environment & locale

See all 23 checks in Environment & locale
Who builds this test

Clearcote is a browser built for fingerprint coherence

It is a Chromium fork, maintained by the same people who wrote this reference. It ships as a compiled browser rather than as a stealth script injected into someone else's — which is a description of how it is built, and is not an argument about how it behaves on this check.

This audit takes no position on how Clearcote scores on Environment & locale checks, on this one, or anywhere else. It has no baseline corpus of other people's fingerprints to rank you against and no vendor scoreboard — nearly every check is self-referential, asking one browser the same question through two independent APIs and reporting whether both answers can be true at once. It runs identically on any browser, including ours. Run it on yours and read the result yourself.

See the other checks in Environment & locale — the family mediacapabilities-vs-canplaytype belongs to.