Web Cryptography
- RECJavaScript API for performing basic cryptographic operations in web applications
Chrome
- 4 - 36: Not supported (but has polyfill available)
- 37 - 112: Supported
- 113: Supported
- 114 - 116: Supported
Edge
- 12 - 18: Supported
- 79 - 112: Supported
- 113: Supported
Safari
- 3.1 - 7: Not supported (but has polyfill available)
- 7.1 - 10.1: Supported
- 11 - 16.4: Supported
- 16.5: Supported
- 16.6 - TP: Supported
Firefox
- 2 - 31: Not supported (but has polyfill available)
- 32 - 33: Disabled by default
- 34 - 112: Supported
- 113: Supported
- 114 - 115: Supported
Opera
- 9 - 23: Not supported (but has polyfill available)
- 24 - 98: Supported
- 99: Supported
IE
- 5.5: Not supported
- 6 - 10: Not supported (but has polyfill available)
- 11: Partial support
Chrome for Android
- 113: Supported
Safari on iOS
- 3.2 - 7.1: Not supported (but has polyfill available)
- 8 - 10.3: Supported
- 11 - 16.4: Supported
- 16.5: Supported
Samsung Internet
- 4 - 20: Supported
- 21: Supported
Opera Mini
- all: Not supported
Opera Mobile
- 10 - 12.1: Not supported (but has polyfill available)
- 73: Supported
UC Browser for Android
- 13.4: Supported
Android Browser
- 2.1 - 4.4.4: Not supported (but has polyfill available)
- 113: Supported
Firefox for Android
- 113: 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