JWT Token Decoder & Inspector

Decode, inspect, and parse JSON Web Tokens (JWT) to view header parameters, payload claims, expiration timestamps, and signature strings.

How to Use the JWT Token Decoder

1

Input JWT Token

Paste any encoded JSON Web Token (`Header.Payload.Signature`) string into the text box.

2

Decode Segments

Click Decode JWT Token to unbase64url header and payload JSON objects instantly.

3

Inspect Claims

Inspect signature algorithm, token expiration (`exp`), issued timestamp (`iat`), and user claims.

Tool Options

Client-Side Privacy

Performs decoding locally in browser memory without sending authentication bearer tokens over external servers.

Claims Inspection

Parses standard OAuth 2.0 / OIDC claims (`iss`, `sub`, `aud`, `exp`, `nbf`, `iat`) into readable JSON objects.

Deterministic REST API

Provides a free REST API endpoint (`POST /api/jwt/jwt-decoder`) for automated OAuth token debugging.

Your Data Privacy

Web Tool
Privacy-First Architecture
Most of our web tools process your data entirely in-browser. Where server processing is technically required, payloads are evaluated statelessly in-memory and are never stored, saved, or logged.
REST API
Stateless In-Memory Processing
When you use our API endpoints, your requests are processed strictly in-memory without persistent database storage, disk logging, or data retention.
Want to learn more about how we safeguard your information and infrastructure?
Read our full Privacy Policy for detailed security standards, data retention principles, and compliance guarantees.

What does the JWT Token Decoder & Inspector do?

The JWT Token Decoder & Inspector parses Base64URL-encoded JSON Web Tokens (JWT) into structured JSON objects. It extracts and formats JOSE header parameters (alg, typ), payload claims (sub, iss, aud), expiration dates (exp), issued timestamps (iat), and signature strings without transmitting credentials across external networks.

Core Concepts

Understanding JWT token structure and inspection mechanics:

  • Three-Part Structure: Separates tokens into Header (cryptographic metadata), Payload (claims and authorization scopes), and Signature (verification hash) delimited by dots (.).
  • Base64URL Unescaping: Decodes URL-safe Base64 strings by restoring standard padding (=) and mapping - to + and _ to /.
  • Claims & Expiration Inspection: Converts Unix epoch integers (exp, iat) into ISO 8601 timestamps and checks whether the token has expired.

How to use the tool?

  1. Enter JWT String: Paste your raw Header.Payload.Signature token into the input box or click Load Sample.
  2. Execute Decode: Click Decode JWT Token to unbase64url header and payload JSON objects.
  3. Inspect Claims: Review algorithm details, expiration status, and formatted Header and Payload JSON structures.

Related Developer Utilities

If you work with JSON Web Tokens, auth headers, and Base64 encodings, explore these complementary tools:

REST API Integration

Blueutils provides a free REST API endpoint (POST https://blueutils.com/api/jwt/jwt-decoder) to programmatically decode JSON Web Tokens (JWT), unbase64url header and payload JSON objects, and inspect claim parameters.

API Request Parameters

Name Type Description Example
rawToken String Raw JSON Web Token string payload to decode. "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

API Request Payload Examples

cURL

curl -X POST https://blueutils.com/api/jwt/jwt-decoder \
  -H "Content-Type: application/json" \
  -d '{
    "rawToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
  }'

Python

import requests

url = "https://blueutils.com/api/jwt/jwt-decoder"
payload = {"rawToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.json())

Java

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        String jsonPayload = """
            {
                "rawToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
            }
            """;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://blueutils.com/api/jwt/jwt-decoder"))
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(jsonPayload))
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}

API Response Parameters

Name Type Description Example
isValid Boolean Indicates whether token decoding succeeded. true
header Object Decoded JOSE header parameters. { "alg": "HS256", "typ": "JWT" }
payload Object Decoded payload claims dictionary. { "sub": "1234567890", "name": "John" }
signature String Extracted signature string. "SflKxwRJSMeKKF2..."
inspection Object Parsed metadata attributes (algorithm, isExpired, expiresAt, issuedAt). {...}

