Paste a JSON Web Token. The header, the payload and the dates are decoded in your browser. The signature is not verified, and nothing is sent to a server.
1
The header will show up here.
The payload will show up here.
A JSON Web Token (JWT) is a compact way to carry claims between two parties. Defined by RFC 7519, it is three Base64URL segments separated by dots: a header, a payload and a signature. The header names the algorithm. The payload is a JSON object. The signature is what allows a recipient who knows the key to check that the token was not altered.
This tool decodes the header and the payload, and turns the time claims exp , iat and nbf into calendar dates. It does not verify the signature, and it does not decrypt an encrypted token. Anyone can build a token with any payload: what you see here is the content, not a proof that it is authentic.
exp is already in the past, in your local time and in UTC. none . Bearer and line breaks are ignored. eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2V4YW1wbGUuY29tIiwic3ViIjoiYWRhIiwiYXVkIjoiZHRrIiwiaWF0IjoxNTE2MjM5MDIyLCJuYmYiOjE1MTYyMzkwMjIsImV4cCI6MTUxNjI0MjYyMn0.y0vdUxyCXkB-xer_-Tls6XYEmF2maiZ0u7U49aYTLyU
{
"iss": "https://example.com",
"sub": "ada",
"aud": "dtk",
"iat": 1516239022,
"nbf": 1516239022,
"exp": 1516242622
} In the second token, iat and nbf are 2018-01-18T01:30:22Z and exp is exactly one hour later, 2018-01-18T02:30:22Z. The tool therefore shows the token as expired. The header of both examples is {"alg":"HS256","typ":"JWT"} . The signatures are not checked.
Most surprises come from treating a decoded token as authenticated, from the unit of the dates, or from characters that are not part of the compact token.
"exp": 1516242622000
"exp": 1516242622
"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.sig"
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.sig
{"alg":"none","typ":"JWT"}{"alg":"HS256","typ":"JWT"}none to HS256 in the header does not make a token authentic. The signature still has to be produced with the right key, and this page never checks it. Do not grant access from a payload you have only decoded. exp is still valid only while the current time is strictly before it. nbf is valid from that second onward. Bearer , spaces and line breaks are removed before decoding. Surrounding quotes are not. Padding = may be missing, and both the Base64 and Base64URL alphabets are accepted. = padding. That is why a JWT can sit in a URL without escaping. {"sub":"1234567890","name":"John Doe","iat":1516239022} . That iat is 2018-01-18T01:30:22Z. none : no signature is computed, and the signature segment is empty. An implementation must not accept that token unless the application has explicitly allowed this particular token to be unprotected.