Codificador/Decodificador Base64

Codifica texto a Base64 o decodifica Base64 a texto

Leer la guía completa

Base64 es un esquema de codificación binario a texto que representa datos binarios usando 64 caracteres ASCII imprimibles (A-Z, a-z, 0-9, +, /). Fue estandarizado en RFC 4648 (2006) y es fundamental para la transmisión de datos en internet. El nombre 'Base64' proviene del uso de 64 caracteres como base numérica. Cada 3 bytes de datos binarios se convierten en 4 caracteres Base64 (incremento del 33% en tamaño). La codificación funciona dividiendo datos en grupos de 6 bits (2^6 = 64 valores posibles). El padding '=' se agrega cuando los datos no son múltiplo de 3 bytes. Base64 es ubicuo en desarrollo web: data URIs (imágenes incrustadas en HTML/CSS), tokens JWT (JSON Web Tokens para autenticación), Basic Auth HTTP (usuario:contraseña codificado), adjuntos de email (MIME), y APIs REST que transmiten binarios en JSON. En LATAM, es esencial para integraciones con APIs de Mercado Pago, CFDI/facturación electrónica en México (SAT), facturación DIAN en Colombia, y servicios cloud. Los desarrolladores lo usan diariamente para debugging, testing de APIs y manejo de archivos.

Convierte imágenes pequeñas (iconos, logos < 10KB) a Base64 para incrustarlas directamente en HTML/CSS, eliminando solicitudes HTTP adicionales y mejorando rendimiento. Sintaxis: <img src='data:image/png;base64,iVBORw0KGgo...'> o background-image: url('data:image/svg+xml;base64,...'). Ideal para iconos SVG, favicons y sprites. No recomendado para imágenes grandes (aumenta tamaño HTML y no se cachea). En LATAM, popular para optimizar sitios de e-commerce en Mercado Libre, Tiendanube, WooCommerce México.

HTTP Basic Authentication codifica credenciales en Base64: 'usuario:contraseña' → 'dXN1YXJpbzpjb250cmFzZcOxYQ=='. El header Authorization: Basic dXN1YXJpbzpjb250cmFzZcOxYQ== se envía con cada solicitud. IMPORTANTE: Base64 NO es encriptación—es codificación reversible. Siempre usa HTTPS para transmitir credenciales. APIs de Mercado Pago, Stripe México, PayU Colombia, dLocal Argentina usan Basic Auth para autenticación de clientes.

JSON no soporta datos binarios nativamente. Para enviar archivos (imágenes, PDFs, documentos) vía API REST, se codifican en Base64 y se incluyen como string en el JSON: {"archivo": "JVBERi0xLjQK...", "nombre": "factura.pdf"}. APIs de facturación electrónica en México (SAT CFDI), Colombia (DIAN), Argentina (AFIP) requieren XMLs y PDFs codificados en Base64. También usado en integraciones con Salesforce, HubSpot, Zoho CRM populares en empresas LATAM.

JSON Web Tokens (JWT) usan Base64URL (variante sin +, /, =) para codificar header, payload y firma: eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoianVhbiJ9.firma. JWTs son estándar para autenticación en aplicaciones web modernas. Decodificar JWTs ayuda a debuggear problemas de autenticación—puedes ver claims (usuario, roles, expiración) sin la clave secreta. Frameworks populares en LATAM (Laravel, Django, Express, Spring Boot) generan JWTs automáticamente.

Bases de datos relacionales (MySQL, PostgreSQL, SQL Server) manejan mejor texto que binarios. Codificar archivos pequeños en Base64 permite almacenarlos en columnas VARCHAR/TEXT sin problemas de encoding. Útil para firmas digitales, sellos, pequeñas imágenes de perfil. MongoDB y Firebase también usan Base64 para documentos binarios. En LATAM, común en sistemas legacy de bancos, gobierno y empresas que no usan almacenamiento de objetos (S3, Azure Blob).

La codificación Base64 convierte datos binarios en texto usando un alfabeto de 64 caracteres. Proceso: 1) Los datos de entrada se dividen en grupos de 3 bytes (24 bits). 2) Cada grupo de 24 bits se divide en 4 grupos de 6 bits. 3) Cada grupo de 6 bits (valores 0-63) se mapea a un carácter del alfabeto Base64: A-Z (0-25), a-z (26-51), 0-9 (52-61), + (62), / (63). 4) Si los datos no son múltiplo de 3 bytes, se agregan caracteres '=' de padding (1 o 2). Ejemplo: 'Hola' en UTF-8 = 48 6F 6C 61 (hex) → 01001000 01101111 01101100 01100001 (binario) → se divide en grupos de 6 bits → 010010 000110 111101 101100 011000 01 (+padding) → índices 18, 6, 61, 44, 24, 16 → 'SG9sYQ==' (4 bytes padding porque 'Hola' tiene 4 bytes, no múltiplo de 3). La decodificación es el proceso inverso. Nuestra herramienta usa btoa()/atob() de JavaScript para texto ASCII y TextEncoder/TextDecoder para UTF-8 completo, garantizando compatibilidad con español (ñ, acentos) y emojis.

