Skip to main content

crypto.getRandomValues() / randomUUID()

Cryptographically strong random bytes and random version 4 UUIDs. Specification: w3c.github.io/webcrypto/.

Results​

Probed on 2026-10-19 with Node.js v22.23.3.

warpdom 0.1.6​

Supported

2 of 2 checks work.

Web IDL existence (coverage):

  • Crypto: interface present; 2 of 3 members present, missing: subtle.
Report a wrong result for warpdom

happy-dom 21.0.3​

Supported

2 of 2 checks work.

The window's value is Node.js's own global (identical object), not the engine's implementation.

Web IDL existence (coverage):

  • Crypto: interface not defined.
Report a wrong result for happy-dom

jsdom 30.1.3​

Supported

2 of 2 checks work.

Web IDL existence (coverage):

  • Crypto: interface present; 2 of 3 members present, missing: subtle.
Report a wrong result for jsdom

linkedom 0.18.13​

Supported

2 of 2 checks work.

The window's value is Node.js's own global (identical object), not the engine's implementation.

Web IDL existence (coverage):

  • Crypto: interface present (Node.js's own global); 3 of 3 members present.
Report a wrong result for linkedom

Checks​

Exists when: typeof window.crypto is defined.

  • get-random-values: getRandomValues(array) fills the array and returns the same array. (spec)
  • random-uuid: randomUUID() returns a lowercase version 4 UUID string. (spec)

Node.js globals​

Node.js defines crypto itself. Depending on the test runner and its environment, tests may see Node's version even where the engine's window has none; these results describe the engine's window only.

Working around it in tests​

Node.js has a Web Crypto global (globalThis.crypto) since 19; a setup file can assign it to the test global.