Web Cryptography
- RECJavaScript API for performing basic cryptographic operations in web applications
Chrome
- 4 - 36: Not supported (but has polyfill available)
- 37 - 119: Supported
- 120: Supported
- 121 - 123: Supported
Edge
- 12 - 18: Supported
- 79 - 119: Supported
- 120: Supported
Safari
- 3.1 - 7: Not supported (but has polyfill available)
- 7.1 - 10.1: Supported
- 11 - 17.1: Supported
- 17.2: Supported
- 17.3 - TP: Supported
Firefox
- 2 - 31: Not supported (but has polyfill available)
- 32 - 33: Disabled by default
- 34 - 119: Supported
- 120: Supported
- 121 - 123: Supported
Opera
- 9 - 23: Not supported (but has polyfill available)
- 24 - 103: Supported
- 104: Supported
IE
- 5.5: Not supported
- 6 - 10: Not supported (but has polyfill available)
- 11: Partial support
Chrome for Android
- 119: Supported
Safari on iOS
- 3.2 - 7.1: Not supported (but has polyfill available)
- 8 - 10.3: Supported
- 11 - 17.0: Supported
- 17.1: Supported
- 17.2: Supported
Samsung Internet
- 4 - 22: Supported
- 23: Supported
Opera Mini
- all: Not supported
Opera Mobile
- 10 - 12.1: Not supported (but has polyfill available)
- 73: Supported
UC Browser for Android
- 15.5: Supported
Android Browser
- 2.1 - 4.4.4: Not supported (but has polyfill available)
- 119: Supported
Firefox for Android
- 119: Supported
QQ Browser
- 13.1: Supported
Baidu Browser
- 13.18: Supported
KaiOS Browser
- 2.5: Supported
- 3: Supported
Many browsers support the [crypto.getRandomValues()](#feat=getrandomvalues) method, but not actual cryptography functionality under crypto.subtle.
- Resources:
- Cross-browser cryptography library
- MDN Web Docs - Web Crypto API
- Test suite for various algorithms/methods
- PKI.js - another crypto library for Public Key Infrastructure applications
- Microsoft Research JavaScript Cryptography Library
- Polyfill by Netflix with partial support
- Web Cryptography API shim for IE11 and Safari - set of bugfixes and workarounds of prefixed api implementations
- The History and Status of Web Crypto API