Codificación de SVG inline · Gratis

Conversor de SVG a data URI

Codifica código SVG como data URI para incrustarlo en una hoja de estilos o en una etiqueta img. Las dos codificaciones se generan en tiempo real, se comparan en bytes y se previsualizan tal como las cargará realmente el navegador.

Codificado en tu navegador · Sin subidas, sin cuenta
Informar de un problema

Origen

Código SVG

466 B de código

2 MB como máximo · se lee en esta pestaña · nunca se sube

Limpiar el código antes

Elimina los comentarios y la declaración XML, quita los espacios entre etiquetas y une los saltos de línea que los exportadores dejan entre atributos. Los atributos, los datos de trazado y los datos de caracteres dentro de text, tspan, title, desc y style se quedan exactamente como están. No es un optimizador: aquí no se reescriben trazados al estilo de SVGO, ni se recorta la precisión, ni se eliminan atributos.

97 B eliminados · 466 B → 369 B

Vista previa

Renderizado desde la data URI

La imagen de abajo se carga desde la propia URI codificada, así que falla exactamente igual que fallaría en tu página.

Vista previa en tiempo real del SVG codificado
width
24
height
24
viewBox
0 0 24 24

Con espacio de nombres, con tamaño definido y lo bastante ligero para incrustarlo. Lo bastante pequeño para ir en una hoja de estilos o un componente sin cambiar su tamaño de forma apreciable.

Tamaño

Lo que cuesta cada codificación

Tamaño en bytes del código original y de cada data URI codificada
FormaBytesvs. SVG
SVG original369–
URI codificada en URL414+12.2%
URI en Base64518+40.4%

Estas cifras incluyen el prefijo de la URI: 19 bytes para la forma simple y 26 para la de Base64. Sin contar el prefijo, el patrón es exacto: Base64 infla cualquier carga útil en +33.3% porque tres bytes siempre se convierten en cuatro, mientras que la codificación URL te cobra aquí +7.0%, dos bytes extra por cada byte que ha tenido que escapar y nada en absoluto por el resto.

Cómodo para incrustar: Lo bastante pequeño para ir en una hoja de estilos o un componente sin cambiar su tamaño de forma apreciable.

Listo para pegar

Cuatro salidas, todas en tiempo real

Cada campo de abajo se regenera mientras editas el código de arriba. Nada se genera en un servidor, así que no hay que volver a descargar nada.

Comillas envolventes
Los fragmentos usan
Data URI codificada en URLRecomendada

414 bytes · +12.2% respecto al código

data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="none"%3E%3Crect x="2.5" y="4" width="19" height="16" rx="3.5" stroke="%237051bd" stroke-width="1.5"/%3E%3Cpath d="M3 16.6 8.6 11l4 4 3-2.6 5.4 4.6" stroke="%237051bd" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/%3E%3Ccircle cx="15.6" cy="8.8" r="1.75" fill="%237051bd"/%3E%3C/svg%3E

Data URI en Base64

518 bytes · +25.1% respecto a la forma codificada en URL

data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJub25lIj48cmVjdCB4PSIyLjUiIHk9IjQiIHdpZHRoPSIxOSIgaGVpZ2h0PSIxNiIgcng9IjMuNSIgc3Ryb2tlPSIjNzA1MWJkIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxwYXRoIGQ9Ik0zIDE2LjYgOC42IDExbDQgNCAzLTIuNiA1LjQgNC42IiBzdHJva2U9IiM3MDUxYmQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48Y2lyY2xlIGN4PSIxNS42IiBjeT0iOC44IiByPSIxLjc1IiBmaWxsPSIjNzA1MWJkIi8+PC9zdmc+

Úsala cuando un paso de compilación, un campo de CMS o un preprocesador reescriba los signos de porcentaje y rompa la forma legible.

Declaración CSS

Usa la URI codificada en URL

background-image: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="none"%3E%3Crect x="2.5" y="4" width="19" height="16" rx="3.5" stroke="%237051bd" stroke-width="1.5"/%3E%3Cpath d="M3 16.6 8.6 11l4 4 3-2.6 5.4 4.6" stroke="%237051bd" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/%3E%3Ccircle cx="15.6" cy="8.8" r="1.75" fill="%237051bd"/%3E%3C/svg%3E');

Pégala directamente en una regla. Mantén las comillas: la carga codificada en URL contiene espacios literales, que un url() sin comillas no acepta.

Etiqueta img de HTML

Tamaño de 24 × 24 según los atributos width y height

