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
Supported2 of 2 checks work.
Web IDL existence (coverage):
- Crypto: interface present; 2 of 3 members present, missing:
subtle.
happy-dom 21.0.3
Supported2 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.
jsdom 30.1.3
Supported2 of 2 checks work.
Web IDL existence (coverage):
- Crypto: interface present; 2 of 3 members present, missing:
subtle.
linkedom 0.18.13
Supported2 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.
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.