Ir al decodificador Base64

RFC 4648 §5 · base64url

Decodificar Base64URL, con relleno incluido.

Pega Base64 URL-safe (de un JWT, un parámetro de URL, un desafío WebAuthn o la API de Gmail) y se decodifica convirtiendo de nuevo - y _ y restaurando el relleno = que falta. Pega un JSON Web Token completo y la cabecera y la carga útil se muestran en una tabla.

Actualizado el · Funciona íntegramente en tu navegador

Conversor de Decodificar Base64URL

0 caracteres
Resultado decodificado
Tipo: — Tamaño: 0 B
Opciones
General
Opciones de decodificación

Ctrl+Enter decodificar Ctrl+Shift+C copiar resultado Suelta un archivo en la entrada para cargarlo

Cómo decodificar Base64URL

  1. 01

    Pega el valor base64url

    Pega una cadena Base64 URL-safe o un JWT completo. Los caracteres - y _ y el relleno que falta se gestionan automáticamente.

  2. 02

    Lee el resultado decodificado

    Los valores simples se decodifican a texto o bytes. Un JWT se separa en cabecera y carga útil, con iat, nbf y exp mostrados como fechas.

  3. 03

    Copia o sigue decodificando

    Copia el JSON, dale formato o pulsa Enviar a la entrada si la carga útil contiene otro valor codificado.

Base64 frente a Base64URL

Base64 estándar usa + y /, que significan algo en las URL y los nombres de archivo, y rellena con =, que hay que codificar con porcentajes en una cadena de consulta. Base64URL, definido en la sección 5 de la RFC 4648, cambia solo esos caracteres para que el valor pueda viajar en una URL sin alterarse:

Diferencias entre Base64 estándar y Base64URL
Base64Base64URL
Valor 62+-
Valor 63/_
Relleno= obligatorionormalmente omitido
Definido enRFC 4648 §4RFC 4648 §5

Los otros 62 caracteres son idénticos, así que la conversión es un simple intercambio de caracteres más el relleno.

Cómo restaurar el relleno que falta

Muchos decodificadores estrictos rechazan la entrada sin relleno. La regla para volver a añadirlo depende solo de la longitud de la cadena módulo 4:

  • resto 0: no hace falta relleno;
  • resto 2: añade ==;
  • resto 3: añade =;
  • resto 1: imposible en Base64 válido; el valor está truncado.

Este decodificador aplica la regla por ti e informa de un valor truncado en lugar de devolver basura en silencio.

Dónde te encuentras base64url

  • JSON Web Tokens: la cabecera, la carga útil y la firma son tres segmentos base64url unidos por puntos. La firma se muestra pero no se verifica, porque para eso hace falta la clave.
  • WebAuthn y passkeys: desafíos, identificadores de credencial y datos del cliente.
  • OAuth PKCE: el code_challenge es un resumen SHA-256 en base64url.
  • API de Gmail: los cuerpos de los mensajes y los adjuntos van codificados en base64url.
  • Identificadores cortos y tokens en URL, cookies y nombres de archivo.

Decodificar base64url en código

# Python: urlsafe_b64decode still needs the padding back
import base64
def b64url_decode(s: str) -> bytes:
    return base64.urlsafe_b64decode(s + "=" * (-len(s) % 4))

// Node.js 16+
Buffer.from(token, "base64url").toString("utf8");

// Go
base64.RawURLEncoding.DecodeString(s)

// Java 8+: the URL decoder accepts unpadded input
Base64.getUrlDecoder().decode(s);

Para Base64 estándar y más lenguajes, consulta la página principal para decodificar Base64.

Más decodificadores

Otras formas de decodificar Base64.

Preguntas

Decodificar Base64URL: preguntas frecuentes.

¿Cómo decodifico Base64URL?

Sustituye - por + y _ por /, añade relleno = hasta que la longitud sea múltiplo de cuatro y decodifica como Base64 normal. Esta página hace las tres cosas automáticamente: pega el valor y el resultado decodificado aparece al instante.

¿Base64URL es lo mismo que la codificación URL?

No. La codificación URL (codificación por porcentajes) escapa caracteres sueltos como %XX. Base64URL es una variante de Base64 que convierte bytes a un alfabeto seguro para URL. Si un valor contiene %2B o %3D, es Base64 codificado por porcentajes: decodifica primero los porcentajes.

¿Puedo decodificar un JWT con esta herramienta?

Sí. Pega el token completo y la cabecera y la carga útil se decodifican desde base64url y se muestran en una tabla, con las marcas de tiempo convertidas en fechas. La firma se muestra pero no se verifica, porque eso requiere la clave secreta o pública.

¿Por qué Python da «Incorrect padding» con entradas base64url?

base64.urlsafe_b64decode espera el relleno = que base64url suele omitir. Añade "=" * (-len(s) % 4) a la cadena antes de decodificar, como en el ejemplo de esta página.