🖼️ Convertidor de Imagen a Base64
Arrastra una imagen y conviértela al instante en una URI de datos Base64 para CSS, HTML o JSON. 100% local en tu navegador.
Arrastra y suelta una imagen aquí
o haz clic para buscar un archivo (PNG, JPG, SVG, WebP, GIF)
Resultado en Base64
Cómo Convertir una Imagen a Base64 Online
Una URI de datos en Base64 toma una imagen que normalmente viviría en su propio archivo y la comprime dentro de una cadena de texto, lo bastante pequeña como para caber en un atributo HTML, una declaración CSS o un campo JSON. En lugar de que tu navegador haga un viaje aparte al servidor para buscar logo.png, la imagen viaja incrustada dentro del propio documento que la necesita. Este conversor construye esa cadena por completo en tu propio dispositivo, así que puedes pasar de archivo de imagen a código listo para pegar en el tiempo que tarda un arrastrar y soltar.
El flujo de trabajo es deliberadamente corto. Suelta un archivo PNG, JPG, SVG, WebP o GIF en la zona de arrastre de arriba, o haz clic en ella para abrir el selector de archivos habitual. En cuanto el navegador termina de leer el archivo, aparece una vista previa y el cuadro de resultado en Base64 se rellena automáticamente, sin ningún botón de "convertir" que pulsar y sin recargar la página.
- Elige tu imagen. Arrastra un archivo desde tu escritorio o gestor de archivos hasta la zona de arrastre, o haz clic para buscar uno. Cualquier cosa que tu navegador pueda mostrar como imagen, puede codificarla.
- Deja que se decodifique automáticamente. La herramienta lee los bytes puros de tu archivo usando la API FileReader del propio navegador y los codifica en una cadena Base64 en el instante en que el archivo se carga.
- Elige un formato de salida. Usa el menú desplegable Formato de Salida para alternar entre una cadena de URI de datos sin formato, una declaración CSS background-image ya lista, o una etiqueta HTML img completa.
- Copia o descarga el resultado. Haz clic en Copiar Código para llevarte el texto exacto al portapapeles, o en Descargar Texto si la cadena es larga y prefieres guardarla como archivo para usarla más tarde.
Como todo el proceso corre como JavaScript dentro de tu propia pestaña del navegador, no hay paso de subida, no hay que esperar en ninguna cola de servidor, y el único límite es la memoria de tu propio ordenador.
Entendiendo la Sintaxis de las URI de Datos
Cada cadena Base64 que produce esta herramienta sigue el mismo patrón definido por el esquema de URI de datos: data:[tipo-mime];base64,[datos-codificados]. El prefijo data: le dice al navegador que esto no es una URL normal que apunta a otro sitio, sino el propio contenido, llegando incrustado. El tipo MIME que le sigue de inmediato, algo como image/png, image/jpeg, image/svg+xml o image/webp, le indica al navegador exactamente cómo interpretar los bytes que vienen después, para que renderice un PNG como PNG y un SVG como SVG en lugar de adivinarlo por una extensión de archivo que ya no existe.
La marca ;base64 indica la codificación usada para el contenido, y todo lo que sigue a la coma es la imagen en sí, traducida de binario puro al alfabeto de 64 caracteres formado por mayúsculas, minúsculas, dígitos, más y barra. Un pequeño favicon de 16 por 16 puede producir una cadena de apenas unos cientos de caracteres, mientras que una fotografía detallada puede extenderse a cientos de miles de caracteres, todos en una sola línea sin cortes.
| Contexto | Sintaxis de Ejemplo |
|---|---|
| Fondo CSS | background-image: url(data:image/png;base64,iVBOR...); |
| Etiqueta HTML img | <img src="data:image/jpeg;base64,/9j/4AA..."> |
| URI de datos SVG en línea | data:image/svg+xml;base64,PHN2ZyB4b... |
| Propiedad personalizada CSS | --icono-cerrar: url(data:image/svg+xml;base64,...); |
Esta herramienta detecta el tipo MIME y realiza la codificación de forma automática según el archivo que sueltes, así que nunca tienes que escribir ese prefijo a mano, pero reconocer el patrón ayuda cuando estás depurando por qué una cadena pegada en el contexto equivocado se niega a renderizarse.
El 33% de Sobrepeso: Por Qué Base64 Pesa Más Que el Archivo Original
La codificación Base64 agrupa los datos binarios originales en bloques de 3 bytes y traduce cada bloque a 4 caracteres de texto imprimibles. Esa proporción de 3 a 4 la fija la matemática de la propia codificación, no el formato de imagen ni la compresión aplicada, y significa que toda cadena Base64 pesa aproximadamente un 33% más que el archivo del que proviene, antes de cualquier compresión adicional como gzip o Brotli que el servidor pueda aplicar encima.
En la práctica, eso significa que un icono de 60 KB se acerca a los 80 KB una vez codificado, y una fotografía de 300 KB se dispara a más de 400 KB. Para un único icono pequeño, esa diferencia resulta invisible para el usuario. Repetida en una página llena de miniaturas incrustadas, o incluida en un archivo CSS que se envía a cada visitante en cada carga de página, ese sobrepeso se acumula hasta convertirse en un documento genuinamente más pesado que servir esas mismas imágenes como archivos separados.
Vale la pena recordar que esta expansión ocurre encima del archivo, no en su lugar. Convertir un JPEG a Base64 no lo comprime más, solo cambia cómo se representan como texto esos mismos bytes ya comprimidos, así que cualquier optimización de imagen, como redimensionar una foto o pasarla a un formato como WebP, debe hacerse antes de codificarla, nunca después.
Cuándo Incrustar una Imagen Ayuda (y Cuándo Perjudica) el Rendimiento
Cada imagen referenciada con <img src="..."> o un url(...) de CSS dispara normalmente su propia petición HTTP. En conexiones HTTP/1.1 antiguas, los navegadores solo podían abrir un puñado de conexiones simultáneas por dominio, así que una página con docenas de iconos pequeños sufría de verdad ese sobrecoste de peticiones, e incrustar esos iconos como cadenas Base64 eliminaba por completo esos viajes extra. Ese es el caso original a favor de incrustar imágenes, y sigue siendo válido para gráficos pequeños y decorativos que aparecen una vez y casi nunca cambian.
Las conexiones modernas HTTP/2 y HTTP/3 multiplexan muchas peticiones sobre una sola conexión, lo que debilita bastante el argumento original. Pedir diez archivos externos pequeños por HTTP/2 ya no resulta ni de lejos tan costoso como hace una década, mientras que la penalización del 33% de Base64 no ha desaparecido. Eso vuelve a inclinar la balanza hacia los archivos enlazados para la mayoría de las imágenes cotidianas, reservando la incrustación para casos donde evitar aunque sea una petición extra sigue importando, como gráficos principales que deben aparecer en el instante en que se procesa el HTML, o herramientas de un solo archivo que no pueden depender de una segunda petición de red.
Una regla práctica útil: incrusta lo muy pequeño, iconos, indicadores de carga, logotipos diminutos, por lo general por debajo de 5 a 10 KB, y enlaza todo lo demás. Una imagen grande incrustada también retrasa que el navegador termine de analizar el documento HTML o CSS que la rodea, porque tiene que leer toda la cadena codificada antes de seguir adelante, lo que puede aplazar el momento en que el resto de la página se vuelve visible.
Usar Imágenes Base64 en CSS
El destino más habitual de una imagen Base64 es una declaración background-image de CSS, que es exactamente lo que produce el formato de salida CSS en esta herramienta. Al elegir ese formato, tu cadena codificada queda envuelta en background-image: url('data:image/png;base64,...');, lista para pegar directamente en una hoja de estilos, un bloque <style> o un atributo style en línea.
Este patrón aparece constantemente para pequeños detalles visuales repetidos: una textura sutil de ruido detrás de una tarjeta, un icono personalizado que sustituye la viñeta por defecto de una lista, el estado marcado de una casilla o un botón de radio, o un separador decorativo en SVG entre secciones. Como la imagen viaja junto con el propio CSS, no hay nada extra que el navegador tenga que buscar una vez que la hoja de estilos ya cargó, algo importante para componentes que aparecen en el instante en que la página se renderiza, antes de que cualquier recurso con carga diferida haya tenido tiempo de llegar.
La contrapartida es que un CSS lleno de cadenas Base64 largas se vuelve notablemente más difícil de leer y mantener, y esa hoja de estilos inflada tiene que descargarse y analizarse por completo antes de que el navegador pueda aplicar cualquiera de los estilos que la siguen. Limitar las imágenes Base64 en CSS a recursos realmente pequeños, y usar una referencia normal url('/imagenes/foto.jpg') para cualquier cosa más grande, mantiene rápidas tanto la hoja de estilos como la propia página.
Imágenes Base64 en HTML y la Realidad de las Plantillas de Correo
Elegir el formato de salida HTML envuelve tu cadena codificada en una etiqueta lista para usar, <img src="data:image/png;base64,..." />, que funciona exactamente igual que una etiqueta de imagen normal en cualquier lugar donde un navegador renderice HTML, incluyendo informes de una sola página, documentos exportados y herramientas sin conexión que necesitan funcionar como un único archivo autocontenido, sin recursos externos de ningún tipo.
El correo electrónico es el único lugar donde este patrón merece verdadera precaución. Gmail y Apple Mail suelen renderizar sin problemas las imágenes Base64 incrustadas, pero las versiones de escritorio de Outlook usan el motor de renderizado de Word en lugar de un motor de navegador moderno, y ese motor con frecuencia elimina o directamente se niega a mostrar imágenes con URI de datos. Un correo de marketing construido alrededor de logotipos incrustados puede verse perfecto en una bandeja personal de Gmail y mostrar un icono de imagen rota a buena parte de los usuarios corporativos de Outlook. Para cualquier cosa enviada como correo masivo, una imagen alojada normalmente con un atributo alt bien escrito sigue siendo la opción segura por defecto, y Base64 conviene reservarlo para HTML cuyo renderizado controlas por completo, como una notificación dentro de tu propia aplicación, un PDF exportado o un recibo imprimible.
Fuera del correo, esta misma cualidad autocontenida resulta genuinamente útil: un único archivo HTML que incluye su propio logotipo e iconos como cadenas Base64 puede enviarse como adjunto, abrirse directamente desde un disco local o archivarse indefinidamente, todo sin un solo enlace de imagen roto, porque no existe ningún archivo externo que un futuro cambio de nombre o de ubicación pueda romper.
SVG y Base64: Cuándo la Codificación Realmente Ayuda
El SVG ocupa un lugar poco habitual en toda esta conversación porque un archivo SVG ya es texto plano, no datos binarios. Eso significa que puede incrustarse en un url() de CSS usando una codificación de URL normal en lugar de Base64, y un SVG codificado como URL suele pesar menos que ese mismo archivo pasado por Base64, porque la codificación de URL solo escapa un puñado de caracteres especiales en lugar de reescribir cada byte en un alfabeto de 4 caracteres.
Base64 sigue ganándose su lugar con el SVG en algunas situaciones concretas. Es la opción más sencilla siempre que el contexto que lo rodea no tolere las comillas, almohadillas y ángulos que contiene el marcado SVG crudo o codificado como URL, como dentro de una única cadena JSON, una columna de base de datos o un valor de propiedad personalizada de CSS donde escapar caracteres se vuelve incómodo. También funciona bien como atributo <img src="data:image/svg+xml;base64,...">', y esta herramienta produce exactamente ese formato de forma automática cuando sueltas un archivo SVG y eliges la salida HTML.
Lo que Base64 no puede hacer por el SVG es conservar su mayor ventaja: el estilo en vivo. Un SVG pegado directamente en tu HTML como marcado <svg> en línea puede cambiar de color de relleno con currentColor y CSS, reaccionar a :hover y manipularse con JavaScript, nada de lo cual es posible una vez que queda aplanado en una cadena Base64 opaca. Si necesitas un icono con tema personalizable, conserva el marcado SVG en línea. Si necesitas una referencia de imagen portable y opaca, codificarlo en Base64 es la decisión correcta, y esta herramienta hace esa conversión con un solo arrastre.
Compensaciones de la Caché del Navegador
Un archivo de imagen normal referenciado por URL obtiene su propia entrada en la caché HTTP del navegador, regida por las cabeceras Cache-Control que envíe el servidor. Visita diez páginas que referencien el mismo /logo.png, y el navegador descarga ese archivo exactamente una vez, y reutiliza la copia en caché en cada página siguiente durante todo el tiempo que la cabecera de caché lo permita, a veces durante meses.
Una imagen en Base64 no goza de ese privilegio. Como vive dentro del propio documento HTML o CSS en lugar de existir como recurso propio, se descarga, analiza y decodifica de nuevo cada vez que ese documento padre se carga, incluso entre páginas que reutilizan exactamente la misma imagen. No hay ninguna entrada de caché aparte que el navegador pueda reutilizar, porque en lo que respecta a la capa de caché no existe ningún recurso independiente, solo más bytes dentro de un documento que ya iba a descargar de todos modos.
Este es el argumento más fuerte contra incrustar cualquier cosa que aparezca más de una vez en un sitio. Un logotipo compartido, un conjunto de iconos repetido o un patrón de fondo usado en todo el sitio se sirve mucho mejor como archivo enlazado con una vida útil de caché larga, descargado una vez y reutilizado en todas partes, que como una cadena Base64 duplicada en cada página y hoja de estilos que lo necesite. Reserva la incrustación para imágenes genuinamente únicas de un solo documento, donde no hay con quién compartir una entrada de caché en primer lugar.
Usos Habituales de Este Conversor de Imagen a Base64
Los desarrolladores que construyen aplicaciones de una sola página o paneles internos usan Base64 para pequeños gráficos de marcador de posición e iconos de estado de carga que necesitan renderizarse antes de que termine de descargarse el paquete principal de JavaScript, ya que una URI de datos en línea se pinta al instante con el primer byte de HTML, sin esperar una segunda petición.
Cualquiera que genere informes sin conexión, PDF exportados o entregables HTML de un solo archivo recurre a Base64 para mantener un documento verdaderamente autocontenido, con su logotipo, gráficos o diagramas incrustados directamente en el archivo, de modo que nada se rompa cuando ese archivo se envíe por correo, se archive o se abra años después en una máquina sin acceso al alojamiento original de las imágenes.
Diseñadores y desarrolladores front-end usan el formato de salida CSS constantemente para pequeñas decoraciones de interfaz, estados personalizados de casillas y botones de radio, texturas de fondo sutiles y sustitutos de fuentes de iconos, en casos donde el recurso es lo bastante pequeño como para que el 33% de sobrepeso apenas se note, pero la petición ahorrada acelera de verdad el primer pintado de la página.
Y como toda la conversión ocurre localmente, quienes necesitan convertir algo sensible, un contrato firmado y escaneado, una foto de identificación privada, una captura de pantalla de un producto aún sin lanzar, usan esta herramienta precisamente porque nunca le pide a nada que salga de su propio dispositivo.
Por Qué Este Conversor Funciona Completamente en tu Navegador
Muchas herramientas de "convertir imagen a Base64" suben en silencio lo que sea que sueltes en ellas a un servidor, lo codifican allí y te devuelven la cadena. Ese viaje de ida y vuelta es invisible si estás convirtiendo un logotipo público, pero se convierte en una preocupación real en el momento en que la imagen es un documento firmado, una foto privada, una captura de pantalla con datos confidenciales o cualquier material de diseño aún no publicado que no querrías que estuviera, aunque fuera brevemente, en el servidor de otra persona.
Este conversor nunca hace ese viaje. Lee tu archivo usando la API FileReader integrada en el navegador, codifica los bytes con JavaScript que corre en tu propio dispositivo, y muestra el resultado, todo sin que una sola petición de red lleve tu imagen a ningún lado. Abre la pestaña de red de tu navegador mientras lo usas y no encontrarás tu archivo saliendo de la página. Eso también significa que no hay límite de tamaño impuesto por ningún servidor, ninguna cola de procesamiento en la que esperar, y ninguna dependencia de que una API de terceros siga funcionando; la conversión es exactamente tan rápida y tan disponible como lo sea tu propio ordenador.
Para equipos que manejan material de clientes, una identidad de marca todavía en desarrollo, o cualquier cosa cubierta por un acuerdo de confidencialidad, una herramienta puramente local elimina por completo la cuestión de la confianza, en lugar de pedirte que leas una política de privacidad y confíes en ella. Es el mismo razonamiento que lleva a los desarrolladores a ejecutar un formateador o un linter en local en vez de pegar código fuente propietario en un formulario web cualquiera.
Preguntas Frecuentes
Herramientas de Desarrollo Relacionadas
🔒 100% Privado y Local
Cada imagen se decodifica y codifica <strong>completamente en tu navegador</strong>. Nada se sube a ningún servidor. Tu imagen se queda en tu dispositivo.