To convert inline SVG to base64 string with JavaScript, we can use the serializeToString
method available with a XMLSerializer
instance to parse the svg element to an XML string.
Then we call window.btoa
to convert the string into a base64 string.
For instance, if we have:
<svg height="100" width="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>
Then we write:
const s = new XMLSerializer().serializeToString(document.querySelector("svg"))
const encodedData = window.btoa(s);
console.log(encodedData)
We call serializeToString
with the svg element object that’s returned with document.querySelector
.
Then we call window.btoa
on the string returned by serializeToString
.
Therefore, from the console log, we get:
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTAwIiB3aWR0aD0iMTAwIj4KICA8Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI0MCIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIzIiBmaWxsPSJyZWQiLz4KPC9zdmc+
logged as a result.