Subir un archivo
  1. base64hub
  2. Herramientas web y de tokens
  3. Base64URL a Base64

Convertidor de Base64URL a Base64: restaura el relleno

Pega una cadena Base64URL, como un segmento de JWT, y recupera el Base64 estándar con +, / y el número correcto de signos =.

Gratis sin registro, sin límites Local no se sube nada Actualizado 27 oct 2026
Entrada 0Bytes 0 BSalida 0

Se procesa en tu navegador. Esta página no puede enviar tus datos a ninguna parte – cómo lo sabemos

Cómo convertir Base64URL a Base64

  1. Pega el Base64URL en Entrada · Base64URL. El relleno es opcional, y los + y / estándar en la entrada tampoco son problema.
  2. El Base64 estándar aparece en Salida · Base64, con - y _ convertidos en + y / y el relleno restaurado.
  3. Bajo la salida, Relleno (=) está activado por defecto; Ajuste de línea puede cortar el resultado a 64 caracteres para PEM o a 76 para MIME.
  4. Usa Copiar salida. El selector Base64 → Base64URL, o Base64 a Base64URL, hace la conversión contraria.

Cuánto relleno añadir

Base64 trabaja en grupos de 4 caracteres. Base64URL suele quitar los signos = que completan el último grupo, así que la longitud te dice cuántos hay que devolver:

Longitud mod 4Relleno que añadirEjemplo
0ningunoeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 (36 caracteres)
2==PDw_Pz8-Pg (10) se convierte en PDw/Pz8+Pg==
3=eyJyb2xlIjoiYWRtaW4-In0 (23) se convierte en eyJyb2xlIjoiYWRtaW4+In0=
1no válidoun único carácter sobrante no puede contener un byte entero

El conocido payload de ejemplo eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ tiene 70 caracteres, resto 2, así que se convierte en la misma cadena con == al final. La guía del relleno tiene el razonamiento completo.

Por qué podrías necesitar Base64 estándar

Muchos decodificadores solo aceptan el alfabeto estándar, y fallan de maneras distintas cuando reciben Base64URL:

  • GNU coreutils base64 -d imprime lo que haya decodificado hasta el primer - o _ y después base64: invalid input.
  • Java Base64.getDecoder() lanza IllegalArgumentException; Base64.getUrlDecoder() es el adecuado para entradas URL-safe.
  • .NET Convert.FromBase64String lanza una FormatException ante -, _ o un = que falta.
  • Python base64.b64decode es el peligroso: por defecto descarta sin error los caracteres que no pertenecen al alfabeto estándar. b64decode("PDw_Pz8-Pg==") devuelve b'<<\x0f\xcf\xc3\xe0' en lugar de b'<<???>>'.

El último caso merece una prueba en cualquier código que maneje tokens. Unos bytes erróneos sin excepción suelen aflorar mucho después, como una verificación de firma fallida o datos corruptos.

Base64URL a Base64 en código

import base64

def b64url_to_bytes(s: str) -> bytes:
    return base64.urlsafe_b64decode(s + "=" * (-len(s) % 4))

b64url_to_bytes("PDw_Pz8-Pg")                              # b'<<???>>'
base64.b64encode(b64url_to_bytes("PDw_Pz8-Pg")).decode()   # 'PDw/Pz8+Pg=='

-len(s) % 4 es el número de signos = que faltan: 0, 1 o 2 en una entrada válida. urlsafe_b64decode necesita el relleno, y por eso se añade antes de la llamada.

function b64urlToB64(s) {
  const b = s.replace(/-/g, "+").replace(/_/g, "/");
  return b + "=".repeat((4 - (b.length % 4)) % 4);
}
b64urlToB64("PDw_Pz8-Pg");   // 'PDw/Pz8+Pg=='

En Node.js, Buffer.from(s, "base64url").toString("base64") hace lo mismo en una sola llamada. Consulta las páginas de Python, Java y C# para ver los decodificadores URL-safe de cada biblioteca estándar.

Problemas habituales

  • “el último grupo de caracteres está incompleto”. La longitud deja un resto de 1. Se perdió parte de la cadena, a menudo en un salto de línea o porque la URL se truncó.
  • Un . en la entrada. Los JWT unen tres segmentos Base64URL con puntos. Convierte los segmentos de uno en uno; el decodificador JWT acepta el token entero.
  • %3D en la cadena. El valor se codificó con porcentajes encima del Base64URL. Decodifícalo antes con decodificar URL.

Preguntas frecuentes

¿Cómo vuelvo a añadir el relleno a un Base64URL?

Rellena el final con = hasta llegar a un múltiplo de 4 caracteres: dos signos para un resto de 2 y uno para un resto de 3. Un resto de 1 no puede darse en datos válidos. Este convertidor lo hace por ti.

¿Por qué falla base64 -d con un JWT?

El base64 -d de GNU solo conoce el alfabeto estándar y se detiene con invalid input en el primer - o _. Convierte antes el segmento aquí, o usa basenc --base64url -d, que lee el alfabeto URL-safe.

¿Y si a la cadena le sobra un carácter?

Una cadena Base64URL cuya longitud deja un resto de 1 al dividirla entre 4 está cortada o tiene un carácter de más. El convertidor avisa de que el último grupo está incompleto; revisa cómo se copió el valor.

¿Necesito Base64 estándar para leer un JWT?

No en este sitio: el decodificador JWT y el decodificador Base64URL leen Base64URL directamente. Convierte a Base64 estándar cuando otra herramienta o biblioteca solo acepte esa forma.