Base64 es universalmente soportado. Navegadores: btoa() y atob() desde IE10 (2012), Chrome 1, Firefox 1, Safari 1. Node.js: Buffer.from(str, 'base64') y buffer.toString('base64'). Python: base64.b64encode()/b64decode(). PHP: base64_encode()/base64_decode(). Java: Base64.getEncoder()/getDecoder() (Java 8+). LIMITACIONES: btoa()/atob() nativos solo manejan caracteres Latin-1 (0-255). Para UTF-8 completo (español con ñ, emojis), se requiere TextEncoder: btoa(String.fromCharCode(...new TextEncoder().encode(texto))). Nuestra herramienta maneja esto automáticamente. Base64 aumenta tamaño 33%—no usar para archivos grandes en producción (usar multipart/form-data o presigned URLs de S3). En LATAM, donde conexiones móviles pueden ser lentas, evitar Base64 para imágenes > 10KB.

Preguntas frecuentes

¿Base64 es seguro? ¿Es encriptación?
NO, Base64 NO es encriptación ni seguridad. Es codificación reversible—cualquiera puede decodificar Base64 sin clave. Su propósito es representar datos binarios como texto, no proteger información. Nunca transmitas contraseñas, tokens secretos o datos sensibles codificados solo en Base64. Para seguridad, usa encriptación real (AES-256, RSA) y siempre HTTPS. En LATAM, es común ver desarrolladores novatos pensando que Base64 'encripta'—esto es un error grave de seguridad.
¿Por qué mi Base64 tiene caracteres '=' al final?
Los caracteres '=' son padding. Base64 procesa datos en grupos de 3 bytes (24 bits) y produce 4 caracteres. Si los datos no son múltiplo de 3, se agrega padding: 1 byte sobrante = '==', 2 bytes sobrantes = '='. 'Hola' (4 bytes) → 'SG9sYQ==' (1 byte extra + 2 padding). 'Hi' (2 bytes) → 'SGk=' (2 bytes + 1 padding). 'ABC' (3 bytes) → 'QUJD' (sin padding). Algunos sistemas (URLs, filenames) usan Base64URL que omite padding.
¿Cómo codifico imágenes en Base64 para HTML?
Arrastra tu imagen a nuestra herramienta o usa FileReader en JavaScript: const reader = new FileReader(); reader.onload = () => console.log(reader.result); reader.readAsDataURL(file). El resultado es un Data URI: 'data:image/png;base64,iVBORw0KGgo...'. Úsalo en <img src='data:image/png;base64,...'> o CSS background-image. IMPORTANTE: Solo para imágenes pequeñas (< 10KB). Imágenes grandes aumentan HTML y no se cachean. En LATAM, útil para emails HTML (Mailchimp, SendGrid) donde imágenes externas pueden bloquearse.
¿Cómo decodifico tokens JWT para debugging?
JWTs tienen 3 partes separadas por puntos: header.payload.signature. Header y payload son Base64URL. Para decodificar: 1) Copia solo la parte del payload (segunda sección). 2) Pégala en nuestra herramienta. 3) Verás el JSON con claims (usuario, roles, exp). NOTA: La firma (tercera parte) NO se puede verificar sin la clave secreta—solo garantiza que el token no fue modificado. Herramientas como jwt.io también decodifican JWTs. En LATAM, útil para debuggear autenticación en apps Laravel, Django, Spring Boot.
¿Por qué Base64 no funciona con emojis o caracteres especiales?
Las funciones nativas btoa()/atob() solo manejan caracteres Latin-1 (0-255 ASCII). Emojis y caracteres Unicode > 255 causan error. Solución: usar TextEncoder para convertir a UTF-8 primero. Nuestra herramienta hace esto automáticamente. Código correcto: const b64 = btoa(unescape(encodeURIComponent('Hola 🎉'))); Para español con ñ, acentos y emojis, nuestra herramienta garantiza codificación correcta usando UTF-8.
¿Cuál es la diferencia entre Base64 y Base64URL?
Base64URL es una variante diseñada para URLs y nombres de archivo. Diferencias: 1) Usa '-' en lugar de '+', 2) Usa '_' en lugar de '/', 3) Omite padding '='. Esto evita problemas porque +, / y = tienen significados especiales en URLs. JWTs usan Base64URL. Si necesitas incluir Base64 en URLs, usa Base64URL o codifica con encodeURIComponent(). Nuestra herramienta detecta automáticamente el formato al decodificar.
¿Cómo uso Base64 para autenticación HTTP Basic?
HTTP Basic Auth codifica 'usuario:contraseña' en Base64 y lo envía en header Authorization. Ejemplo: fetch(url, { headers: { 'Authorization': 'Basic ' + btoa('usuario:contraseña') } }). IMPORTANTE: 1) SIEMPRE usa HTTPS—Basic Auth es inseguro sin encriptación de transporte. 2) Base64 NO es seguro—cualquiera puede decodificarlo. 3) Considera OAuth 2.0 o API keys para producción. APIs de Mercado Pago, Stripe, PayPal usan Basic Auth para client_id:client_secret.
¿Base64 aumenta el tamaño de los archivos?
Sí, Base64 aumenta el tamaño aproximadamente 33%. 3 bytes binarios → 4 caracteres Base64. Un archivo de 100KB se convierte en ~133KB codificado. Además, si el Base64 se transmite en JSON, los caracteres de escape pueden aumentar más. Para archivos grandes, usa multipart/form-data (forms con enctype='multipart/form-data') o presigned URLs de S3/Azure Blob. Base64 es eficiente solo para datos pequeños (< 100KB) o cuando no hay alternativa (APIs que solo aceptan JSON).

Herramientas Relacionadas