jsonwebtoken
Create and decode JWTs in a strongly typed way.
11.0.0
174M downloads/mo
#556 most downloaded on crates.io
Keats/jsonwebtoken
What this package is like to depend on
Last release 1 months ago
24 Jul 2026
Release timing varies
gaps range from 3 weeks to 11 months
Most releases are documented
notes for 32 of 45 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
58 releases · first in 2015
6 releases in the last 12 months
see the full history below
Release timeline
58 releases · Nov 2015 to Jul 2026Releases
latest 58-
11.0.024 Jul 2026Release notes
Open source →- Add conversions between
AlgorithmandKeyAlgorithm - JWKs can now be created from
DecodingKeys, creation fromEncodingKeyandDecodingKeynow supports Ed25519 as well - JWKs with unknown key types are now deserializable
- BREAKING:
Algorithm,KeyAlgorithm,EllipticCurveandThumbprintHashare nownon_exhaustive - BREAKING:
Jwk.thumbprintnow returns aResult<_> - BREAKING:
Header.extrasis now a struct that allows for deserialization to anyT - BREAKING: Implicit features resulting from optional crates have been removed
- BREAKING:
Validation.insecure_disable_signature_validationhas been removed, usedangerous::insecure_decodeinstead - BREAKING:
EncodingKey.innerhas been renamed toas_bytes,try_get_hmac_secrethas been removed - BREAKING:
DecodingKey.as_bytesandtry_get_hmac_secrethave been removed, usetry_get_as_bytesinstead
Changes for
CryptoProviders- When constructing HMAC signers, the algorithm family must now be verified on construction
JwkUtilshas been renamed toKeyUtilscompute_digestnow returns aResult<_>extract_rsa_public_key_componentshas been renamed torsa_pub_components_from_private_keyrsa_pub_components_from_public_keyhas been addedextract_ec_public_key_coordinateshas been renamed toec_pub_components_from_private_keyed_pub_components_from_private_keyhas been added
- Add conversions between
-
10.4.011 May 2026Release notes
Open source →- Fix incorrect encoding for Ed25519 JWK thumbprints
- Make
Algorithm.familypublic and addValidation.new_for_family EncodingKeyandDecodingKeyare now partially zeroized on drop (the intermediatePemEncodedKeyisn't so far)
-
10.3.027 Jan 2026Release notes
Open source →- Export everything needed to define your own CryptoProvider
- Fix type confusion with exp/nbf when not required
-
10.2.006 Nov 2025 -
10.1.018 Oct 2025 -
10.0.029 Sep 2025Release notes
Open source →- BREAKING: now using traits for crypto backends, you have to choose between
aws_lc_rsandrust_crypto - Add
Clonebound todecode - Support decoding byte slices
- Support JWS
- BREAKING: now using traits for crypto backends, you have to choose between
-
9.3.106 Feb 2025 -
9.3.021 Mar 2024Release notes
Open source →- Add
Validation.reject_tokens_expiring_in_less_than, the opposite of leeway
- Add
-
9.2.001 Dec 2023Release notes
Open source →- Add an option to not validate
audin the Validation struct - Get the current timestamp in wasm without using std
- Update ring to 0.17
- Add an option to not validate
-
9.1.021 Oct 2023 -
9.0.016 Oct 2023Release notes
Open source →- Update ring
- Rejects JWTs containing audiences when the Validation doesn't contain any
-
8.3.015 Mar 2023 -
8.2.003 Dec 2022Release notes
Open source →- Add DecodingKey::from_jwk
- Can now use PEM certificates if you have the
use_pemfeature enabled
-
8.1.117 Jun 2022 -
8.1.012 Apr 2022Release notes
Open source →- Make optional fields in the spec really optional
- Implements
HashforHeader
-
8.0.103 Feb 2022 -
8.0.002 Feb 2022Release notes
Open source →- Add EdDSA algorithm
sign/verifynow takes a&[u8]instead of&strto be more flexibleDecodingKeynow own its data- Remove deprecated
dangerous_unsafe_decode Validation::issis now aHashSetinstead of a single valuedecodewill now error ifValidation::algorithmsis empty- Add JWKs types for easy interop with various Oauth provider, see
examples/auth0.rsfor an example - Removed
decode_*functions in favour of using theValidationstruct - Allow float values for
expandnbf, yes it's in the spec... floats will be rounded and converted to u64 - Error now implements Clone/Eq
- Change default leeway from 0s to 60s
- Add
Validation::require_spec_claimsto validate presence of the spec claims - Add default feature for pem decoding named
use_pemthat can be disabled to avoid 2 dependencies
-
8.0.0-beta.828 Jan 2022 pre-releaseNothing published for this version
-
8.0.0-beta.716 Dec 2021 pre-releaseNothing published for this version
-
8.0.0-beta.619 Nov 2021 pre-releaseNothing published for this version
-
8.0.0-beta.501 Nov 2021 pre-releaseNothing published for this version
-
8.0.0-beta.410 Oct 2021 pre-releaseNothing published for this version
-
8.0.0-beta.328 Sep 2021 pre-releaseNothing published for this version
-
8.0.0-beta.222 Mar 2021 pre-releaseNothing published for this version
-
8.0.0-beta.125 Feb 2021 pre-releaseNothing published for this version
-
8.0.0-beta.020 Feb 2021 pre-releaseNothing published for this version
-
7.2.030 Jun 2020Release notes
Open source →- Add
dangerous_insecure_decodeto replacedangerous_unsafe_decode, which is now deprecated - Add
dangerous_insecure_decode_with_validation
- Add
-
7.1.216 Jun 2020 -
7.1.109 Jun 2020 -
7.1.001 Mar 2020Release notes
Open source →- Add
into_statictoDecodingKeyfor easier re-use
7.0.0 (2020-01-28)
- Add support for PS256, PS384 and PS512
- Add support for verifying with modulus/exponent components for RSA
- Update to 2018 edition
- Changed aud field type in Validation to
Option<HashSet<String>>. Audience validation now tests for "any-of-these" audience membership. - Add support for keys in PEM format
- Add EncodingKey/DecodingKey API to improve performance and UX
- Add
-
7.0.131 Jan 2020Nothing published for this version
-
7.0.029 Jan 2020Nothing published for this version
-
7.0.0-beta.121 Jan 2020 pre-releaseNothing published for this version
-
7.0.0-alpha.228 Nov 2019 pre-releaseNothing published for this version
-
7.0.0-alpha.115 Nov 2019 pre-releaseNothing published for this version
-
6.0.110 May 2019 -
6.0.021 Apr 2019Release notes
Open source →- Update Ring to 0.14
- Remove
iatcheck to match the JWT spec - Add ES256 and ES384 signing decoding
-
5.0.110 Sep 2018 -
5.0.013 Aug 2018Release notes
Open source →- Update ring
- Change error handling to be based on simple struct/enum rather than error-chain
- Fix validations not being called properly in some cases
- Default validation is not checking
iatandnbfanymore
-
4.0.119 Mar 2018 -
4.0.022 Nov 2017 -
3.0.008 Sep 2017Release notes
Open source →Breaking changes
- Remove
validate_signaturefromValidation, usedecode_headerinstead if you don't know the alg used - Make
typoptional in header, some providers apparently don't use it
Others
- Update ring & error-chain
- Fix documentation about
leewaybeing in seconds and not milliseconds - Add
decode_headerto only decode the header: replaces the use case ofvalidate_signature
- Remove
-
2.0.318 Jul 2017 -
2.0.224 Jun 2017 -
2.0.109 May 2017 -
2.0.023 Apr 2017Release notes
Open source →- Use Serde instead of rustc_serialize
- Add RSA support
- API overhaul, see README for new usage
- Add validation
- Update all dependencies
-
2.0.0-beta-120 Apr 2017 pre-releaseNothing published for this version
-
1.1.702 Apr 2017Nothing published for this version
-
1.1.613 Feb 2017Nothing published for this version
-
1.1.524 Aug 2016Nothing published for this version
-
1.1.423 Aug 2016Nothing published for this version
-
1.1.325 Apr 2016Nothing published for this version
-
1.1.211 Apr 2016Nothing published for this version
-
1.1.129 Mar 2016Nothing published for this version
-
1.1.029 Feb 2016Nothing published for this version
-
1.0.022 Dec 2015Nothing published for this version
-
0.2.008 Nov 2015Nothing published for this version
-
0.1.002 Nov 2015Nothing published for this version