<img src='data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="none"%3E%3Crect x="2.5" y="4" width="19" height="16" rx="3.5" stroke="%237051bd" stroke-width="1.5"/%3E%3Cpath d="M3 16.6 8.6 11l4 4 3-2.6 5.4 4.6" stroke="%237051bd" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/%3E%3Ccircle cx="15.6" cy="8.8" r="1.75" fill="%237051bd"/%3E%3C/svg%3E' width='24' height='24' alt='' />

El atributo alt está vacío porque una forma incrustada suele ser decorativa. Dale un texto real siempre que la imagen transmita información.

Envolver en comillas simples no cuesta nada aquí: tu código no contiene ninguna, así que todas sus comillas pasan por el codificador sin cambios.

Incrusta cuando lo que cuesta es la petición

Un icono de 700 bytes cuesta más en establecer la conexión y en viajes de ida y vuelta que en bytes. Integrarlo en la hoja de estilos que ya se carga elimina una petición por completo, y por eso incrustar sale ganando con marcas pequeñas de un solo uso.

Mantenlo como archivo cuando se repite

Una forma incrustada se copia en cada archivo que la referencia y solo se almacena en caché como parte de ese archivo. Un logotipo usado en cuatro hojas de estilos se descarga cuatro veces; un .svg compartido se descarga una vez y se reutiliza en todas partes.

Una data URI es una isla

El documento codificado no puede salir de sí mismo. Las fuentes externas, las imágenes enlazadas, las hojas de estilos y los scripts no están disponibles, y el CSS de la página anfitriona (incluidos currentColor y las propiedades personalizadas) nunca cruza ese límite.

Cómo funciona

Una petición menos, una cadena que hay que hacer bien.

Incrustar un SVG cambia un viaje de ida y vuelta por la red por bytes dentro de un archivo que ya envías. Ese trato compensa con formas pequeñas y autónomas y sale caro con cualquier cosa reutilizada en varias páginas, así que esta página muestra el coste exacto en bytes de ambas codificaciones, renderiza el resultado antes de que te comprometas con él y señala los dos atributos que deciden si un icono incrustado aparece y con qué tamaño.

  1. 01

    Carga el código

    Pega el contenido del archivo .svg o suelta el propio archivo en el panel. Se lee dentro de esta pestaña, y un límite de 2 MB mantiene la codificación instantánea.

  2. 02

    Revisa la vista previa y los avisos

    La ilustración se dibuja a partir de la URI codificada sobre un fondo de cuadros, de modo que la transparencia se ve y la falta de un espacio de nombres sale a la luz antes de que la cadena llegue a tu hoja de estilos.

  3. 03

    Elige la forma que necesita tu proyecto

    Copia la URI codificada en URL, la alternativa en Base64, una regla background-image terminada o una etiqueta img completa con las dimensiones ya rellenadas.

Pensado para hojas de estilos

Salida legible, mediciones honestas.

Escapa solo lo que daría problemas

Los corchetes angulares, las almohadillas, los signos de porcentaje, los paréntesis, los ampersands, las barras invertidas y los saltos de línea se codifican con porcentaje. Todo lo demás sigue siendo legible, incluidos los espacios y el tipo de comilla que no envuelve la URI.

Base64 como alternativa

Los motores de plantillas y los campos de un CMS a veces se comen los signos de porcentaje. Para esos flujos, la URI en Base64 está a un clic, con el recargo fijo de un tercio que siempre supone.

La diferencia de tamaño, medida y no supuesta

Una tabla compara el código con ambas codificaciones, separa el prefijo de la URI de la carga útil y muestra por qué la forma legible es casi siempre la más pequeña.

Una limpieza que puedes auditar

El paso opcional de limpieza elimina los comentarios, la declaración XML y los espacios entre etiquetas. Los datos de trazado, los atributos y los datos de caracteres nunca se reescriben, y el ahorro se indica en bytes.

Detecta los dos fallos clásicos

Sin xmlns, una data URI no se renderiza en absoluto; sin viewBox, un icono acaba con un tamaño equivocado. Ambos casos se señalan junto a la vista previa en lugar de en una consola.

Local y sin hacer ruido

Sin subidas, sin colas, sin llamadas a una API. El propio navegador lee el archivo y lo codifica en memoria a partir de ese texto, así que tu ilustración inédita nunca sale de tu equipo.

Preguntas sobre data URI

Codificación, tamaño, color y límites.

¿Qué es una data URI de SVG?+

