OmniTools - Premium Creator & Developer Utility Hub

Free JWT Decoder

Decode JSON Web Tokens securely offline without sending secrets to any server.



Free JWT Decoder - Complete Developer Guide to JSON Web Tokens

Identity & Auth Stack

Enterprise OAuth 2.0 & Asymmetric Token Verification

In backend production services, verify RS256/ES256 signatures asynchronously by fetching JWKS (JSON Web Key Set) public keys from your OIDC discovery endpoint with automated key rotation.

Encode Base64URL

1. What is a JWT and Why Do Developers Rely on It?

A JSON Web Token (JWT) is an open, compact, URL-safe data transfer standard formalized under RFC 7519. Extensively utilized across OAuth 2.0 frameworks and OpenID Connect (OIDC) identity layers, JWTs carry cryptographically verifiable claims between two distributed systems (such as a single-page web application, mobile client, and backend microservice cluster). Instead of storing session state in heavy server-side caches like Memcached or Redis, the authorization server signs a self-contained token containing user identity and permission scopes. The client sends this token with subsequent HTTP requests inside the Authorization: Bearer <token> header, enabling completely stateless API validation.

2. JWS Compact Serialization Syntax Breakdown & Cryptographic Anatomy

Every standard JSON Web Signature (JWS) compact token consists of three distinct segments delimited by period (.) characters:

JWS Compact Serialization Formula:
JWT = Base64URL(Header) + "." + Base64URL(Payload) + "." + Base64URL(Signature)

• Header: Metadata JSON declaring the token type ("typ": "JWT") and cryptographic signing algorithm (e.g., "alg": "HS256" or "alg": "RS256").
• Payload: The body containing registered, public, and private claims (user ID, tenant, role permissions, and timestamps).
• Signature Formula: Signature = HMAC-SHA256(Base64URL(Header) + "." + Base64URL(Payload), SecretKey)

OmniTools splits these three components instantly and renders the decoded header and payload as clean, highlighted JSON without transmitting your tokens to any external server.

3. RFC 7519 Standard Registered Claims Reference Table

The IETF RFC 7519 specification defines seven core registered claim keys that provide standardized metadata for token consumers. The following technical reference table outlines these claims, their data formats, and backend validation requirements:

Claim Key Formal Name Data Type Description / Purpose Backend Validation Rule
iss Issuer String (URI) Identifies the principal that issued the JWT (e.g. Auth0, Cognito) Must strictly match trusted authorization server URL
sub Subject String Identifies the principal that is the subject of the JWT (User ID) Must be locally unique in the context of the issuer
aud Audience String / Array Identifies the recipients that the JWT is intended for (API Resource) API must reject token if its client ID is not in aud
exp Expiration Time NumericDate Unix timestamp (seconds) identifying when token ceases to be valid Current time must be strictly before exp (with leeway)
nbf Not Before NumericDate Unix timestamp identifying the time before which token cannot be accepted Current time must be equal to or greater than nbf
iat Issued At NumericDate Unix timestamp identifying when the JWT was generated by auth server Used to reject tokens issued before user password changes
jti JWT ID String (UUID) Unique identifier for the token to prevent token replay attacks Backend caches jti to block duplicate one-time use
kid Key ID (Header) String Identifies which public key in the JWKS set was used for signing Used to select corresponding verification key from JWKS

4. Real-World Developer Production Scenarios

Decoding JWT payloads is an indispensable diagnostic step during web and mobile API development:

Scenario A: Debugging Silent HTTP 403 Forbidden Errors in Role-Based Access Control (RBAC)

A frontend engineer builds a dashboard where an administrative user consistently receives HTTP 403 Forbidden responses when invoking a protected billing endpoint. The developer copies the bearer token from browser network DevTools and pastes it into OmniTools JWT Decoder. Within milliseconds, the engineer observes that while the user has the user:read scope, the identity provider omitted the required billing:admin claim due to a misconfigured permission rule in Auth0. The issue is identified and resolved without touching backend code.

Scenario B: Inspecting Multi-Tenant Microservice Authorization Claims & Clock Skew

In SaaS architectures where a single backend serves thousands of enterprise tenants, every incoming request must be segmented by tenant_id. If server clocks drift, an API gateway might prematurely reject requests with "Token not yet valid" errors. By pasting the token into OmniTools, the DevOps team verifies the exact Unix timestamps of iat, nbf, and exp relative to standard UTC clock time, diagnosing network clock skew anomalies.

Frequently Asked Questions

Q: Is it safe to paste production JWTs into this decoder?

Yes. OmniTools runs 100% client-side in your browser runtime. The token you paste is parsed locally using JavaScript atob() and UTF-8 decoders. Zero data is transmitted to any server, logged in remote files, or saved in databases.

Q: Can this tool verify a JWT cryptographic signature?

No, and intentionally so. Cryptographic signature verification requires entering your private signing key or shared HMAC secret, which should never be entered into any web page. This tool is dedicated to safe inspection and debugging of headers and payload claims.

Q: Why are JWT payloads encoded with Base64URL rather than standard Base64?

Standard Base64 contains +, /, and = padding characters that carry reserved syntactic meanings in HTTP headers, URLs, and query strings. Base64URL substitutes - for + and _ for / and omits padding, ensuring tokens pass cleanly through web proxies without percent-encoding.

Q: What is the critical difference between encoding and encryption in JWTs?

Encoding (Base64URL) is an open, reversible transformation that provides zero secrecy—anyone holding the token can read the payload claims. Encryption (such as JWE - JSON Web Encryption) encrypts the payload with a secret key so only authorized recipients can decrypt it. Never store raw passwords or SSNs in a standard JWS token.

Q: How do I know if a decoded JWT has expired?

Inspect the exp claim in the decoded payload. It represents an integer Unix epoch timestamp in seconds. Compare it with the current Unix timestamp (Math.floor(Date.now() / 1000)). If the current time exceeds exp, the token is expired and will be rejected with an HTTP 401 Unauthorized.

Q: What does the "alg: none" vulnerability mean in JWT implementations?

The JWS specification supports an alg: none option for unsecured tokens. In poorly coded backends that blindly trust the header algorithm, an attacker can modify the payload to grant admin permissions and set alg: none, bypassing signature verification entirely. Compliant backends must reject tokens with alg: none.

Q: What is the difference between HS256 and RS256 signing algorithms?

HS256 (HMAC with SHA-256) is a symmetric algorithm requiring both the auth server and API service to share the same secret key. RS256 (RSA Signature with SHA-256) is asymmetric: the auth server signs tokens using a private key, and API services verify them using a public key, eliminating the risk of secret key exposure.

Q: Can I use this JWT decoder completely offline without internet?

Yes. Once the page is loaded into your browser, all parsing and JSON formatting logic resides in client memory. You can disconnect your workstation from the network, and the decoder will continue functioning with full speed.

Action successful!

Accessibility Tools