RFC 7515 JWS y RFC 7519 JWT • Cero Fugas de Datos en Memoria

Decodificador de JWT y JWS Online (JSON Web Signature)

Inspecciona, decodifica y analiza tokens JWS y JWT localmente. Comprende por qué decodificar no equivale a verificar, examina claims y calcula expiraciones en tiempo real.

¿Se puede decodificar un JWS / JWT sin la clave secreta?

Sí. Los tokens estándar JWS (RFC 7515) y JWT (RFC 7519) están firmados, no cifrados. El encabezado (JOSE) y el payload son objetos JSON codificados en Base64URL que cualquiera puede decodificar y leer sin necesidad de una clave. La clave secreta solo se necesita para verificar o generar la firma criptográfica.

DISTINCIÓN DE SEGURIDAD CRÍTICA: DECODIFICAR ≠ VERIFICAR

Decodificar un JWT NO Demuestra que su Firma sea Válida

Un error común de seguridad es asumir que un token que se decodifica correctamente es legítimo. Los tokens JWS/JWT son cadenas Base64URL legibles por cualquiera. Nunca autorices permisos basándote solo en claims decodificados sin validar criptográficamente la firma con la clave secreta o certificado público.

Verificar Firma Criptográfica con Secreto / Clave Pública →
Privacidad 100% en el cliente: Tus tokens JWT, firmas JWS y credenciales se procesan únicamente en la memoria de tu navegador y NUNCA se transmiten a ningún servidor.
WhatsApp
Token Codificado (Pega tu JWT o JWS) 0 chars
Supports RFC 7515 JWS Compact Serialization & Bearer Tokens 100% Offline
Header Payload Signature
Estado y Expiración del Token Awaiting Input

Paste a token or click a sample button to inspect its claims.

Encabezado: Algoritmo y Tipo (JOSE)
{"alg": "none"}
Payload: Datos y Claims
{}
Paste a token to inspect signature

Desglose de Claims Estándar

0 claims
No standard claims parsed yet.

How to Decode JWT Without Secret in Code

1-Click Copy Snippet
Node.js (Native) JSON.parse(Buffer.from(t.split('.')[1], 'base64url'))
Python 3 json.loads(base64.urlsafe_b64decode(p + '=='))
Go base64.RawURLEncoding.DecodeString(parts[1])
PHP (Native) json_decode(base64_decode(strtr(...)))
Bash / CLI cut -d. -f2 | base64 -d | jq .
Browser JS (atob) JSON.parse(atob(token.split('.')[1]))

Enterprise Security Advantage (Why Not jwt.io?)

SOC2 & HIPAA Safe

Unlike ad-supported online decoders or jwt.io which inject third-party marketing cookies and analytics trackers, DevOmniTools JWT Decoder parses tokens strictly within your browser's local sandbox using the native Web Crypto API. No authorization credentials, session cookies, or secrets ever leave your machine.

✓ 0 Cookies Zero Auth0 telemetry
✓ SD-JWT IETF draft disclosures
✓ Offline PWA Works in airplane mode
✓ Multilingual EN, ES, DE, AR (RTL)
Las herramientas principales procesan datos localmente. La IA opcional envía el fragmento seleccionado a través de Cloudflare a Cloudflare AI o el respaldo opcional de Google Gemini tras tu consentimiento; se aplican las políticas de retención del proveedor. El formulario de contacto envía tus datos a nuestro proveedor de correo. El uso sin conexión requiere que la página y sus recursos terminen de almacenarse; la IA externa y el envío de mensajes requieren internet. Core operation in browser memory
Local browser processing

Cómo decodificar tokens JWS y JWT sin clave secreta

  1. Pega tu token compacto JWS o JWT (tres segmentos codificados en Base64URL separados por puntos).
  2. Inspecciona el encabezado JOSE y las declaraciones del payload (exp, sub, iss, aud) sin necesidad de clave secreta.
  3. Comprueba el estado de expiración en tiempo real. Para verificar criptográficamente la firma, introduce el secreto HMAC o certificado público.

Reglas de ejemplo

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFsaWNlIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNzkzOTYwMDAwfQ.c2lnbmF0dXJlX2NoZWNr

Qué significa el resultado

Decodificar un JWT solo muestra el contenido de su payload y no prueba su autenticidad. La verificación de firma requiere la clave secreta o pública.

JWT Diagnostics

Depurador de Errores JWT — Diagnostique y Corrija Fallos Comunes

Los 5 errores de JSON Web Token más buscados. Haga clic en "Probar en Decodificador" para inspeccionar las claims y el estado del token.

TokenExpiredError: jwt expired

TokenExpiredError: jwt expired / "exp" timestamp is in the past
Causa Raíz

The exp (expiration time) claim in the token payload represents a Unix epoch timestamp that has already elapsed compared to current server time.

❌ Token con Error
Payload: { "sub": "12345", "name": "Alex", "exp": 1516239022 }
Status: EXPIRED (2018-01-18T01:30:22Z)
✅ Token Corregido
Payload: { "sub": "12345", "name": "Alex", "exp": 1893456000 }
Status: ACTIVE (Valid through 2030-01-01)

Solución: Request a fresh token using your refresh token endpoint, or check clock synchronization (NTP) between identity provider and API server.

JsonWebTokenError: invalid signature

JsonWebTokenError: invalid signature / cryptographic verification failed
Causa Raíz

