v150 · Web Cryptography

Capability matrix

The spec adds a static SubtleCrypto.supports() for feature detection on the interface object — not on the crypto.subtle instance — and Chromium ships it under the same WebCryptoPQC gate (subtle_crypto.idl, RuntimeEnabled=WebCryptoPQC). This page uses the static method when present and otherwise calls crypto.subtle.generateKey() for every algorithm name, reporting which path produced each cell. Notably, X-Wing is listed in the ChromeStatus summary for this feature but Chromium does not yet implement it — and the matrix says so rather than pretending.

Running detection…

New SubtleCrypto methods present in this build:

Each cell was produced by really calling the API — not a hard-coded list.
AlgorithmKindgenerateKey()Notes
// The static supports() lives on the SubtleCrypto interface object and
// ships under the same WebCryptoPQC gate. Fall back to a real instance call:
async function isSupported(name, usages) {
  if (typeof SubtleCrypto.supports === "function") {
    return SubtleCrypto.supports("generateKey", name);
  }
  try { await crypto.subtle.generateKey({ name }, true, usages); return true; }
  catch (e) { return false; }  // e.name === "NotSupportedError" for unknown names
}

await isSupported("ML-KEM-768",        ["encapsulateBits", "decapsulateBits"]); // true (flag on)
await isSupported("ML-DSA-65",         ["sign", "verify"]);                     // true
await isSupported("ChaCha20-Poly1305", ["encrypt", "decrypt"]);                // true
await isSupported("X-Wing",            ["encapsulateBits", "decapsulateBits"]); // false in Chrome 150

see also

implementation reference

Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