Online JWT Inspector for decoding, verifying, and signing tokens
Inspect JSON Web Token headers and payloads in the browser, verify signatures with HMAC secrets or public keys, and generate new signed tokens from editable JSON without leaving the page.
- All parsing, verification, and signing happens locally in the browser
- Decode JWT header, payload, and signature segments with URL-safe Base64
- Verify HS256, HS384, HS512, RS256, PS256, ES256, and EdDSA tokens when matching key material is available
- Edit header and payload JSON to generate a new signed token instantly
JWT Inspector
Decode, verify, and re-sign JSON Web Tokens while reviewing headers, payloads, claims, expiry, and common signature algorithms.
HMAC algorithms use a shared secret. RSA, PS, ES, and EdDSA use PEM or JWK key material.
What is a JSON Web Token?
JSON Web Token is a compact, self-contained format for moving claims between parties in a JSON object. It is defined by RFC 7519 and is commonly used when applications need to carry identity or authorization information across requests.
A standard JWT is signed so the receiver can check integrity and authenticity. The payload is still readable after decoding, which means JWTs are not a place for secrets unless you are using encryption instead of a signed token.
JWTs can be signed with a shared secret using HMAC, or with a public/private key pair using RSA, ECDSA, PS, or EdDSA. This page focuses on signed JWTs, not encrypted JWE tokens.
Header
The header tells you which token type and signing algorithm are being used. In practice, it usually contains `typ`, `alg`, and sometimes `kid`.
Payload
The payload carries claims such as issuer, subject, audience, expiry, and custom application data. It is Base64URL encoded, not encrypted.
Signature
The signature is calculated from the header and payload plus a secret, private key, or signing key. It is what lets you detect tampering and confirm who signed the token.
Standard claim reference
JWT payloads use registered claim names defined by RFC 7519. The table below lists common claims you will encounter when decoding tokens.
Claim
iss
Description
Issuer. Identifies the principal that issued the JWT. Applications use this to confirm which service or authority created the token.
Typical value
https://auth.example.com
Claim
sub
Description
Subject. Identifies the principal that is the subject of the JWT, usually the user or entity the claims apply to. It is unique within the issuer context.
Typical value
user_abc123 or 1234567890
Claim
aud
Description
Audience. Identifies the recipients that the JWT is intended for. The receiving party should verify that its own identifier matches the audience value.
Typical value
https://api.example.com or client-app-id
Claim
exp
Description
Expiration time. A numeric date value after which the JWT must not be accepted for processing. Applications reject tokens with an expired exp claim.
Typical value
1710003600 (Unix seconds)
Claim
nbf
Description
Not Before. Identifies the time before which the JWT must not be accepted for processing. Tokens are considered invalid before this timestamp.
Typical value
1709996400 (Unix seconds)
Claim
iat
Description
Issued At. Identifies the time at which the JWT was issued. It helps determine the age of the token and detect tokens issued too far in the past.
Typical value
1709996400 (Unix seconds)
Claim
jti
Description
JWT ID. A unique identifier for the JWT. It can be used to prevent the token from being replayed or to correlate tokens with server-side logs.
Typical value
unique-token-id-001
Claim
auth_time
Description
Authentication time. Records when the user completed authentication. It is relevant in OpenID Connect and SSO scenarios.
Typical value
1709992800 (Unix seconds)
When should you use JWT?
- Authorization is the most common use case. After login, the client sends the token on later requests so the server can authorize access without re-checking credentials on every call.
- Information exchange is another fit. Signed tokens let two parties share structured claims while still being able to verify that the content was not changed in transit.
- For HMAC-signed tokens, the same shared secret is used to sign and verify. For RSA, PS, ECDSA, or EdDSA tokens, the private key signs and the public key verifies.
- JWTs are compact and easy to pass in HTTP headers, forms, or query flows, but they should not be treated as encrypted storage for private information.
What this page can do
A focused JWT workflow for inspection, verification, and token generation, all handled locally in the browser.
Decode token segments
Split a JWT into header, payload, and signature, then decode the Base64URL segments into readable JSON.
Verify compact JWS signatures
Check HMAC, RSA, PS, ECDSA, and EdDSA signatures with the right key type to confirm that the token has not been tampered with.
Generate signed tokens
Edit the header and payload JSON, choose an algorithm, and generate a fresh signed token in one step.
Inspect claim timestamps
Surface `exp`, `iat`, and `nbf` values in a readable format to help with authentication troubleshooting.
Copy and reuse output
Copy the current token to your clipboard or load a sample token to test the workflow immediately.
Keep data local
All token inspection and signing is done in your browser without sending secrets or payloads to a server.
How to use this page
Use Inspect mode for existing tokens and Sign mode when you need to generate a new JWT from JSON.
- 1
Paste an existing JWT into Inspect mode. It will decode immediately, and you can add matching key material later if you want to verify the signature.
- 2
Review the decoded header, payload, signature, and claim summary on the right-hand side.
- 3
Switch to Sign mode when you want to generate a token from editable header and payload JSON.
- 4
Choose an algorithm and paste the matching secret, public key, private key, or JWK to regenerate the token instantly.
- 5
Copy the resulting token and use it in your API, auth flow, or test fixture.
When to use each mode
JWT inspection is a debugging workflow, not a security boundary. Use the right mode for the task.
- Use Inspect mode when you receive a token and need to understand its claims, expiry, or signature status.
- Use Sign mode when you need a fresh JWT for testing, demos, or local integration work.
- Use HS256, HS384, or HS512 when you have a shared secret. Use RSA, PS, ECDSA, or EdDSA when you have PEM or JWK key material. If you are only decoding a token, no key is required.
- Treat the decoded payload as visible data. JWTs are signed, not encrypted, unless you are working with JWE.
Common use cases
JWT inspection is useful anywhere authentication, authorization, or claims-based routing is involved.
Auth debugging
Inspect a login token to check the subject, roles, scopes, expiry time, and signature state during troubleshooting.
Backend integration tests
Generate predictable signed tokens for local test fixtures, API mocks, and manual QA scenarios.
Token auditing
Confirm whether a token was produced with the expected algorithm and whether its claims match the current environment.
Claims review
Read expiry-related claims quickly so you can spot stale tokens or clock-skew issues before they cause errors.
Practical guidelines
Follow these rules to avoid JWT mistakes during debugging or test token generation.
When a decoded header or payload is hard to read, validate the JSON in JSON Formatter before copying it back into Sign mode. If you need to inspect an individual Base64URL segment outside the token, Base64 Encode & Decode helps with encoding and decoding experiments. For non-JWT API signatures, webhook signing, or checking an HMAC digest separately, use HMAC Generator ; and when a local HS256 test token needs a disposable shared secret, generate one with Password Generator instead of reusing real credentials.
- Do not trust a JWT until its signature has been verified with the correct secret or public key.
- JWTs are signed, not encrypted. Never assume the payload is private just because it is encoded.
- Keep secrets and private keys local. Do not paste production credentials into shared environments or screenshots.
- Match the algorithm to the key type. A token signed with HS256 will not verify with HS512, and RSA keys cannot verify HMAC tokens.
- Watch `exp`, `iat`, and `nbf` values carefully when debugging time-sensitive authentication issues.
Limitations and important notes
Knowing the boundaries helps avoid false assumptions about JWT security and compatibility.
- This page handles compact signed JWTs and uses jose for HMAC, RSA, PS, ECDSA, and EdDSA workflows.
- Encrypted JWTs, also known as JWE, are outside the scope of this tool.
- Malformed JSON in the header or payload will prevent signing until the content is fixed.
- Very large payloads can make the editor harder to read, although processing still happens locally.
- This tool is designed for inspection, verification, and test token generation, not secret management.
Frequently asked questions
Answers to common questions about usage, data handling, result checks, and practical limits.
01 Is a JWT encrypted?
Is a JWT encrypted?
Usually no. A standard JWT is signed so the receiver can verify integrity, but its payload is still readable once decoded. If you need encryption, you are looking for JWE instead.
02 Why does signature verification fail?
Why does signature verification fail?
The most common reasons are a wrong secret or key, a different algorithm, a modified payload, or a token that was signed with a different key type than the one you provided.
03 Which algorithms does this page support?
Which algorithms does this page support?
This page supports HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, and EdDSA through jose.
04 Can I use this for production secrets?
Can I use this for production secrets?
No. Use this page for inspection, debugging, and local test token generation only. Keep production secrets and private keys in secure systems and out of browser tools.
05 Does the page send my token anywhere?
Does the page send my token anywhere?
No. Parsing, verification, and signing all happen locally in your browser. Nothing is uploaded to a server by this tool.
06 Why do `exp` and `iat` appear as timestamps?
Why do `exp` and `iat` appear as timestamps?
JWT claim times are typically stored as Unix epoch seconds. The page converts them into readable dates to make debugging faster.
More security, encryption, and identity tools
DevKitLab provides online tools for JWT inspection, password generation, hash generation, HMAC generation, and other common tasks involving token debugging, password creation, data hashing, signature checks, and security-related workflows.