Codifica o decodifica Base64, Base64URL, codificación porcentual de URL, entidades HTML y hexadecimal mientras escribes, con soporte completo de UTF-8.
Nada de lo que introduces se guarda: se convierte y se devuelve en la misma solicitud.
Acerca de Codificar / Decodificar
Un token en un log, una cadena de consulta en una redirección, un correo lleno de &: el texto codificado aparece por todas partes en el trabajo. Pégalo aquí, elige el formato y ve el resultado codificado o decodificado mientras escribes.
Qué hace
Base64, Base64URL (estilo JWT, sin relleno), codificación porcentual de URL, entidades HTML y hexadecimal.
UTF-8 completo: tildes, hindi, chino y emoji sobreviven a la ida y vuelta.
El relleno Base64 que falta se añade y se avisa, nunca se corrige en silencio.
Los bytes que no son texto se muestran en hexadecimal en lugar de caracteres ilegibles.
Un clic para volver a usar la salida como entrada e invertir la dirección.
Cómo funciona
1Elige el formato y si quieres codificar o decodificar.
2Pega tu texto: el resultado se actualiza mientras escribes.
3Copia la salida o úsala como siguiente entrada.
Ejemplo práctico: leer un JWT
Un JSON Web Token son tres partes Base64URL unidas por puntos: cabecera, carga útil y firma. Pega la parte central, elige Base64URL y decodifica, y verás las claims JSON, como el id de usuario y la caducidad exp (un timestamp Unix que puedes leer con el Conversor de timestamp Unix). Decodificar no es verificar: cualquiera puede leer la carga útil de un JWT, y solo la comprobación de la firma en el servidor demuestra que no se ha modificado.
Los casos que dan problemas en el trabajo
Un Base64 al que se le ha quitado el relleno, algo que algunos sistemas hacen para ahorrar espacio, falla en los decodificadores estrictos; esta herramienta añade los signos = que faltan y te lo dice. Para muchos servidores un + en una cadena de consulta significa un espacio, así que un valor Base64 pegado en un enlace sin codificar llega dañado; codifícalo como componente de URL o usa Base64URL. El texto codificado dos veces aparece como %2520 o & y hay que decodificarlo dos veces.
Qué acepta cada decodificador
La decodificación Base64 ignora espacios y saltos de línea, así que un valor partido en varias líneas, como en un correo, se decodifica tal cual se pega. Base64URL también acepta + y /, pero Base64 normal rechaza - y _, por lo que una parte de un JWT necesita la opción Base64URL. La decodificación hex omite espacios, dos puntos, comas, guiones y prefijos 0x, así que 48:65:6c:6c:6f y 0x48 0x65 funcionan. La decodificación URL convierte + en espacio, así que un signo más literal debe llegar como %2B. La codificación HTML escapa los cinco caracteres & < > " y '; la decodificación HTML entiende todas las entidades con nombre de HTML5, como y …, y las numéricas como ₹ para el símbolo de la rupia.
Ejemplos resueltos: qué produce cada formato
La codificación URL de esta herramienta codifica un solo valor, como un parámetro de consulta, así que escapa todos los caracteres reservados: https://example.com/a b?x=1&y=2 se convierte en https%3A%2F%2Fexample.com%2Fa%20b%3Fx%3D1%26y%3D2. Codifica solo el valor que insertas en un enlace, nunca el enlace completo. El texto fuera de ASCII se codifica como sus bytes UTF-8: café ₹ se convierte en caf%C3%A9%20%E2%82%B9, y el hexadecimal muestra los mismos bytes, é como c3 a9 y ₹ como e2 82 b9. Base64 de user:pass es dXNlcjpwYXNz, el valor que lleva una cabecera HTTP Basic Authorization (RFC 7617); por eso cualquiera que vea esa cabecera puede leer la contraseña.
Los bytes eran UTF-8, pero en algún punto se leyeron como Latin-1 o Windows-1252 antes de codificarse. Aquí la decodificación muestra los bytes tal como son; la corrección corresponde al sistema que los generó.
¿Puedo decodificar un archivo entero?
Pega texto de hasta 200.000 caracteres. En archivos binarios como imágenes, los bytes decodificados se muestran en hexadecimal en lugar de convertirse en una descarga.
¿Base64 es cifrado?
No. Base64 solo cambia la forma de escribir los bytes para que sobrevivan en sistemas que esperan texto plano. Cualquiera puede decodificarlo; no lo uses nunca para ocultar una contraseña o un secreto.
¿Qué diferencia hay entre Base64 y Base64URL?
Base64URL cambia "+" y "/" por "-" y "_" y normalmente elimina el relleno "=", de modo que el resultado es seguro dentro de URL y nombres de archivo. Los JSON Web Tokens lo usan.
¿Se guarda mi texto?
No. Se convierte y se devuelve en la misma petición y nunca se escribe en una base de datos ni en un registro.
¿Por qué la salida codificada difiere de encodeURIComponent de JavaScript?
Esta herramienta también escapa ! ' ( ) y *, que encodeURIComponent deja como están, así que it's (50%) off! se convierte en it%27s%20%2850%25%29%20off%21. Ambas formas se decodifican al mismo texto, y escapar esos caracteres siempre es seguro dentro de un valor de consulta. Un espacio se convierte en %20, no en +; la forma + viene de la codificación de formularios HTML, y el decodificador de aquí lee las dos.
¿Cómo codifico o decodifico texto en Base64 desde la línea de comandos?
En Linux o Mac, echo -n 'Hello, World' | base64 da SGVsbG8sIFdvcmxk, y echo 'SGVsbG8sIFdvcmxk' | base64 --decode lo devuelve a texto. Si omites -n, echo añade un salto de línea que también se codifica y obtienes SGVsbG8sIFdvcmxkCg==: la razón más común por la que dos herramientas no coinciden. En PowerShell, [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('Hello, World')) codifica y [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SGVsbG8sIFdvcmxk')) decodifica. Esta página codifica exactamente los caracteres que pegas, en UTF-8, sin añadir salto de línea.
¿Cómo decodifico una imagen en Base64 o un data URI?
Pega solo la parte que va después de la coma: en data:image/png;base64,iVBORw0KGgo... es iVBORw0KGgo..., porque el prefijo data:image/png;base64, no es Base64 y la cadena completa se rechaza. Elige Base64 y Decode. Los bytes que no son texto se muestran en hexadecimal en lugar de dibujarse como imagen, lo que basta para saber qué archivo es: un PNG empieza por 89 50 4e 47, un JPEG por ff d8 ff y un archivo .docx, .xlsx u otro basado en ZIP completo por 50 4b 03 04. Para ver la imagen, pega el data URI completo en la barra de direcciones del navegador. La entrada admite hasta 200.000 caracteres, unos 150.000 bytes de archivo.
¿Por qué Base64 ocupa un tercio más que el original?
Base64 escribe cada 3 bytes como 4 caracteres y rellena el último grupo con = hasta un múltiplo de 4 (RFC 4648), así que la salida mide 4/3 de los bytes de entrada, redondeado hacia arriba. Hello, World son 12 bytes y se convierte en los 16 caracteres SGVsbG8sIFdvcmxk. Se cuentan bytes UTF-8, no letras: café son 4 caracteres pero 5 bytes y da Y2Fmw6k=, y ₹100 son 6 bytes y da 4oK5MTAw. Los adjuntos de correo crecen algo más porque MIME corta el Base64 en líneas de 76 caracteres como máximo (RFC 2045); esta página ignora esos saltos de línea al decodificar. Base64URL sin relleno solo ahorra los signos =.