New Livestream: OWASP Top 10 2025 Explained for .NET Developers.
Decode, inspect and verify JSON Web Tokens. Paste a JWT below to see its header, payload and claims, and check its signature.
Paste your JWT here…
Avoid pasting a live production token. Anyone with it could use it.
# in the URL.
Browsers don't send that part to a server when the page loads, but
anyone who has the link (or runs a script on whatever page opens it)
can read every claim inside. Don't share a link containing a live,
validly signed production token.
Defaults to this token's iss claim. Fetches directly from your browser to this URL, so cross-origin errors usually mean the issuer doesn't send CORS headers for browser-based requests.
This token has 5 parts, so it's a JWE (encrypted), not a JWS. Its payload can't be decoded without the recipient's private key.
Signature appears here. | Claim | Value | Description |
|---|---|---|
|
UTC:
Local: |
A JSON Web Token (JWT, pronounced "jot") is a compact, URL-safe way to represent claims between two parties, defined in RFC 7519. JWTs are widely used in OAuth 2.0 and OpenID Connect as access tokens and ID tokens. An ID token proves authentication happened and carries identity claims for the client application; an access token authorizes calls to an API and may be opaque or a JWT, and is meant for the API, not the client. To understand the format in depth, see What is a JWT token and how does it work in modern web apps.
Paste the token into the decoder above. The tool splits it on its dots into header, payload and signature, base64url-decodes the header and payload, and parses them as JSON.
Decoding just reveals the claims inside a token. It proves nothing.
Verifying checks the signature against the issuer's public key (or a
shared secret for HMAC algorithms), proving the token hasn't been
tampered with and really was issued by the claimed issuer. Always
verify a token before trusting any claim inside it. Use the
"Verify signature" panel above to do this. A signature usually fails
to verify because of the wrong key (check that the header's
kid matches a key in your JWKS; the
JWKS explorer can
find it for you), the wrong algorithm, a
token modified after signing, or an accidentally trimmed/prefixed
value, not because the token itself is malformed.
A JWT is three base64url-encoded segments joined by dots (any one of them can be decoded on its own with the Base64URL decoder):
alg) and token
type.
iss,
sub, exp (expiration, a
Unix timestamp in
seconds; relying parties must reject a token whose exp
has passed even if the signature is valid).
In .NET, you can decode (and verify) JWTs with
Microsoft.IdentityModel.JsonWebTokens.JsonWebTokenHandler:
Csharp
using Microsoft.IdentityModel.JsonWebTokens;
var handler = new JsonWebTokenHandler();
var jwt = handler.ReadJsonWebToken(rawToken);
Console.WriteLine(jwt.Issuer);
Console.WriteLine(jwt.GetClaim("sub").Value);
Console.WriteLine(jwt.ValidTo); // exp claim as DateTime
To validate the token (signature, issuer, audience, lifetime), call
handler.ValidateTokenAsync with a
TokenValidationParameters configured with the issuer's
signing keys. See
token handling in IdentityServer for a complete example.
Fetch and inspect a JWKS from an issuer or URL to see every signing key and its properties.
Fetch and explore an OpenID Connect discovery document and its endpoints.
Convert Unix timestamps to and from readable dates, handy for exp, nbf and iat claims.
The OpenID Connect and OAuth 2.0 framework for ASP.NET Core, from the team that built this tool.