OIDC ID Token Decoder & Verifier
Decode an OIDC ID Token (or a URL-encoded id_token_hint), auto-fetch the provider's JWKS to verify the RSA signature (RS256/384/512), and run a documented aud → iss → exp → nbf → nonce → sig validation checklist — all in your browser.
What is OIDC ID Token?
An OIDC ID Token is a signed JWT issued by an OpenID Connect provider (like Google, Auth0, or Keycloak) that contains claims about an authenticated user. It is the core artifact of the OIDC protocol — your app receives it after a user successfully logs in.
Zero-Server Tool Data Guarantee
All decoding, JWKS fetching, and signature verification happens entirely in your browser using the Web Crypto API. Your tokens and keys are never sent to any server — the only network request is the JWKS fetch from the URL you choose to enter.
How to Use
Paste Your ID Token
Input the OIDC ID Token (JWT) you want to inspect. Decoding is debounced, so it runs a moment after you stop typing.
Decode a URL-Encoded id_token_hint
Enable the 'id_token_hint' checkbox for URL-encoded tokens from logout requests. Percent-encoded hints are also auto-detected when pasted directly.
Add the Signing Key
Paste a JWKS URL and the keys load automatically, or switch to Manual and paste a JWK. The key matching the token's kid is used for RS256/384/512 verification.
Set Expected Values
Fill in the expected issuer, audience, and nonce to activate those checks in the validation checklist.
Review the Checklist
The documented validation order (aud → iss → exp → nbf → nonce → sig) is shown as a live checklist, with at_hash/azp/scope detection for ID vs access token identification.
Common Use Cases
Post-Login Debugging
Paste an ID Token right after login to inspect claims, confirm the issuer/audience, validate the nonce, and verify the signature before trusting it in your app.
Token Validation Debugging
Diagnose why a token is being rejected — check audience mismatch, issuer mismatch, expiration, or a nonce failure in seconds.
Integration Testing
Quickly verify that your OIDC provider is issuing correctly structured tokens with the expected claims.
Logout / id_token_hint Debugging
Decode a URL-encoded id_token_hint from your logout redirect to confirm which session the provider should terminate.
ID vs Access Token Auditing
Spot at_hash, azp, and scope claims to determine whether a captured token is an ID Token or an access token during a security review.
Security Auditing
Manually inspect tokens from production logs (redacted) to confirm claim values during a security review.
Implementation Examples
// Install: npm install joseimport * as jose from 'jose';const issuer = 'https://accounts.google.com';const audience = 'your-client-id';const nonce = 'f47ac10b-58cc-4372-a567-0e02b2c3d479'; // what you sent in auth requestconst { keys } = await fetch(issuer + '/.well-known/jwks.json').then(r => r.json());const { payload } = await jose.jwtVerify(token,await jose.createLocalJWKSet({ keys }),{ issuer, audience });// Nonce validation — replay protectionif (payload.nonce !== nonce) throw new Error('Nonce mismatch');console.log(payload.sub); // user ID
ID Token vs Access Token vs Refresh Token
| Property | ID Token | Access Token | Refresh Token |
|---|---|---|---|
| Purpose | Prove user identity | Access protected APIs | Get new access tokens |
| Format | JWT (always) | JWT or opaque | JWT or opaque |
| Contains user info | Yes (claims) | Rarely | No |
| Lifespan | Minutes (5-15 min) | Minutes to hours | Days to months |
| Stored where? | Secure memory / httpOnly cookie | Memory / httpOnly cookie | httpOnly cookie only |
| Sent to APIs? | No | Yes (Authorization header) | No |
Production Best Practices & Security
How the OIDC Authorization Code Flow Works
- User opens your app and clicks Sign in.
- Your app redirects the browser to the provider's login page.
- After the user signs in, the provider redirects back with an authorization code.
- Your app exchanges the code (with its client secret) and receives an ID Token — the JWT this tool decodes.
Frequently Asked Questions
An OpenID Connect (OIDC) ID Token is a signed JWT that your identity provider issues after authenticating a user.
It contains claims defined by the OpenID Connect specification: sub (the user's unique identifier), iss (the issuer URL), aud (the intended client application), exp (expiration time), and optionally nonce, email, name, and picture.
Unlike an access token (which authorizes API access), the ID Token is specifically for your client application to authenticate the user. You must verify it by validating the signature using the issuer's public keys from the JWKS endpoint.