Cargando aplicación...
Preparando tu experiencia meskeIA
Codifica y decodifica texto en Base64, URL y Hexadecimal
Guía completa de los tres formatos de codificación más usados en desarrollo web
| Formato | Charset | Overhead | Ejemplo ("Hola") | Uso principal |
|---|---|---|---|---|
| Base64 | A–Z, a–z, 0–9, +, / | +33% | SG9sYQ== | MIME, JWT, Data URIs, APIs |
| Base64url | A–Z, a–z, 0–9, -, _ | +33% | SG9sYQ | URLs, cookies, tokens OAuth |
| URL Encoding | ASCII + %XX para el resto | Variable | Hola (sin cambios) | Query strings, form data |
| Hexadecimal | 0–9, A–F | +100% | 48 6f 6c 61 | Hashes, colores, depuración |
| Sin codificar | Cualquier byte | 0% | Hola | Almacenamiento local, binarios |
Cuando una API acepta JSON pero necesitas enviar imágenes o archivos binarios, codifica en Base64 e incluye el resultado como string en el payload JSON. Es el estándar para APIs de visión artificial (Google Vision, OpenAI GPT-4V).
El URL Encoding es imprescindible para parámetros de búsqueda y formularios HTML. Un espacio no codificado puede romper una URL; 'á' o 'ñ' causan errores en servidores que no esperan UTF-8 sin codificar.
El hexadecimal es el formato estándar para mostrar hashes (SHA-256, MD5), claves criptográficas y contenido binario de archivos. También es cómo se expresan los colores web (#FF5733) y las direcciones MAC de red.
Los JSON Web Tokens usan Base64url (no Base64 estándar) para codificar el header y payload. Al decodificar la segunda parte de un JWT puedes leer los claims del usuario sin necesitar la clave privada.
No. Base64 es una codificación reversible sin clave: cualquiera puede decodificarlo en segundos. El cifrado (AES, RSA) requiere una clave secreta para revertirlo. Usar Base64 para "ocultar" información es un error de seguridad grave. Para datos sensibles usa cifrado real y, para contraseñas, funciones de hashing como bcrypt o Argon2.
Depende del contexto. En query strings de formularios HTML (application/x-www-form-urlencoded), el estándar tradicional usa + para el espacio. En el resto de la URL (ruta, fragmento), se usa %20. JavaScript's encodeURIComponent() siempre usa %20, que es la forma más segura y compatible. Esta ambigüedad histórica es la razón por la que los servidores suelen aceptar ambos.
Usa Base64url cuando el resultado vaya a aparecer en una URL, nombre de archivo o cookie. Base64 estándar usa + y / que tienen significado especial en URLs (+ = espacio, / = separador de ruta). Base64url los reemplaza por - y _ que son seguros en URLs sin percent-encoding. JWT, OAuth 2.0 y muchas APIs modernas usan exclusivamente Base64url.
Un Data URL tiene el formato data:[tipo-MIME];base64,[datos]. Permite embeber archivos directamente en HTML o CSS sin petición HTTP adicional. Ejemplo: <img src="data:image/png;base64,iVBORw0...">. Es útil para iconos pequeños (<2KB), pero no para imágenes grandes porque no se cachean por separado y aumentan el tamaño del documento principal.
Un byte tiene 8 bits, que puede representar valores del 0 al 255 (2⁸ = 256 valores). En hexadecimal, cada dígito representa 4 bits (un nibble), por lo que necesitas exactamente 2 dígitos hex para representar los 8 bits de un byte. Por ejemplo, el byte 255 en decimal es FF en hex (F=1111 en binario, FF=11111111). Esto hace el hex compacto y fácilmente convertible a binario.
encodeURI() codifica una URL completa y deja sin codificar los caracteres con significado especial en URLs (/, :, ?, #, &, =, @). encodeURIComponent() codifica todo excepto letras, dígitos y - _ . ! ~ * ' ( ), ideal para valores de parámetros. Regla simple: usa encodeURIComponent() para codificar valores individuales de query string; usa encodeURI() solo si necesitas codificar una URL entera que ya tiene su estructura.
Base64 procesa los datos en grupos de 3 bytes (24 bits) y los convierte en 4 caracteres. Si los datos no son múltiplos de 3 bytes, se añaden bytes de relleno y se marca con = al final: un = significa que el último grupo tenía 2 bytes originales; == significa que tenía 1 byte. El receptor usa el padding para saber cuántos bytes reales había. Base64url suele omitir el padding para URLs más limpias.
Usa Base64 para transportar datos binarios (imágenes, archivos) por canales de texto como JSON o email. Usa URL Encoding para parámetros en URLs y formularios web, especialmente con caracteres especiales y no ASCII. Usa Hexadecimal para representar hashes criptográficos, valores de color (#RGB), claves y contenido binario donde necesites legibilidad byte a byte. Cada formato tiene su dominio natural; mezclarlos incorrectamente genera errores difíciles de depurar.
Si generas tokens de sesión, reset de contraseña o CSRF, usa siempre Base64url. Los + y / del Base64 estándar en URLs causan bugs silenciosos difíciles de reproducir.
Copia cualquier JWT y pégalo en jwt.io para decodificarlo visualmente. El payload (segunda parte) es solo Base64url — cualquiera puede leerlo, nunca pongas secretos ahí.
Un error común es codificar en URL algo que ya estaba codificado: %20 se convierte en %2520. Siempre decodifica antes de re-codificar. DevTools muestra los valores reales sin doble encoding.
Base64 añade 33%. Hex añade 100% (cada byte → 2 chars). URL encoding varía: caracteres ASCII sin cambio, otros hasta +12 chars (%XX%XX). Elige según el canal, no solo la legibilidad.
#RGB es shorthand de #RRGGBB cuando los dígitos se repiten: #F80 equivale a #FF8800. Hex en minúsculas (#ff8800) es más común en código; mayúsculas (#FF8800) en herramientas de diseño.
Si recibes Base64 de usuarios y lo conviertes a archivo, valida los magic bytes reales del contenido, no el tipo declarado en el prefijo data URI. Un PNG malicioso puede declararse como imagen/jpeg.