Guide
Alternativas a jwt.io: Comparativa de decodificadores JWT en línea
jwt.io es la implementación de referencia. Usa un decodificador solo del lado del cliente cuando el token contenga credenciales reales.
By Buğra SözeriPublished
Los JWT (Tokens Web JSON) son tres segmentos codificados en Base64url separados por puntos. El encabezado y el payload no están cifrados — son legibles por cualquiera que tenga el token. Decodificarlos no requiere más que una decodificación Base64url y un análisis JSON. La pregunta no es si puedes decodificarlo, sino dónde — y si la herramienta que eliges introduce un riesgo innecesario.
En qué destaca jwt.io
jwt.io está mantenido por Auth0 (ahora Okta) y es lo más cercano que tiene el ecosistema JWT a una herramienta de referencia oficial. Sus fortalezas son sustanciales:
- Verificación de firma — pega un secreto (HMAC) o clave pública (RSA, ECDSA, EdDSA) y jwt.io verificará si la firma del token es válida. Ninguna otra herramienta gratuita popular en línea admite esto tan limpiamente.
- Cobertura de algoritmos — HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512, y Ed25519/Ed448.
- Cumplimiento de RFC — la herramienta está mantenida por personas que contribuyeron a las especificaciones JWT.
- Lista de bibliotecas — la parte inferior de jwt.io enumera bibliotecas JWT de código abierto para más de 30 lenguajes. Es un recurso de referencia genuino.
- Confianza del ecosistema — las URLs de jwt.io son el estándar de facto para compartir explicaciones de tokens en documentación, respuestas de Stack Overflow y guías de referencia de API.
La preocupación por la privacidad
jwt.io declara que se ejecuta completamente en el navegador. Auth0 ha confirmado que los datos del token no se envían a sus servidores durante la decodificación. Esto es casi con certeza cierto para la operación principal de decodificar y mostrar.
Sin embargo, jwt.io carga JavaScript de terceros — scripts de análisis, monitoreo y publicidad — que están fuera del control de Auth0 a nivel de red. Investigadores de seguridad y miembros de la comunidad han planteado esta preocupación en GitHub y en foros de seguridad: un script cargado desde una CDN de terceros podría, en principio, leer el DOM. La probabilidad de que esto se explote específicamente en jwt.io es baja, pero no es cero.
La orientación práctica sigue directamente de RFC 7519 §10 y OWASP: si el token lleva algo sensible — un identificador de sesión, reclamaciones de identidad del usuario, una clave API en una reclamación personalizada — decodifícalo localmente, no en línea.
El decodificador JWT de Convertitive es estrictamente del lado del cliente. La página no contiene scripts de análisis que lean campos de entrada, y ningún dato de token sale del navegador. Esa es una diferencia significativa para tokens que son de bajo riesgo pero no completamente desechables — tokens de desarrollo, credenciales de staging, JWT de demostración.
Lo que el decodificador JWT de Convertitive no hace
Convertitive no admite verificación de firma, y esto es intencional.
La verificación de firma requiere que proporciones un secreto compartido (HMAC) o una clave pública (RSA/ECDSA). Ingresar cualquiera de los dos en una herramienta basada en navegador es un antipatrón de seguridad: los secretos pertenecen a los gestores de secretos, no a los campos de entrada del navegador.
RFC 7519 §10 aborda esto explícitamente: “Las claves utilizadas para firmar o verificar JWT DEBEN mantenerse secretas y NO DEBEN compartirse.”
Si necesitas verificar una firma JWT, usa la biblioteca JWT de tu aplicación directamente, o un script local. La verificación de firma de jwt.io es útil para depurar en desarrollo — solo usa una clave de desarrollo o prueba, nunca un secreto de producción.
Comparativa de características
| Característica | jwt.io | token.dev | Convertitive |
|---|---|---|---|
| Decodificación de encabezado + payload | Sí | Sí | Sí |
| Verificación de firma | Sí — todos los algoritmos principales | Sí — HMAC y RSA | No (por diseño) |
| Visualización legible de exp / iat | Sí | Sí | Sí |
| Cobertura de algoritmos | Muy amplia — más de 12 algoritmos | Moderada | Solo visualización (sin verificación) |
| Scripts de análisis de terceros | Sí (análisis de Auth0 / Okta) | Mínimo | No |
| Datos del token enviados al servidor | No (afirmado del lado del cliente) | No | No (verificado solo del lado del cliente) |
| Lista de referencia de bibliotecas | Sí — más de 30 lenguajes | No | No |
| Soporte JWE (token cifrado) | No | No | No |
| Uso sin conexión (después de la primera carga) | Parcial | Sí | Sí |
| Mantenedor | Auth0 / Okta | Comunidad | Convertitive |
Cuándo usar jwt.io
- Necesitas verificar una firma durante el desarrollo y estás usando una clave de desarrollo o prueba (nunca un secreto de producción).
- Necesitas la lista de referencia de bibliotecas para elegir una implementación JWT para tu stack.
- Quieres compartir un enlace a una explicación de token con un colega — los enlaces de jwt.io son universalmente entendidos por los ingenieros.
- Estás depurando un token de demostración o sintético sin credenciales reales y quieres la interfaz más completa.
Cuándo usar el decodificador JWT de Convertitive
- El token es un token de desarrollo o staging que no quieres exponer a ningún script de terceros, incluso con bajo riesgo.
- Solo necesitas leer las reclamaciones del payload — expiración, sujeto, roles — y no necesitas verificación de firma.
- Estás auditando un formato de token (comprobando el algoritmo del encabezado, verificando los nombres de reclamaciones) y no necesitas el conjunto completo de características de jwt.io.
Repaso de la estructura JWT
Un JWT estándar tiene tres componentes separados por puntos:
- Encabezado — JSON codificado en Base64url que especifica el tipo de token (
JWT) y el algoritmo de firma (alg). - Payload — JSON codificado en Base64url que contiene reclamaciones. Las reclamaciones registradas incluyen
iss(emisor),sub(sujeto),aud(audiencia),exp(expiración) yiat(emitido en). - Firma— calculada sobre encabezado + “.” + payload usando el algoritmo y la clave especificados en el encabezado. No se puede decodificar sin la clave.
Las partes 1 y 2 no son secretas — solo están codificadas, no cifradas. Cualquiera con la cadena del token puede leer el encabezado y el payload.
Para un recorrido técnico más profundo, consulta nuestra guía de decodificación de tokens JWT. Para entender específicamente la codificación Base64url, consulta Base64 encoding explained.
El resumen honesto
jwt.io es la mejor herramienta si necesitas verificación de firma o quieres la experiencia de referencia JWT más completa.
El decodificador de Convertitive es la mejor opción cuando quieres garantizar que no haya interacción de scripts de terceros con tu token, o cuando solo necesitas inspección de encabezado y payload sin la complejidad de la verificación de firma. Hace menos — deliberadamente.
Para cualquier token que contenga credenciales de producción reales: usa ninguno. Usa la línea de comandos.
Frequently asked questions
- ¿Puede jwt.io verificar una firma JWT?
- Sí — jwt.io admite verificación de firma. Pegas tu token, seleccionas el algoritmo y proporcionas un secreto (para HMAC) o una clave pública (para RSA/ECDSA). El decodificador de Convertitive no admite verificación de firma, por diseño: ingresar una clave de firma o clave privada en cualquier herramienta basada en navegador es un antipatrón de seguridad según RFC 7519 §10.
- ¿jwt.io envía mi token a los servidores de Auth0?
- jwt.io se comercializa como ejecutándose completamente en el navegador. Auth0 (el mantenedor) declara que no se realizan solicitudes al servidor para decodificación. Sin embargo, la página carga scripts de terceros y análisis, lo que crea una superficie de riesgo no nula. Si el token contiene credenciales de producción, usar una herramienta sin conexión o un comando local es la opción más segura.
- ¿Por qué Convertitive no admite verificación de firma?
- RFC 7519 §10 advierte explícitamente contra compartir claves de firma. Una herramienta basada en navegador que acepta un secreto o clave privada normaliza la práctica de ingresar credenciales en formularios web. Convertitive decodifica solo el encabezado y el payload — la porción de un JWT que siempre está codificada en Base64url sin cifrado.
- ¿Está cifrado un JWT?
- Los JWT estándar (JWS, Firma Web JSON) están firmados pero no cifrados — el encabezado y el payload están codificados en Base64url y son visibles para cualquiera que tenga el token. Los tokens JWE (Cifrado Web JSON) sí están cifrados. Si tu token comienza con eyJ y tiene tres partes separadas por puntos, es un JWS y su encabezado y payload se pueden decodificar sin ninguna clave.
- ¿Puedo decodificar un JWT en la línea de comandos?
- Sí. En Node.js: node -e "const t='TU_TOKEN'; console.log(JSON.parse(Buffer.from(t.split('.')[1],'base64url').toString()))". Con jq y base64: echo TU_TOKEN | cut -d. -f2 | base64 -d | jq. Estos no requieren conexión de red y son el enfoque recomendado para tokens que contienen credenciales de producción.
- ¿Qué significa 'exp' en el payload de un JWT?
- exp es el timestamp de expiración POSIX definido en RFC 7519 §4.1.4. Es un timestamp Unix (segundos desde 1970-01-01T00:00:00Z). Tanto jwt.io como Convertitive lo muestran como un datetime legible por humanos.
Related
Published May 31, 2026