También disponible en: English · Português · Français · العربية
Codificador y decodificador de base64
Convierte texto a base64 y viceversa directamente en el navegador, con los acentos, los emojis y cualquier idioma intactos.
Qué es un codificador y decodificador base64
Base64 no es cifrado ni compresión: es una forma de escribir bytes arbitrarios usando solo 64 caracteres imprimibles (A-Z, a-z, 0-9, + y /), para que puedan viajar por cualquier canal que solo entienda texto plano — un JSON, un atributo HTML, la cabecera Authorization de una petición, el cuerpo de un correo. Donde hay bytes que no son texto, base64 los convierte en algo que un parser de texto no va a romper.
Esta herramienta hace las dos direcciones: codifica cualquier texto a base64 y decodifica base64 de vuelta a texto, todo dentro del propio navegador. La entrada nunca sale del ordenador — no hay ningún servidor de por medio que reciba lo que pegas.
Cómo se usa
- Elige Codificar o Decodificar en los dos botones de Modo, según lo que tengas entre manos: texto que quieres convertir a base64, o base64 que quieres leer.
- Ajusta el alfabeto si lo necesitas. Estándar usa + y / con relleno =; Seguro para URL cambia esos símbolos por - y _, el que esperan los JWT y los parámetros de una URL. En modo codificar puedes activar además el corte de línea cada 76 caracteres, la convención MIME del correo electrónico.
- Pega el texto y copia el resultado. Se recalcula con cada tecla que pulsas, la fila de abajo te da los recuentos de caracteres y bytes, y el botón Copiar lo manda al portapapeles sin que tengas que seleccionar nada.
Por qué el atajo de una línea con btoa está mal
La respuesta rápida que todo el mundo copia es btoa(texto), la función nativa del navegador. Funciona perfecto mientras el texto sea ASCII puro. En cuanto aparece un acento, un emoji o cualquier carácter no latino, btoa falla — y falla de dos formas distintas según de qué carácter se trate, lo cual es peor que si simplemente no funcionara nunca.
Con un carácter del rango Latin-1, como una tilde, falla en silencio. btoa("café") devuelve Y2Fm6Q==, sin ningún error ni aviso. Ha codificado la é como un solo byte (e9), el punto de código Latin-1, en vez de los dos bytes que UTF-8 realmente necesita (c3 a9). El resultado correcto es Y2Fmw6k=. Si le pasas el Y2Fm6Q== de btoa a cualquier decodificador que espere UTF-8 —prácticamente cualquiera moderno— obtienes caf seguido del carácter de reemplazo, y en ningún punto salta un error que te avise de que algo se rompió.
Con cualquier carácter por encima de U+00FF, en cambio, btoa deja de fallar en silencio y revienta directamente: btoa("👍"), btoa("€") y btoa("日本語") lanzan las tres un InvalidCharacterError. Es el mismo bug de fondo —btoa trabaja carácter a carácter en vez de byte a byte— pero aquí al menos te enteras, que es mejor que la corrupción silenciosa de arriba, aunque igualmente rompe cualquier flujo que no lo esperaba.
Esta herramienta hace lo que btoa debería hacer: convierte el texto a bytes UTF-8 primero, y codifica esos bytes después. Va y vuelve intacto en cualquier idioma: «café» (5 bytes) da Y2Fmw6k=, «👍» (4 bytes) da 8J+RjQ==, «日本語» (9 bytes) da 5pel5pys6Kqe, «مرحبا» (10 bytes) da 2YXYsdit2KjYpw==. Fíjate en que base64 cuenta bytes, no caracteres — por eso la fila de recuentos de la herramienta te da los dos por separado: «café» son 4 caracteres pero 5 bytes, y «👍» es un carácter, 4 bytes, y el propio .length de JavaScript sobre ese string dice 2, por los surrogate pairs de UTF-16.
Base64 convierte cada 3 bytes de entrada en 4 caracteres de salida, una expansión de 4/3 —alrededor de un 33%— redondeada hacia arriba al múltiplo de 4 más cercano con relleno =. Medido: 100 bytes se convierten en 136 caracteres, 3.000 bytes en 4.000. Y el alfabeto que elijas cambia el resultado exacto aunque los bytes sean los mismos: los mismos tres bytes dan +/++ en base64 estándar y -_-- en la variante segura para URL.
Límites honestos
Base64 es una codificación, no un cifrado. Cualquiera con dos minutos y un decodificador la revierte — no oculta absolutamente nada, así que no la uses nunca para meter un secreto en un sitio donde no debería estar visible. Su único trabajo es mover bytes por canales que solo aceptan texto, no protegerlos de nadie.
Esta herramienta trabaja con texto, no con archivos. Al decodificar, los bytes resultantes pasan por un decodificador UTF-8 estricto: si pegas el base64 de un PNG, un zip o cualquier binario, te va a decir que esos bytes no forman texto en vez de enseñarte el archivo. Es intencional — para convertir archivos hace falta otra herramienta, esta está pensada para strings.
Nada de lo que pegues sube a ningún sitio, y por eso conviene usar una herramienta de navegador precisamente para esto: si metes un token de API o el dato de un cliente en un codificador que corre en un servidor ajeno, se lo estás mandando a ese servidor, lo pidas o no. Aquí el texto no sale de la pestaña, y se pierde en cuanto recargas — no se guarda nada.
Por qué es gratis
Todo el cálculo lo hace tu propio navegador con APIs que ya trae incorporadas — no hay ningún modelo detrás, ninguna llamada a un servidor que cueste dinero cada vez que alguien codifica un string. Mantener esto gratis, sin cuenta y sin límite de uso no cuesta prácticamente nada, así que no hay motivo para cobrarlo ni para pedirte un email a cambio.