API Response Payload Examples

Success Response (HTTP 200 OK)

{
  "isValid": true,
  "header": {
    "alg": "HS256",
    "typ": "JWT"
  },
  "payload": {
    "sub": "1234567890",
    "name": "John Doe",
    "iat": 1516239022
  },
  "signature": "SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
  "inspection": {
    "algorithm": "HS256",
    "tokenType": "JWT",
    "isExpired": false,
    "expiresAt": null,
    "issuedAt": "2018-01-18T01:30:22.000Z",
    "issuer": null,
    "subject": "1234567890",
    "audience": null
  }
}

Validation Failure Response (HTTP 400 Bad Request)

{
  "isValid": false,
  "error": "Invalid JWT format: A valid JSON Web Token must contain exactly 3 dot-separated segments."
}

Rate Limit Exceeded Response (HTTP 429 Too Many Requests)

{
  "error": "API rate limit exceeded. Please wait or contact support@blueutils.com."
}

Why use an API to decode JWTs?

Integrating the JWT Decoder API into authentication middleware, API gateways, or AI agent tool calling provides key benefits:

  • Rapid Script Validation: Unpacks bearer tokens and checks scopes or roles before routing API requests.
  • Optimized Token Efficiency for AI Agents: LLMs frequently introduce parsing syntax errors when manually decoding Base64URL strings. Calling the API extracts claims deterministically without token consumption.
  • Deterministic Accuracy Without Hallucinations: Ensures 100% strict UTF-8 decoding and standard ISO 8601 timestamp conversion.

Native Usage

How to decode JWT tokens locally in terminal environments or scripts:

Windows (CMD / PowerShell)

# Decode JWT payload in PowerShell
$token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
$payload = $token.Split('.')[1]
$base64 = $payload.PadRight($payload.Length + (4 - $payload.Length % 4) % 4, '=').Replace('-','+').Replace('_','/')
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($base64))

Linux / Unix (Bash)

# Decode JWT payload in Linux
echo "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" | cut -d'.' -f2 | base64 --decode

Python

Using Python:

import base64
import json

token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
payload_b64 = token.split('.')[1]
payload_b64 += '=' * (-len(payload_b64) % 4)
payload = json.loads(base64.urlsafe_b64decode(payload_b64))
print(json.dumps(payload, indent=2))

Java

Using Java:

import java.util.Base64;

public class JwtDecoderExample {
    public static void main(String[] args) {
        String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
        String payloadJson = new String(Base64.getUrlDecoder().decode(token.split("\\.")[1]));
        System.out.println("Payload: " + payloadJson);
    }
}

Frequently Asked Questions (FAQ)

How do I decode and inspect a JSON Web Token (JWT) online?

Paste your encoded JWT string (Header.Payload.Signature) into the input box and click Decode JWT Token. The tool decodes Base64URL segments and formats header and payload JSON objects.

Does the JWT decoder parse OAuth 2.0 and OpenID Connect (OIDC) claims?

Yes. It parses standard claims such as sub (subject), iss (issuer), aud (audience), exp (expiration timestamp), iat (issued at), and custom user scope claims.

Are my sensitive bearer tokens sent to remote servers?

No. All JWT Base64URL decoding, JSON parsing, and timestamp evaluation execute 100% client-side directly inside your browser. Your authentication tokens remain completely private.

Rate Limits

UI Limits
100 uses per 15 minutes
Max payload size: 5 MB
API Limits
5 requests per 60 minutes
Max payload size: 256 KB
Need higher API rate limits, increased payload sizes, or custom developer solutions?
Contact our engineering team at support@blueutils.com for custom rate limit increases, higher quota allocations, or tailored enterprise integrations.