Es la imagen completa escrita como URL. La cadena empieza por data:image/svg+xml y el resto es el propio código, escapado para que sobreviva dentro de una URL. Como la ilustración viaja en la referencia, un navegador que ya tiene la hoja de estilos ya tiene la imagen: sin una segunda petición y sin esperar a una conexión por un icono de 600 bytes.

¿Debo usar codificación URL o Base64 para un SVG?+

Codificación URL, en casi todos los casos. SVG es texto, así que Base64 no aporta nada: convierte tres bytes en cuatro, con un recargo fijo de un tercio sea cual sea el contenido. La codificación porcentual solo añade dos bytes por cada uno de los pocos caracteres que hay que escapar, y suele quedar entre un 10 y un 25% por encima del original. Además, sigue siendo legible en un diff y se comprime mejor, porque gzip y brotli todavía ven los nombres de etiqueta repetidos que Base64 desordena. Reserva Base64 para los flujos que reescriben o escapan dos veces los signos de porcentaje.

Mi SVG incrustado no aparece. ¿Qué falta?+

Casi siempre, el espacio de nombres. Cuando escribes un elemento svg directamente en una página HTML, el analizador ya sabe lo que es. Una data URI se carga como documento independiente, así que el propio archivo tiene que declararlo con xmlns="http://www.w3.org/2000/svg" en el elemento raíz. Sin él, el navegador no analiza nada y no dibuja nada, sin avisar. La otra causa frecuente es un # sin escapar en un color de relleno: convierte el resto de la URI en un identificador de fragmento.

¿Por qué el icono sale con un tamaño equivocado?+

Porque el documento codificado decide su propia geometría. Sin viewBox y sin width ni height, el navegador recurre a una caja de 300 por 150. Con width y height pero sin viewBox, la forma queda fijada a ese tamaño y no se escala. Con solo un viewBox se escala libremente, que es lo que normalmente quieres para un fondo; combínalo con background-size, o con width y height explícitos en la etiqueta img.

¿Puedo cambiar el color de un SVG en data URI con currentColor o una variable CSS?+

No. El SVG codificado es un documento aparte y nada de la página anfitriona llega a su interior: currentColor se resuelve con la propiedad color de ese mismo documento (negro, salvo que el código la defina), y las propiedades personalizadas no se heredan a través de ese límite. Hay tres alternativas: editar el relleno en el código antes de codificarlo y mantener una URI por color, controlar la forma con mask-image para que el color visible venga de background-color, o insertar el elemento svg directamente en el HTML, donde el CSS de la página puede darle estilo.

¿El SVG puede seguir cargando una fuente, una imagen o una hoja de estilos externas?+

No, y esa limitación es intencionada, no un error. Un SVG cargado mediante url() o una etiqueta img funciona en modo restringido: no se ejecuta ningún script y no se descarga ningún recurso externo, ya sea una fuente web, un mapa de bits enlazado o una hoja de estilos. Convierte el texto en trazados antes de codificar e incrusta cualquier imagen rasterizada como su propia data URI anidada dentro del código.

¿Hay un límite de longitud para una data URI?+

No uno práctico en los navegadores actuales: Chrome, Firefox y Safari aceptan data URI en hojas de estilos muy por encima de un megabyte. La conocida cifra de 32 KB es un límite de Internet Explorer 8 que dejó de importar hace años. Las verdaderas restricciones están en otra parte: los minificadores y los source maps se vuelven difíciles de manejar, algunos campos de CMS truncan los valores largos y cada kilobyte se vuelve a descargar con el archivo en el que vive. Considera 4 KB como cómodo y 32 KB como el punto en el que un archivo aparte es la mejor decisión técnica.

¿Qué cambia exactamente la opción de limpieza?+

Cuatro cosas: los comentarios, la declaración XML, los huecos entre etiquetas que solo contienen espacios en blanco y los saltos de línea que los exportadores dejan entre atributos. Nunca elimina un atributo, redondea una coordenada, fusiona un trazado ni renombra un id, y deja intactos los datos de caracteres dentro de text, tspan, textPath, title, desc, style y script. Un documento que pide xml:space="preserve" también conserva todos los huecos entre sus etiquetas, aunque los comentarios y la declaración XML se eliminan igualmente. Eso hace que el paso sea seguro pero modesto. Si quieres reducciones reales, pasa antes el archivo por SVGO y pega aquí el resultado.

Más herramientas especializadas, listas cuando las necesites.

Explora una colección cada vez más amplia para cálculos, documentos, escritura y el trabajo diario.

Ver todas las herramientas