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

Codificador Base64URL: Base64 URL-safe online

Codifica texto a Base64 URL-safe: - y _ sustituyen a + y /, y se elimina el = final. El resultado va directo a una URL, una cookie o un token sin ningún escape adicional.

Gratis sin registro, sin límites Local no se sube nada RFC 4648 alfabeto de la sección 5 Actualizado 27 oct 2026
Entrada 0 BSalida 0 BTamaño –

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

Cómo codificar en Base64URL

  1. Escribe o pega el texto en Entrada · texto.
  2. Copia el Base64URL de Salida · Base64. URL-safe (- _) y Sin relleno (=) ya vienen marcados en esta página.
  3. Si el receptor quiere relleno, desmarca Sin relleno (=). Si quiere Base64 estándar, desmarca también URL-safe (- _), o usa el codificador Base64.
  4. Copia la salida o descárgala como base64.txt.

Decodifica un valor con el decodificador Base64URL. Base64 a Base64URL convierte cadenas existentes entre los dos alfabetos.

Qué cambia respecto al Base64 estándar

Solo cambian tres caracteres. Todo lo demás, incluida la regla de 3 bytes por cada 4 caracteres, sigue igual:

Base64 estándarBase64URL
Valor 62+-
Valor 63/_
Relleno= obligatorionormalmente se omite
Definido enRFC 4648, sección 4RFC 4648, sección 5

En muchas cadenas cortas, las dos variantes solo se distinguen por el relleno. La diferencia de alfabeto aparece cuando un grupo de 6 bits vale 62 o 63, algo que producen caracteres como ? y > y muchos bytes no ASCII:

EntradaEstándarBase64URL, sin relleno
Hi!SGkhSGkh
?>?>Pz4/Pg==Pz4_Pg
subjects?_dc3ViamVjdHM/X2Q=c3ViamVjdHM_X2Q
https://example.com/?q=1aHR0cHM6Ly9leGFtcGxlLmNvbS8/cT0xaHR0cHM6Ly9leGFtcGxlLmNvbS8_cT0x

Base64 frente a Base64URL cuenta la historia y las diferencias al decodificar con más detalle.

Por qué las URL necesitan su propio alfabeto

Cada uno de los tres caracteres estándar significa algo en una URL. / separa segmentos de la ruta, = separa nombres de valores en una query string, y los decodificadores de formularios leen + como un espacio. Un valor Base64 estándar como a+b/c== en un parámetro de consulta llega como a b/c== salvo que se escape cada carácter. La codificación con porcentajes lo arregla, pero convierte cada uno en tres caracteres (%2B, %2F, %3D).

Base64URL elige dos caracteres que no están reservados en las URL y quita el relleno, así que un valor se puede pegar sin cambios en una ruta, una query string, un fragmento, una cookie o un nombre de archivo. - y _ también son seguros en nombres de archivo en todos los sistemas de archivos habituales, a diferencia de /.

Dónde se usa Base64URL

  • JWT y JOSE. Todas las partes de un JSON Web Token son Base64URL sin relleno, según el RFC 7515. El decodificador JWT lee tokens; Base64 en JWT explica la estructura.
  • PKCE de OAuth. El code_challenge es el Base64URL del hash SHA-256 del code_verifier.
  • WebAuthn y passkeys. Los ID de credenciales y los desafíos viajan como Base64URL dentro de JSON.
  • Enlaces e ID. Los enlaces para compartir, los parámetros de URL firmados y los ID cortos generados a partir de bytes aleatorios lo usan para que la URL quede limpia.

Base64URL en código

Node.js tiene una codificación base64url integrada, y Python una función URL-safe a la que tienes que quitarle tú el relleno:

// Node.js
Buffer.from("subjects?_d").toString("base64url");   // "c3ViamVjdHM_X2Q"

// Browsers with Uint8Array.prototype.toBase64
new TextEncoder().encode("subjects?_d").toBase64({ alphabet: "base64url", omitPadding: true });
import base64, hashlib

base64.urlsafe_b64encode(b"subjects?_d").rstrip(b"=").decode()   # 'c3ViamVjdHM_X2Q'

# PKCE code_challenge, example from RFC 7636 appendix B
verifier = "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"
digest = hashlib.sha256(verifier.encode("ascii")).digest()
base64.urlsafe_b64encode(digest).rstrip(b"=").decode()
# 'E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM'

Más en Base64 en Node.js, JavaScript y Python, y la API del navegador en Uint8Array.toBase64.

Preguntas frecuentes

¿Qué es Base64URL?

La variante de Base64 segura para URL y nombres de archivo definida en el RFC 4648, sección 5. Usa - y _ como los dos últimos caracteres del alfabeto en lugar de + y /, y normalmente se escribe sin relleno =.

¿Por qué no codificar con porcentajes el Base64 normal?

Funciona, pero cuesta tres caracteres por cada +, / e =, y un escape olvidado convierte el + en un espacio al analizar la query string. Base64URL evita los dos problemas.

¿Debo conservar el relleno =?

JWT y la mayoría de los formatos URL-safe lo omiten, porque el = también hay que escaparlo en las URL y el decodificador puede deducir el relleno a partir de la longitud. Consérvalo solo si el sistema receptor lo exige: desmarca Sin relleno.

¿Cómo genero un code_challenge de PKCE?

Calcula el SHA-256 del code_verifier y codifica en Base64URL los 32 bytes del hash, sin relleno. Esta página codifica texto, no bytes de un hash, así que hazlo en código; el fragmento de abajo reproduce el ejemplo del RFC 7636.