All Cheat SheetsSecurity
JWT Claims Cheat Sheet
Registered, public, and private claims for JSON Web Tokens
Registered claims (RFC 7519)
Standard claim names every verifier should understand
iss (Issuer)Who created the token
{ "iss": "https://auth.example.com" }sub (Subject)Principal the token is about
{ "sub": "user_987654" }aud (Audience)Intended recipient(s); string or array
{ "aud": "api.example.com" }exp (Expiration)Unix seconds after which reject
{ "exp": 1735689600 }nbf (Not Before)Reject until this time
{ "nbf": 1735603200 }iat (Issued At)When the token was created
{ "iat": 1735600000 }jti (JWT ID)Unique id for replay detection
{ "jti": "b7f3c2a1-…" }Header essentials
algNever trust alg from untrusted tokens blindly
{ "alg": "HS256", "typ": "JWT" }kidKey id for JWKS rotation
{ "alg": "RS256", "kid": "2024-01" }Common app claims
Roles / scopes
{ "role": "admin", "scope": "read:orders write:orders" }Email
{ "email": "ada@example.com", "email_verified": true }Tenant
{ "tid": "org_42", "org": "acme" }Safety checklist
Short TTLUse refresh tokens for longer sessions
exp ≈ now + 5–15 minutes for access tokensNo secrets in payloadAnyone can decode claims
Payload is Base64 — not encryptionVerify signature offlineUse your IdP JWKS / shared secret server-side
Decode ≠ verify