JWT Encoder/Decoder — Depura tokens JSON
Codificador, decodificador y auditor de seguridad JWT compatible con HS256, RS256, ES256, PS256 y más. Inspecciona claims, verifica firmas y detecta vulnerabilidades.
¿Qué es el JWT Encoder/Decoder?
El JWT Encoder/Decoder crea JSON Web Tokens firmados, decodifica tokens existentes para revelar su contenido y ejecuta auditorías de seguridad automatizadas contra los claims y las elecciones de algoritmos de un token. Los JSON Web Tokens son el formato más común para la autenticación sin estado: un gateway de API, un proveedor OAuth o un microservicio genera un token firmado, y los servicios posteriores verifican esa firma en lugar de consultar un almacén de sesiones centralizado. Cuando algo sale mal (un token es rechazado, un claim tiene un valor inesperado, o necesitas verificar tu lógica de firma), necesitas inspeccionar el token sin escribir código personalizado. Esta herramienta admite la codificación con 13 algoritmos de cuatro familias, la decodificación con estado de expiración en tiempo real, verificación de firmas y un modo de auditoría de seguridad que comprueba vulnerabilidades comunes. Todas las operaciones se ejecutan del lado del cliente: tus tokens y claves de firma nunca abandonan el navegador.
Características principales
- Crear JWTs firmados con HMAC (HS256/384/512) — ingresa un payload JSON y un secreto compartido; la herramienta firma el token usando la API
SignJWTde la bibliotecajose. - Soporte para RSA (RS256/384/512), ECDSA (ES256/384/512) y RSA-PSS (PS256/384/512) — pega una clave privada codificada en PEM para firma asimétrica; la herramienta importa la clave usando
importPKCS8y firma en consecuencia. - Tokens sin firma con
alg: none— crear tokens sin firma está admitido pero claramente marcado con un panel de advertencia rojo. - Agregar claims estándar rápidamente — botones de un clic insertan
iss,sub,aud,exp(+1 hora),exp(+1 día),iat,nbfyjti(un UUID aleatorio decrypto.randomUUID()) en el editor de payload. - Decodificar encabezado y payload de JWT — pegar cualquier JWT muestra inmediatamente el encabezado y el payload analizados como JSON formateado en paneles lado a lado, con el algoritmo y el tipo mostrados bajo el encabezado.
- Verificar estado de expiración — un banner de estado con color muestra si el token está expirado o es válido, con una cuenta regresiva en tiempo real (p. ej., "Quedan 2h 34m" o la fecha y hora de expiración).
- Verificar firmas — proporciona el secreto (HMAC) o la clave pública PEM (asimétrica) y la herramienta llama a
jwtVerifypara confirmar que la firma es criptográficamente válida. - Salida JWT con código de colores — los tres segmentos del token se muestran en rojo (encabezado), morado (payload) y azul (firma) para una fácil identificación visual.
- Modo de auditoría de seguridad — analiza un token en busca de 10 problemas de seguridad distintos, incluyendo
alg: none,expfaltante, tokens expirados,nbfen el futuro, expiración muy larga, algoritmos débiles y claimsiss,aud,subfaltantes. - Modo por lotes — decodifica múltiples tokens JWT a la vez (uno por línea), generando el algoritmo y el resumen del payload para cada uno.
- Procesamiento 100% del lado del cliente — usa el paquete npm
joseejecutándose completamente en el navegador; no se transmiten tokens ni claves.
Cómo usar el JWT Encoder/Decoder
Paso 1: Seleccionar un modo
Aparecen tres botones de modo en la parte superior de la herramienta: Codificar, Decodificar y Auditoría de seguridad. Un aviso de seguridad amarillo debajo del selector de modo te recuerda que las claves de firma no deben ingresarse en herramientas en las que no confíes — es una buena práctica leer esto antes de proceder con cualquier material de clave.
Paso 2: Crear un JWT (modo Codificar)
Elige un algoritmo. Un menú desplegable agrupado presenta los 13 algoritmos admitidos organizados por familia: HMAC Simétrico (HS256, HS384, HS512), RSA Asimétrico (RS256, RS384, RS512), ECDSA Asimétrico (ES256, ES384, ES512), RSA-PSS Asimétrico (PS256, PS384, PS512) y Sin firma (none). El valor predeterminado es HS256.
Edita el payload. Un editor JSON se prerellena con un payload de ejemplo que contiene sub, name e iat (establecido en la marca de tiempo Unix actual al cargar la pagina). Edita esto directamente. Usa los botones de Agregar Claims Rapido para insertar claims estandar sin escribir marcas de tiempo manualmente — hacer clic en + exp (+1h) inserta un valor exp establecido en la marca de tiempo Unix actual mas 3600 segundos.
Ingresa la clave de firma. Para algoritmos HMAC (HS256/384/512), un campo de entrada tipo contraseña acepta el secreto compartido. Un toggle de mostrar/ocultar revela el valor. Para algoritmos asimétricos, un área de texto multilínea acepta una clave privada con formato PEM que comienza con -----BEGIN PRIVATE KEY-----.
Haz clic en "Codificar JWT". El token firmado aparece en un panel de salida con código de colores. Un botón "Copiar" copia el token completo. Un botón "Decodificar este token" lo transfiere a la pestaña Decodificar para inspección inmediata.
Paso 3: Decodificar un JWT (modo Decodificar)
Pega cualquier JWT en el campo de entrada del token. La decodificación es inmediata — no se requiere hacer clic en ningún botón. La herramienta divide el token en ., decodifica en Base64URL cada segmento usando una función personalizada base64UrlDecode y analiza en JSON el encabezado y el payload.
Si el token tiene un claim exp, aparece un banner con color sobre los paneles decodificados:
- Verde con una marca de verificación: "Token Válido — Quedan 2h 34m"
- Rojo con un icono de advertencia: "Token Expirado — Expiró el [fecha/hora]"
El encabezado y el payload aparecen en paneles JSON formateados lado a lado, cada uno con un botón de copiar. Debajo de ellos, un panel de Detalles de Claims presenta cada claim del payload en su propia tarjeta. Los claims de marca de tiempo (exp, iat, nbf) muestran tanto el entero Unix sin procesar como la cadena de fecha legible por humanos.
La sección Firma y Verificación muestra la cadena de firma sin procesar y proporciona una entrada de clave para la verificación. Ingresa el secreto o la clave pública y haz clic en "Verificar firma". La tarjeta de resultado se vuelve verde para una firma válida o roja para una inválida.
Paso 4: Ejecutar una auditoría de seguridad (modo Auditoría)
Cambia a la pestaña de Auditoría de Seguridad y pega un token. Los hallazgos aparecen inmediatamente mientras se analiza el token. Cada tarjeta de hallazgo muestra una insignia de gravedad (CRÍTICO, ADVERTENCIA, NOTA o INFO), un título, una descripción en lenguaje sencillo y una recomendación específica. La auditoría verifica 10 condiciones:
alg: noneo faltante — CRÍTICO- Algoritmo débil
HS1— ADVERTENCIA - Algoritmo simétrico en uso — NOTA
- Claim
expfaltante — ADVERTENCIA - Token ya expirado — CRÍTICO
- Expiración a más de un año en el futuro — NOTA
- El claim
nbfestá en el futuro — ADVERTENCIA - Claim
issfaltante — INFO - Claim
audfaltante — INFO - Claim
subfaltante — INFO
Si no se encuentran problemas, una tarjeta INFO muestra "No se encontraron problemas importantes — continúa validando los tokens del lado del servidor y mantén las claves de firma en secreto."
Ejemplos prácticos
Generar un token de prueba para una API
Tu backend espera un JWT firmado con HS256 con claims sub, iss, aud y exp. En el modo Codificar, selecciona HS256, comienza con el payload predeterminado y luego haz clic en + iss, + sub, + aud y + exp (+1h) en secuencia para construir el payload completo. Ingresa tu secreto de prueba y haz clic en Codificar. Copia el token resultante en tu herramienta de prueba de API o encabezado HTTP. Cuando la prueba falle, pega el token en el modo Decodificar para verificar que los claims coincidan con las expectativas — el panel de Detalles de Claims facilita confirmar cada valor sin decodificar manualmente en Base64.
Depurar un error de API "Token Expirado"
Tu aplicación recibe respuestas 401 Unauthorized. Pega el token del encabezado Authorization de tu aplicación en el modo Decodificar. El banner de expiración te indica de inmediato si el token ha expirado y cuándo. Si expiró hace tres minutos, el problema es un token de corta duración sin lógica de actualización, o un desfase de reloj entre tu cliente y el emisor del token. Los claims iat y exp en el panel de Detalles de Claims muestran la ventana del problema en fechas legibles por humanos.
Auditar tokens antes de una revisión de seguridad
Antes de una revisión de código o prueba de penetración, pega muestras JWT de producción en el modo de Auditoría de Seguridad para identificar mejoras fáciles. Un token que regresa con hallazgos CRÍTICOS por alg: none o exp faltante necesita atención inmediata. Una NOTA sobre un algoritmo simétrico en una arquitectura de múltiples servicios vale la pena discutirla durante la revisión. El resultado de la auditoría se puede copiar y pegar directamente en un documento de hallazgos de seguridad.
Consejos y mejores prácticas
Usa algoritmos asimétricos (RS256, ES256) para APIs públicas. Los algoritmos HMAC (HS256) usan un secreto compartido: cualquier servicio que pueda verificar un token también puede crear uno. Con RS256 o ES256, solo el titular de la clave privada puede firmar nuevos tokens, mientras que cualquier servicio puede verificarlos usando la clave pública distribuida. El modo de auditoría de seguridad marca los algoritmos HS con una NOTA por esta razón.
Siempre establece un claim exp. Un token sin expiración permanece válido indefinidamente a menos que sea revocado explícitamente. La sección de Agregar Claims Rápido proporciona botones de un clic para expiraciones de 1 hora y 1 día. Los tokens de acceso deben expirar en minutos a pocas horas; usa tokens de actualización para sesiones más largas.
Usa jti para tokens de un solo uso. El botón de agregar rápido + jti (UUID) inserta un identificador de token único generado por crypto.randomUUID(). Del lado del servidor, puedes almacenar y verificar este valor para prevenir ataques de repetición de tokens en flujos de restablecimiento de contraseña o confirmación de correo electrónico.
No uses el algoritmo none en producción. La herramienta crea tokens sin firma cuando se selecciona alg: none pero muestra un panel de advertencia rojo. El modo de auditoría de seguridad califica alg: none como CRÍTICO. Este algoritmo solo debería aparecer en entornos de prueba donde la verificación de tokens está intencionalmente deshabilitada.
Problemas comunes y solución de problemas
"Formato JWT inválido. Un JWT debe tener 3 partes separadas por puntos." — la cadena que pegaste no tiene exactamente dos caracteres .. Asegúrate de haber copiado el token completo incluyendo los tres segmentos. Los JWTs con un salto de línea o espacio al final también fallarán — los espacios en los bordes se eliminan, pero los espacios incrustados causarán este error.
"Codificación Base64 inválida" — uno de los segmentos del token no es Base64URL válido. Esto puede suceder si el token fue truncado durante el copiado y pegado, o si la cadena es un formato codificado diferente (como un token de referencia opaco de OAuth que no es un JWT en absoluto).
"Se requiere secreto" / "Se requiere clave privada" — hiciste clic en Codificar sin rellenar el campo de clave de firma. Los algoritmos HMAC requieren un secreto no vacío; los algoritmos asimétricos requieren una clave privada PEM.
"Payload JSON inválido" — el editor de payload contiene JSON mal formado. Verifica si hay comas al final, claves sin comillas o cadenas con comillas simples. Los botones de Agregar Claims Rápido siempre producen JSON válido; si editaste el payload manualmente, busca errores de sintaxis.
La verificación devuelve inválido incluso con la clave correcta — asegúrate de estar usando el mismo algoritmo con el que se firmó el token (mostrado en el campo alg del encabezado, que el modo Decodificar muestra automáticamente). Para la verificación asimétrica, asegúrate de proporcionar la clave pública, no la clave privada.
El token alg: none muestra "No se puede verificar" en la verificación — los tokens sin firma no tienen firma para verificar. La herramienta devuelve un estado específico de "no admitido" para este caso y deshabilita el botón Verificar cuando alg es none.
Privacidad y seguridad
El JWT Encoder/Decoder procesa todos los tokens y claves localmente usando la biblioteca jose ejecutándose en tu navegador. Ningún JWT, secreto o clave privada se transmite a ningún servidor. La herramienta no hace solicitudes de red durante la codificación, decodificación o verificación. El aviso de seguridad amarillo que se muestra en la herramienta es genuino: trata cualquier herramienta en línea como no confiable para claves de firma de producción. Para el desarrollo y la depuración con credenciales que no son de producción, esta herramienta es segura de usar. Verifica el comportamiento por ti mismo abriendo las DevTools del navegador y verificando la pestaña Red — no verás solicitudes salientes durante ninguna operación.
Preguntas frecuentes
¿Es gratuita la herramienta JWT? Sí. La herramienta es completamente gratuita sin necesidad de cuenta ni registro.
¿Puedo usarla sin conexión? Sí. Una vez que la página ha cargado, toda la codificación, decodificación y auditoría se ejecuta localmente. No se realizan solicitudes de red para ninguna operación JWT.
¿Están seguros mis tokens y claves de firma? La herramienta no realiza solicitudes de red durante la operación. Tus tokens y claves permanecen en tu pestaña del navegador. Dicho esto, evita ingresar claves privadas de producción en cualquier herramienta basada en navegador. Usa claves de prueba o credenciales que no sean de producción.
¿Qué algoritmos están admitidos? La herramienta admite 13 algoritmos: HS256, HS384, HS512 (HMAC), RS256, RS384, RS512 (RSA PKCS#1), ES256, ES384, ES512 (ECDSA), PS256, PS384, PS512 (RSA-PSS) y none (sin firma). La biblioteca jose maneja las operaciones criptográficas.
¿Puede verificar una firma sin el secreto original? No. La verificación de firma requiere el secreto de firma (HMAC) o la clave pública correspondiente (asimétrica). La decodificación — leer el encabezado y el payload — no requiere ninguna clave y funciona de inmediato.
¿En qué formato debe estar la clave privada? La firma asimétrica requiere una clave privada con formato PEM PKCS#8 (que comienza con -----BEGIN PRIVATE KEY-----). La función importPKCS8 de la biblioteca jose maneja la importación. El formato PKCS#1 (que comienza con -----BEGIN RSA PRIVATE KEY-----) no está admitido; convierte usando openssl pkcs8 -topk8 -nocrypt.
¿Cuál es la diferencia entre el modo Decodificar y el modo Auditoría de Seguridad? El modo Decodificar muestra el contenido del token — encabezado, payload, claims y estado de expiración — y te permite verificar la firma. El modo Auditoría de Seguridad se centra únicamente en identificar debilidades de seguridad en el diseño del token: claims faltantes, algoritmos débiles, tokens expirados y problemas de configuración. Ambos modos no requieren clave de firma.
¿Por qué la auditoría de seguridad marca mi token HS256? La auditoría señala (gravedad NOTA, no ADVERTENCIA o CRÍTICO) que los algoritmos HMAC usan un secreto compartido, lo que significa que cualquier servicio con el secreto puede tanto verificar como crear tokens. Esta es una consideración arquitectónica para sistemas de múltiples servicios, no un error en tu token. La nota recomienda algoritmos asimétricos para sistemas donde solo un servicio debería poder emitir tokens.
¿Puedo decodificar un JWT sin conocer el algoritmo? Sí. El algoritmo usado para firmar el token se almacena en el campo alg del encabezado. La decodificación lee primero el encabezado, lo que revela el algoritmo. Solo necesitas saber el algoritmo (y tener la clave) si quieres verificar la firma.
¿Cómo funciona el modo por lotes? Habilita el Modo por Lotes con el botón de toggle, luego ingresa un JWT por línea. Haz clic en "Procesar todo" para decodificar cada token. La tabla de salida muestra el algoritmo de cada token (del encabezado) y su payload completo como cadena JSON. Los tokens mal formados muestran un error en la columna de salida.
Herramientas relacionadas
El Codificador/Decodificador Base64 maneja la codificación Base64 segura para URL usada dentro de los segmentos JWT. El Formateador JSON es útil para formatear el payload JSON decodificado cuando quieres explorar estructuras anidadas. El Generador de contraseñas puede generar secretos aleatorios fuertes para usar como claves de firma HMAC.
Prueba JWT Encoder/Decoder ahora: JWT Encoder/Decoder