How do I decode a JWT to read the payload?
A JWT is three dot-separated Base64url sections: header, payload, and signature. To decode: split on '.', take the second section, add padding if needed, and Base64url-decode it to get the JSON payload. This tool does that automatically and displays the decoded header and payload in a readable format.
Can I verify a JWT signature with a browser tool?
Yes for HMAC algorithms (HS256, HS384, HS512)—the server and client share the same secret key and the browser can recompute the signature using the Web Crypto API. Asymmetric algorithms (RS256, ES256, PS256) require the server's public key, which this tool does not currently support.
What claims should every JWT have?
At minimum: exp (expiration, Unix timestamp) to prevent indefinite use, and sub (subject, usually the user ID) for identification. iss (issuer) and aud (audience) are recommended for multi-service architectures to prevent token reuse across services. iat (issued at) helps compute token age and detect replay.
Is it safe to paste a real JWT into a browser tool?
For development and debugging JWTs, yes—this tool runs entirely in your browser and the token is not sent anywhere. Avoid pasting production JWTs that carry sensitive user data or elevated privileges into any online tool as a security hygiene practice.
What is the difference between JWT decoding and JWT verification?
Decoding reads the header and payload without checking the signature—any Base64url decoder can do it. Verification checks that the signature was produced by a trusted party holding the correct secret or private key. Always verify the signature server-side before trusting any claims in a JWT.
How do I decode a JWT token online?
Paste a JWT or Bearer token and inspect header, payload, timing claims, and warnings instantly in your browser.
Can I encode and sign JWT tokens online for free?
Yes. Use Encode mode with HS256/HS384/HS512 signing through browser Web Crypto.
Does decode mode verify signatures?
Decode alone is inspection-only. Enter an HMAC secret in the Verify section to check HS256/384/512 signatures in your browser. RS256 and ES256 require the issuer's public key — verify those on your server.
Is this JWT encoder decoder private?
Yes. Processing is local in your browser and tokens are not uploaded.
Can this tool verify a JWT signature?
Yes for HMAC-signed tokens (HS256, HS384, HS512) — enter the shared secret and the tool recomputes the signature with Web Crypto and compares it to the token. RS256, ES256, and PS256 need the issuer's public key; decode those here to read claims, then verify on your backend or via JWKS.
What is the difference between HS256 and RS256 in JWTs?
HS256 uses HMAC-SHA256 with a shared secret — both the token creator and verifier need the same secret key. This is simpler but requires all verifiers to know the secret. RS256 uses RSA asymmetric signing — the private key signs, the public key verifies. This allows anyone to verify tokens without access to the private signing key, making it suitable for public identity providers (Google, Auth0, AWS Cognito). ES256 uses ECDSA (smaller keys than RSA, equivalent security).
How do I know if a JWT is expired?
The exp claim contains the expiration time as a Unix timestamp (seconds since Jan 1, 1970 UTC). Compare it to the current time: if current_time > exp, the token is expired. This tool automatically highlights expired tokens and shows how long ago they expired or how long until they expire. In code: const isExpired = Date.now() / 1000 > payload.exp.
What claims does a JWT typically contain?
Registered claims (RFC 7519): iss (issuer — who created it), sub (subject — who it represents, usually user ID), aud (audience — intended recipient service), exp (expiration), nbf (not before — earliest valid time), iat (issued at — creation time), jti (unique token ID for revocation). Public claims add application-specific data (email, roles, permissions). Private claims are agreed upon between parties. The only mandatory claim is a valid base64url JSON structure — the rest are application-dependent.
Is it safe to paste a JWT into an online tool?
For development tokens used in testing environments, yes — this tool runs entirely in your browser and the token is not sent to any server. For production JWTs carrying real user sessions or elevated privileges: avoid pasting them into any online tool as a general security hygiene practice, even browser-based ones. If you must inspect a production token, use your browser's DevTools console: atob(token.split('.')[1]) decodes the payload locally without using any external tool.