The signature segment was computed with a different secret or private key, or the payload/header was modified in transit after signing, altering the HMAC/RSA digest.

❌ Token con Error
Header.Payload.TAMPERED_OR_WRONG_SECRET_SIGNATURE
Digest mismatch: Computed HMAC !== Received HMAC
✅ Token Corregido
Header.Payload.VALID_VERIFIED_SIGNATURE
Digest matches: HMAC-SHA256(header.payload, SECRET)

Solución: Ensure the API server uses the exact same secret key or public key (RS256) as the authentication server, and never alter payload bytes after signing.

JsonWebTokenError: jwt malformed (Segment Count)

JsonWebTokenError: jwt malformed / Expected 3 dot-separated segments
Causa Raíz

RFC 7519 compact JWTs must consist of exactly 3 parts separated by periods: Header.Payload.Signature. Pasting the "Bearer " prefix or omitting a section breaks the parser.

❌ Token con Error
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0
(Has "Bearer " prefix and missing 3rd signature segment)
✅ Token Corregido
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.Xp8sK2_9aB07R_8X9vU3L0x_6YpM5NqD9kM0wP8a1b2
(Clean 3-segment compact serialization)

Solución: Strip the "Bearer " header prefix using token.replace(/^Bearer\s+/, "") before decoding, and confirm all 3 segments exist.

Base64Url Illegal Character / Whitespace

TypeError: Failed to execute "atob" / The string contains invalid base64 characters
Causa Raíz

JWT uses RFC 4648 URL-safe base64 (- instead of +, _ instead of /, no = padding). Extra whitespace, newlines, or standard base64 characters cause decoding exceptions.

❌ Token con Error
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 .eyJzdWIi... (Embedded whitespace before period)
✅ Token Corregido
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIi... (Sanitized URL-safe base64 string)

Solución: Trim trailing spaces and newlines using token.trim(). Replace + with - and / with _ before base64 decoding.

Algorithm None Vulnerability (alg: "none")

SecurityException: Algorithm "none" is rejected in production mode
Causa Raíz

Attackers forge tokens by specifying "alg": "none" in the header and omitting the signature. Insecure parsers that do not enforce algorithms accept unsigned forged payloads.

❌ Token con Error
Header: { "alg": "none", "typ": "JWT" }
Signature: (empty / unsigned bypass attempt)
✅ Token Corregido
Header: { "alg": "HS256", "typ": "JWT" } or { "alg": "RS256", "typ": "JWT" }
Enforced cryptographic signature verification

Solución: Always enforce strict algorithm whitelisting in your JWT verification middleware: algorithms: ["HS256", "RS256"]. Never permit alg: "none".

Guía Técnica de Ingeniería

¿Necesitas ejemplos de código? Aprende a decodificar tokens JWT sin clave secreta en Node.js, Python y Go

Leer Tutorial Completo
Preguntas Frecuentes (FAQ) · Decodificador JWT y JWS (RFC 7515 Compact Parser)

Decodificador JWT — Guía Técnica RFC 7519 para JSON Web Tokens

Decodifica, inspecciona y valida JSON Web Tokens en tu navegador según RFC 7519.

MU
Arquitecto de Herramientas y Maximo
Referencia técnica

01. JSON Web Tokens: Estructura RFC 7519 y Claims

Un JWT definido en RFC 7519 consta de tres partes codificadas en Base64URL separadas por puntos: Cabecera, Payload y Firma. La cabecera especifica el tipo de token y el algoritmo de firma.

El payload contiene claims registrados en RFC 7519: iss, sub, aud, exp, nbf, iat y jti. El ataque "alg: none" ocurre cuando una biblioteca acepta tokens con algoritmo "none", evitando la verificación de firma.

  • Claims RFC 7519: iss, sub, aud, exp, nbf, iat, jti — campos de interoperabilidad estándar.
  • Soporte de algoritmos: HS256/384/512 (HMAC), RS256/384/512 (RSA), ES256/384/512 (ECDSA).
  • Detección de expiración: claim exp comparado con UTC actual.

Preguntas Frecuentes (FAQ)

¿Mis tokens JWT se envían a tus servidores?

Nunca. Decodificación y verificación se ejecutan completamente en la memoria de tu navegador.

¿Mis datos confidenciales se envían a servidores externos al usar Decodificador JWT y JWS (RFC 7515 Compact Parser)?

No. El procesamiento principal en Decodificador JWT y JWS (RFC 7515 Compact Parser) se ejecuta en la memoria volátil del navegador sin subidas a servidores. Las funciones asistidas por la nube opcionales requieren consentimiento previo.

¿Puedo utilizar Decodificador JWT y JWS (RFC 7515 Compact Parser) sin conexión activa a Internet?

El uso sin conexión requiere que la página y los recursos de la herramienta terminen de almacenarse en caché. Las transformaciones básicas funcionan localmente; la IA opcional y el contacto requieren internet.

¿Decodificador JWT y JWS (RFC 7515 Compact Parser) es gratuito y tiene límites de uso?

Las herramientas básicas son gratuitas y no requieren una cuenta. Se aplican límites de memoria y de seguridad de cada herramienta. La IA opcional y los servicios de contacto tienen límites de uso.

Optimiza tu flujo de trabajo con utilidades complementarias 100% privadas en tu navegador.

Explorar el directorio de herramientas