Decodificador JWT

Decodifica al instante el header y el payload de un JWT, en tu navegador.

Pega tu JWT
Listo. Pega un JWT para decodificarlo.

Tu token se decodifica en tu navegador. No se sube nada a BroBroGo.

Preguntas frecuentes

¿Es seguro pegar aquí mi JWT?

Sí. La decodificación ocurre por completo en tu navegador — tu token nunca se envía a BroBroGo.

¿Esto verifica la firma?

No. Solo decodifica el header y el payload para que los leas. Verificar la firma requiere la clave secreta o pública del emisor, algo que esta herramienta nunca te pide.

¿Cómo sé si mi token ha expirado?

El decodificador lee el campo exp y muestra una etiqueta de estado junto al token: válido, expirado, aún no válido o sin expiración.

Estructura y composición de un JSON Web Token (JWT)

Un JSON Web Token (JWT) es un estándar abierto (RFC 7519) que define una forma compacta y autónoma de transmitir información entre partes como un objeto JSON. Esta información es estructurada y se presenta como una única cadena de texto dividida en tres partes diferenciadas, separadas por puntos (.). Cada una de estas partes cumple una función específica dentro de la arquitectura del token:

  1. Header (Cabecera): Contiene metadatos sobre el propio token, principalmente el tipo de token y el algoritmo de firma utilizado.
  2. Payload (Carga útil): Alberga los datos que se desean transmitir, conocidos como declaraciones o claims.
  3. Signature (Firma): Permite constatar que el token no ha sido modificado en el trayecto. Se genera combinando el header codificado, el payload codificado, un secreto o clave pública/privada, y el algoritmo especificado en la cabecera.

El formato visual de un JWT sigue el patrón header.payload.signature. Para su transmisión en entornos web, donde ciertos caracteres especiales pueden causar problemas de enrutamiento o interpretación, cada una de estas tres secciones se codifica de forma independiente utilizando el formato Base64URL.

El propósito del Header y sus declaraciones comunes

El Header es la primera sección del JWT y proporciona las instrucciones necesarias para que el receptor sepa cómo procesar el token. Al decodificarse, se presenta como un objeto JSON estructurado. Dentro de este objeto, existen declaraciones estándar diseñadas para la interoperabilidad:

  • alg (Algoritmo): Especifica el algoritmo criptográfico utilizado para asegurar el token. Ejemplos comunes incluyen algoritmos simétricos como HS256 (HMAC con SHA-256) o asimétricos como RS256 (RSA con SHA-256).
  • typ (Tipo): Define el tipo de objeto. En este contexto, su valor suele ser de forma explícita JWT.

La correcta lectura de estos parámetros es el primer paso para cualquier análisis de seguridad o depuración de flujos de autenticación.

El Payload y la gestión de declaraciones de tiempo

El Payload contiene la información de negocio o de identidad que se transfiere entre los sistemas. Al igual que el Header, se estructura como un objeto JSON tras su decodificación. Las declaraciones dentro del Payload se dividen en tres categorías: registradas, públicas y privadas. Las declaraciones registradas son campos predefinidos que, aunque no son obligatorios, proporcionan un punto de partida común para el control de acceso y la seguridad:

  • iat (Issued At): Indica el momento exacto en el que se emitió el token, representado como un sello de tiempo Unix (segundos transcurridos desde el 1 de enero de 1970).
  • exp (Expiration Time): Define el límite temporal a partir del cual el token deja de ser aceptable para su procesamiento, expresado también en formato de tiempo Unix.

El análisis de estas marcas de tiempo permite determinar la vigencia operativa de las credenciales presentadas por un cliente.

Funcionamiento del Decodificador JWT

Este decodificador procesa la cadena de texto introducida en el campo de entrada para extraer y estructurar la información subyacente de manera inmediata. Al pegar un token en el campo de texto, la herramienta realiza las siguientes operaciones de análisis y visualización:

  • Header: Muestra la cabecera decodificada y formateada como JSON limpio.
  • Payload: Muestra el contenido de la carga útil formateado como JSON.
  • Algoritmo: Extrae y expone el algoritmo criptográfico declarado en el Header.
  • Tipo: Muestra el tipo de token identificado.
  • Emitido el: Traduce el valor numérico de la declaración iat a un formato de fecha y hora legible.
  • Expira: Traduce el valor numérico de la declaración exp a un formato de fecha y hora legible.
  • Caracteres: Indica la longitud total del JWT introducido.

