Decode a JSON Web Token to inspect its header and claims, or encode one with the algorithm of your choice. Useful for debugging an authentication problem, checking what a token actually asserts, or confirming when it expires. Decoding happens in your browser, so tokens you paste here are never transmitted.
A JWT (JSON Web Token) is a compact and secure way to represent claims between two parties, typically for authentication. It consists of three components:
| Component | Description |
|---|---|
| Header | Contains metadata about the token, including the signing algorithm (alg) and token type (typ). |
| Payload | Contains the claims (statements about an entity), such as user data or roles. It can include registered claims (like exp, iss, sub), or custom claims. |
| Signature | Ensures the token's integrity and authenticity. It's created by signing the header and payload with a secret key (or private key for RSA). |
| Algorithm | Description |
|---|---|
| Encoding |
[Base64Url(header)] . [Base64Url(payload)] . [Base64Url(signature)] |
| Decoding |
|
| Name | # Hash | Description |
|---|---|---|
| HS256 | SHA-256 | The HS256 (HMAC with SHA-256) is a symmetric-key signing algorithm used in JWTs. It combines
the HMAC (Hash-based Message Authentication Code) mechanism with the SHA-256
cryptographic hash function to ensure data integrity and authenticity.
|
| HS384 | SHA-384 | The HS384 (HMAC with SHA-384) is a symmetric key signing algorithm used in JWTs,
similar to HS256, but with a stronger hash function (SHA-384) for enhanced
security.
|
| HS512 | SHA-512 | The HS512 (HMAC with SHA-512) is a symmetric key signing algorithm for JWTs that uses
the SHA-512 hash function, offering an even higher level of security than
HS256 and HS384.
|
| Name | # Hash | Description |
|---|---|---|
| RS256 | SHA-256 | The RS256 (RSA Signature with SHA-256) is an asymmetric signing algorithm used in JWTs.
It uses the RSA algorithm for signing and the SHA-256 hash function for creating
the signature.
|
| RS384 | SHA-384 | The RS384 (RSA Signature with SHA-384) is an asymmetric signing algorithm used in JWTs,
similar to RS256, but with a stronger hash function (SHA-384 instead of SHA-256)
for added security.
|
| RS512 | SHA-512 | The RS512 (RSA Signature with SHA-512) is an asymmetric signing algorithm for JWTs
that uses the RSA algorithm combined with the SHA-512 hash function for creating
the signature.
|
| ES256 | SHA-256 | The ES256 (ECDSA with SHA-256) is an asymmetric signing algorithm for JWTs that uses
Elliptic Curve Digital Signature Algorithm (ECDSA) with the SHA-256 hash function.
|
| ES384 | SHA-384 | The ES384 (ECDSA with SHA-384) is an asymmetric signing algorithm used in JWTs that employs
Elliptic Curve Digital Signature Algorithm (ECDSA) with the SHA-384 hash function
for signing.
|
| ES512 | SHA-512 | The ES512 (ECDSA with SHA-512) is an asymmetric signing algorithm for JWTs that uses the
Elliptic Curve Digital Signature Algorithm (ECDSA) with the SHA-512 hash function.
|
| PS256 | SHA-256 | The PS256 (RSASSA-PSS with SHA-256) is an asymmetric signing algorithm for JWTs that uses
RSASSA-PSS (RSA Signature Scheme with Appendix - Probabilistic Signature Scheme)
combined with the SHA-256 hash function. It provides enhanced security compared
to traditional RSA signatures (like RS256) by using a probabilistic approach to
signing.
|
| PS384 | SHA-384 | The PS384 (RSASSA-PSS with SHA-384) is an asymmetric signing algorithm used in JWTs that
employs the RSASSA-PSS (RSA Signature Scheme with Appendix - Probabilistic
Signature Scheme) combined with the SHA-384 hash function.
|
| PS512 | SHA-512 | The PS512 (RSASSA-PSS with SHA-512) is an asymmetric signing algorithm used in JWTs that
combines RSASSA-PSS (RSA Signature Scheme with Appendix - Probabilistic Signature
Scheme) with the SHA-512 hash function.
|
This is the most important thing to understand about JWTs, and the source of a great many security incidents. The header and payload are Base64url encoded, not encrypted. Anyone holding the token can read every claim in it without the key — this tool does exactly that.
The signature does not provide secrecy. It provides integrity: it proves the token was issued by someone holding the signing key and has not been altered since. Those are different guarantees, and confusing them is how personal data ends up sitting readable inside a token.
The practical rule: never put anything in a payload that you would not be willing to show the token's bearer. No passwords, no secrets, no sensitive personal information.
The payload can carry anything, but a set of registered claim names have agreed meanings and are what libraries validate automatically.
Time claims are Unix timestamps — seconds since 1 January 1970 — which is why they look like large integers rather than dates.
Yes. The payload is only Base64url encoded, so any holder of the token can read it without a key. Treat the contents as public and put nothing sensitive inside.
That the token was issued by a party holding the signing key and has not been modified. It says nothing about confidentiality — only about authenticity and integrity.
HMAC algorithms such as HS256 use one shared secret, which is simpler when the same service issues and verifies tokens. RSA and ECDSA algorithms sign with a private key and verify with a public one, so use those when verifiers should be able to check tokens without the power to mint them.
Most often expiry. Check the exp claim against the current time. After that, the usual causes are a mismatched audience, an algorithm the server does not accept, or clock skew between the issuing and verifying machines.
You largely cannot, which is the main tradeoff of the design. Because verification is self-contained, a valid token stays valid until it expires. Practical approaches are short lifetimes plus refresh tokens, or a server-side denylist — though the latter reintroduces the state that JWTs exist to avoid.
No. Encoding and decoding run entirely in your browser, so tokens you inspect here are never transmitted or logged.
The website uses cookies for essential functionality. With your consent, we also use them for analytics, personalization, and personalized ads. Ads are shown either way — without consent they are non-personalized.