Una data URL embebe los bytes de un archivo dentro de una cadena URL para que el navegador no necesite una segunda peticion de red. En imagenes suele significar Base64: los pixeles binarios pasan a ASCII que puede vivir en un `src` HTML, un `url()` de CSS o un demo de un solo archivo. Incrustar es potente y facil de abusar. Esta guia cubre la anatomia, el coste de tamano, cuando gana, cuando pierde, y como construir cadenas en privado con el Conversor de imagen a Base64.
Respuesta rapida
Usa data URLs para iconos diminutos, assets seguros en email y demos autocontenidos. Evitalas para todo lo grande o cacheable - Base64 anade unos ~33% de overhead y bloquea reutilizar cache de CDN y navegador. Prefiere una URL de imagen normal para fotos de producto, heroes y cualquier cosa compartida entre paginas. Cuidado con Content-Security-Policy: `img-src` y `style-src` pueden necesitar permitir `data:`.
Anatomia de una data URL
Una data URL tiene forma fija: `data:[media-type][;base64],payload`. Para un icono PNG se ve asi: `data:image/png;base64,iVBORw0KGgo...`. El media type dice al navegador como decodificar el payload. El flag opcional `;base64` significa que el payload es binario en Base64; sin el, el payload es texto percent-encoded (vale para SVG pequeno, incomodo para fotos).
- Scheme - siempre empieza por `data:`.
- Media type - por ejemplo `image/png`, `image/jpeg`, `image/webp`, `image/svg+xml` o `text/css`.
- Flag de encoding - `;base64` para bytes de imagen binarios; omitelo para texto percent-encoded.
- Payload - los bytes o el texto codificado despues de la coma. Sin espacios; las cadenas largas son normales.
Base64 en si es una codificacion general (A-Z, a-z, 0-9, +, / y padding =). El mismo alfabeto transporta JSON, tokens o bytes de archivo. Para texto o archivos que no son imagenes, usa el Codificador / Decodificador Base64. Para un archivo de imagen local convertido en data URL lista para pegar, usa el Conversor de imagen a Base64 - la conversion se queda en tu navegador.
La penalizacion de tamano del ~33%
Base64 mapea cada 3 bytes binarios a 4 caracteres ASCII. Eso es un aumento de ~33% antes de contar el prefijo `data:image/...;base64,`. Un PNG de 30 KB se convierte en unos 40 KB de texto en tu HTML o CSS. Gzip o Brotli ayudan un poco con patrones repetidos, pero no borran el impuesto - y los assets incrustados no se pueden cachear aparte del documento.
- Archivo binario - 3 bytes se vuelven 4 caracteres Base64 (~33% mas grande).
- Hinchazon de HTML/CSS - la cadena viaja con cada respuesta de pagina que la embebe.
- Sin cache independiente - cambiar un icono puede invalidar todo el stylesheet o la plantilla.
- Coste de parseo - atributos y bloques de estilo enormes ralentizan el parseo en dispositivos debiles.
Cuando incrustar gana
Incrustar vale la pena cuando la alternativa es un round trip que cuesta mas que el impuesto de tamano, o cuando el entorno prohibe archivos externos.
- Iconos y glifos de UI diminutos - unos cientos de bytes de PNG o SVG donde una peticion HTTP extra supera al payload.
- Plantillas HTML de email - muchos clientes bloquean o reescriben imagenes remotas; un logo pequeno en data URL puede renderizar sin host de pixel de tracking.
- Demos de un solo archivo y snippets tipo CodePen - un HTML que funciona offline sin carpeta de assets.
- Micro-assets criticos above-the-fold - casos raros en los que evitas a proposito una peticion de imagen que bloquea el render (mide primero).
Regla practica: si el asset ronda 1-2 KB o menos y se usa una vez, una data URL suele estar bien. Si dudas, dejalo como archivo y mide.
Cuando incrustar pierde
- Todo lo cacheable entre paginas - logos, sprites e iconos compartidos deben ser archivos (o un sistema de sprites/SVG) para que el navegador los descargue una vez.
- Todo lo grande - fotos, ilustraciones y heroes hinchan HTML/CSS y perjudican First Contentful Paint.
- Assets que cambian por su cuenta - no quieres republicar un stylesheet de 200 KB porque cambio un favicon.
- Sitios con HTTP/2 o HTTP/3 y buena cache - las peticiones en paralelo son baratas; el consejo viejo de "evitar cada request" pesa menos que en HTTP/1.1.
Prefiere archivos para imagenes reales
Fotos de producto, figuras de blog y heroes de marketing deben seguir siendo URLs `.webp` / `.avif` / `.png` con `width`, `height` y cabeceras de cache adecuadas. Usa data URLs para el pegamento, no para la galeria.
HTML img y CSS background-image
En HTML, pega la data URL completa en `src`:
- `<img src="data:image/png;base64,..." alt="..." width="16" height="16">` - mantén el alt; define dimensiones para que el layout no salte.
- SVG inline como `data:image/svg+xml,...` funciona, pero un `<svg>` crudo en el documento suele ser mas claro y accesible.
- No pongas cadenas de megabytes en `src` - el atributo del DOM solo ya es doloroso de editar y desplegar.
En CSS, la misma cadena va dentro de `url()`:
- background-image: url("data:image/png;base64,...");
- Funciona igual para `background`, `list-style-image` y `mask-image`.
- Despues de generar CSS que embebe data URLs, aun puedes pasar el stylesheet por el Minificador CSS para quitar comentarios y whitespace de mas - la minificacion casi no encoge Base64, pero limpia el resto del archivo.
Matices de CSP y cache
Content-Security-Policy a menudo bloquea `data:` por defecto para imagenes o estilos. Si los iconos desaparecen tras endurecer CSP, revisa `img-src` (y `style-src` / `style-src-elem` si usas data URLs dentro de stylesheets). Permitir `data:` amplía un poco la superficie de ataque - prefiere archivos externos cuando CSP debe ser estricto.
- Cache - los bytes incrustados heredan el tiempo de vida del documento HTML o CSS. Pierdes `Cache-Control` por asset y cache en el edge del CDN.
- Service workers - un HTML enorme con imagenes embebidas es mas dificil de actualizar con precision que un HTML pequeno mas assets con hash.
- Email - las data URLs ayudan en algunos clientes y fallan en otros; prueba siempre los clientes principales antes de lanzar una campana.
- Privacidad - convertir en local con ToolsMinify significa que la imagen nunca se sube. Importa para capturas y UI sin publicar.
Preguntas frecuentes
Base64 es cifrado?
No. Base64 es codificacion, no cifrado. Cualquiera puede decodificarlo. No pongas secretos en data URLs.
Debo incrustar el logo del sitio como data URL?
Normalmente no si el logo aparece en muchas paginas. Un `/logo.svg` cacheado se descarga una vez. Incrusta solo si el logo es diminuto y se usa en un contexto unico (por ejemplo un solo email).
Las data URLs ayudan a Core Web Vitals?
A veces para un solo icono critico diminuto; a menudo perjudican cuando hinchan el HTML. Mide LCP y el peso de la pagina antes y despues. Heroes grandes incrustados son una regresion habitual.
Puedo convertir una imagen a data URL sin subirla?
Si. El Conversor de imagen a Base64 lee el archivo en tu navegador y saca una data URL o Base64 crudo. Nada se envia a un servidor.
Y SVG - Base64 o markup crudo?
El markup SVG inline en HTML suele ser mejor para accesibilidad y estilos. Usa una data URL cuando debas meter SVG en un contexto que solo acepta una URL (algunas propiedades CSS, algunos caminos de email).
Convierte imagenes en ToolsMinify
Todas las herramientas de abajo corren en tu navegador - gratis, sin registro, sin subir nada:
- Conversor de imagen a Base64 - convierte una imagen local en data URL o cadena Base64 para HTML y CSS.
- Codificador / Decodificador Base64 - codifica o decodifica texto y payloads que no son imagenes.
- Minificador CSS - reduce stylesheets que embeben fondos pequenos en data URL.
- Todas las herramientas de desarrollo - el indice completo de la categoria.
Pruebalo gratis
Abre el Conversor de imagen a Base64, elige un PNG o SVG diminuto, copia la data URL y pegala en un `src` de `img` o un `url()` de CSS. Todo se queda en tu dispositivo.