Adicionalmente, la herramienta evalúa de forma automática la validez temporal del token basándose en la declaración de expiración (exp) y muestra una etiqueta de estado con uno de los siguientes valores:

  • Válido: El tiempo actual es posterior a la fecha de emisión y anterior a la fecha de expiración.
  • Expirado: El tiempo actual ha superado el límite definido en la declaración exp.
  • Aún no válido: El tiempo actual es anterior a la fecha de emisión o activación del token.
  • Sin expiración: El token no contiene la declaración exp en su Payload.

Reglas de validación y gestión de errores de formato

Para que el proceso de decodificación se complete con éxito, el texto introducido debe cumplir con la especificación técnica de un JWT. La herramienta aplica reglas estrictas de validación y muestra mensajes de error específicos si el formato es incorrecto, ocultando las áreas de decodificación para evitar lecturas erróneas:

  • Formato general: Si la entrada no consta de tres secciones separadas por puntos, se muestra el mensaje: "No es un JWT válido — se esperaban tres partes separadas por puntos".
  • Codificación de la cabecera: Si la primera sección no se puede procesar debido a caracteres no válidos en su codificación, se muestra: "No se pudo decodificar el header — Base64URL no válido".
  • Codificación de la carga útil: Si la segunda sección presenta fallos de codificación, se muestra: "No se pudo decodificar el payload — Base64URL no válido".
  • Estructura JSON de la cabecera: Si la cabecera se decodifica pero no constituye un objeto JSON bien formado, se muestra: "El header no es JSON válido".
  • Estructura JSON de la carga útil: Si la carga útil decodificada no cumple con la sintaxis JSON, se muestra: "El payload no es JSON válido".
  • Longitud excesiva: Si el tamaño de la entrada supera los límites razonables para un token real, se muestra: "Es demasiado largo para ser un JWT real".

Si el campo de entrada está vacío, la herramienta permanece en estado "Listo. Pega un JWT para decodificarlo.". Al pulsar el botón para limpiar el contenido, el foco de la aplicación regresa automáticamente al campo de entrada principal.

Diferencia entre decodificar y verificar un JWT

Es fundamental distinguir entre la decodificación de un token y su verificación de seguridad.

La decodificación es un proceso puramente estructural. Consiste en revertir la codificación Base64URL para recuperar el texto plano en formato JSON. Cualquier persona que tenga acceso a la cadena del token puede decodificarla sin necesidad de poseer claves secretas o certificados. Esta herramienta realiza exclusivamente esta función de lectura y presentación de datos.

La verificación, por el contrario, es el proceso criptográfico que confirma la autenticidad e integridad del token. Para verificar un JWT, el sistema receptor debe aplicar el algoritmo especificado en el Header sobre el Header y el Payload, utilizando la clave secreta (en algoritmos simétricos) o la clave pública del emisor (en algoritmos asimétricos), y comparar el resultado con la firma del token.

Esta herramienta no verifica la firma del JWT ni solicita claves secretas o públicas para este fin. Por lo tanto, un estado de vigencia temporal "Válido" solo indica que el token no ha expirado según su declaración exp, pero no garantiza que el token no haya sido manipulado o falsificado por un tercero.

Privacidad y procesamiento local de datos

La privacidad de los datos introducidos es un aspecto crítico en el desarrollo y la depuración de software. El procesamiento de la información en esta herramienta se realiza bajo las siguientes condiciones:

  • Procesamiento local: Toda la lógica de decodificación, análisis de formato y traducción de marcas de tiempo se ejecuta directamente en el navegador web del usuario.
  • Sin transferencias: No se realiza ninguna subida de datos ni transmisión de los tokens introducidos hacia los servidores de BroBroGo.

Preguntas frecuentes

¿Es seguro pegar aquí mi JWT?
Sí. La decodificación ocurre por completo en tu navegador — tu token nunca se envía a BroBroGo.

¿Esto verifica la firma?
No. Solo decodifica el header y el payload para que los leas. Verificar la firma requiere la clave secreta o pública del emisor, algo que esta herramienta nunca te pide.

¿Cómo sé si mi token ha expirado?
El decodificador lee el campo exp y muestra una etiqueta de estado junto al token: válido, expirado, aún no válido o sin expiración.