Skip to main content
DeviceTry

Browser Compatibility

See which web APIs this browser actually exposes, including APIs it ships switched off.

Passive read-only checks

Browser Capability Matrix

Passive read-only probes — no permission is requested and no request leaves the page

Detecting…
Web APICategoryStateWhat was read

Swipe the table sideways to see every column.

“Available” means the API is present and usable — the function exists, or the context was created, or the value is affirmative. “Exposed, off” means the browser ships it but reports it switched off, which is a different situation from missing. None of these rows requests a permission or captures anything, and none of them proves a piece of hardware works.

How to Test

  • •Scan the matrix, or search for an API by name — the search matches the API name, its category, and the property the row reads.
  • •Use the category buttons to narrow the matrix; the selected category is marked as pressed.
  • •Read the What was read column when a row surprises you: it states the exact value the probe looked at.

Browser Limitations

  • •Available means the API is present and usable. "Exposed, off" means the browser ships it but reports it switched off — a different situation from missing, and not fixable by updating.
  • •No row requests a permission or captures anything, so presence never proves a piece of hardware works.

Troubleshooting Tips

  • •Update your browser if a required API is missing. If a row reports "Exposed, off", check the browser or operating-system setting that disables it rather than the browser version.

About the Browser Compatibility

The Browser Compatibility probes this browser for the APIs the site's testers depend on and reports one of four states per row: Available, Exposed but off, Missing, or a Probe error. The distinction matters. An API that exists but reports ‘off’ is a different situation from one that is not implemented, and an existence check cannot tell them apart — so every row here reads a value or calls a function rather than testing for a property name.

For example, the media-capture row checks that navigator.mediaDevices.getUserMedia is actually callable, not merely that a mediaDevices object exists; the picture-in-picture row reads document.pictureInPictureEnabled as a value, so a browser that exposes the property with it set to false is reported as exposed-but-off rather than as supported.

Tips for reading the matrix

  • Search by what a tester needs rather than scanning every row — the search matches API names, categories, and the property each row reads.
  • Use the category buttons to narrow the list; the selected category is marked as pressed so you always know which filter is active.
  • Run it in the same browser profile that fails. Extensions, flags and enterprise policy all change the surface, and a private window may disable whole categories.
  • Compare two machines row by row when one works and the other does not: the differing row is your first clue.

Common problems and fixes

A tester's required API shows as Missing

Update the browser first. If it is still missing afterwards, check content blockers and enterprise policies — they can hide APIs — then try a different engine as a fallback.

A row shows Exposed, off

The browser ships the API but reports it disabled. Updating will not help; look for the operating-system, browser-setting, or policy switch that turns it off — for example per-site permissions or a reduced-functionality mode.

Everything looks Available but a tool still fails

Presence is not permission, and it is not hardware. getUserMedia can be callable and still be denied at the permission layer, and a working API can still be blocked by a driver or another application. Check Permission Diagnostics, then the failing tool itself.

Results differ between two computers

Different browsers, versions, and privacy settings expose different API surfaces. That difference is exactly what this matrix documents — compare row by row to find the gap.

FAQ

Does “Available” mean the feature fully works?

No. Available means the API is present and usable — a function exists, a context was created, or the value is affirmative. A working implementation still depends on hardware, drivers, permissions, and the site itself.

What does “Exposed, off” mean?

The browser implements the API but reports it switched off, so using it will fail even though the name exists. It is reported separately from Missing because the fix is a setting, not an update.

Does the matrix request permissions or capture anything?

No. Every check is passive: function-existence checks, value reads, and throwaway canvas contexts that are released immediately. No permission prompt appears and no request leaves the page.

Is anything sent to a server to decide support?

No. Every check runs locally against your browser's own objects. No network request is involved in producing the matrix.

Why do older browsers show so many gaps?

The APIs this site uses ship at different times in different engines, so a matrix is naturally uneven. Updating is often the simplest fix — but a row that reads Exposed, off will not change with an update.