How to strip hidden metadata from svg files exported by figma or illustrator
- Step 1Export the SVG from your design tool — Figma: select the frame → right-click → Copy/Paste as → Copy as SVG, or use Export with SVG format. Illustrator: File → Export → Export As → SVG (the SVG Options dialog controls how much metadata it writes). Inkscape: File → Save As → Optimized SVG, or plain Inkscape SVG if you want to see the full
sodipodi/inkscapepayload the scrubber will remove. - Step 2Open the Metadata Scrubber — Go to the SVG Metadata Scrubber. It is a free-tier tool — no account needed. There is no options panel: the scrub set is fixed, so the only decision is which file to feed it.
- Step 3Drop the file in, or paste the source — Drag the
.svgonto the dropzone (accepts.svg/image/svg+xml), click to browse, or paste the raw SVG markup into the textarea below the dropzone. Pasted markup is validated as well-formed SVG XML before it runs; an upload is parsed directly. - Step 4Click Process SVG — The tool parses the SVG with the browser DOM, removes the metadata elements and editor attributes, re-serialises, and strips any leftover
xmlns:editor-namespace declarations the serialiser kept. On Pro+ with a paired local runner the same job is dispatched to the runner; otherwise it runs in the tab. - Step 5Check the preview and the source panel — The result panel renders the cleaned SVG and shows original vs output size plus the percentage saved. Expand View SVG source to confirm the
<metadata>/<title>/<desc>blocks and editor namespaces are gone. Confirm the artwork still looks right — the scrubber never edits geometry, so it should be visually unchanged. - Step 6Download or copy the clean SVG — Click Download SVG to save
name-scrubbed.svg, or Copy to clipboard to paste the markup straight into a component. If an Illustrator<!-- Generator -->comment or the<?xml?>declaration is still present and you want them gone too, run the output through the SVG Pro Minifier.
What the scrubber removes vs. leaves
The complete behaviour of the scrubber, taken directly from the implementation. There are no options — every row applies on every run.
| Item in the SVG | Scrubber behaviour | Notes |
|---|---|---|
<metadata> element(s) | Removed (all of them, anywhere in the tree) | This is the RDF / Dublin-Core block Inkscape and Illustrator embed |
<title> element(s) | Removed (all of them, anywhere) | Including the accessibility <title> — see the accessibility edge case |
<desc> element(s) | Removed (all of them, anywhere) | Both editor-generated and hand-written <desc> go |
Root xmlns:dc / cc / rdf / svg / sodipodi / inkscape | Removed from the root <svg> and stripped from serialized output | These are the editor-fingerprint namespace declarations |
Root version, id, xml:space | Removed from the root <svg> | version often reads 1.1 from Illustrator; id is editor-generated |
Root data-*, inkscape:*, sodipodi:* attributes | Removed from the root <svg> only | Same-named attributes on child elements are not iterated — see edge cases |
<!-- Generator: Adobe Illustrator … --> comment | Left in place | Comments are not touched — use the Pro Minifier to drop them |
<?xml … ?> declaration | Left in place | Also handled by the Pro Minifier, not the scrubber |
viewBox, width, height, class, style, fill | Left in place | The scrubber never alters rendering or layout attributes |
Path d, coordinates, colours, gradients | Left in place, unchanged | Geometry is never simplified or rounded by this tool |
Input, output, and tier facts
Operational facts for the scrubber, free vs Pro vs Developer.
| Property | Value |
|---|---|
| Accepted input | A single .svg file (drag/drop or browse), or pasted SVG source |
| Output | One cleaned SVG, downloaded as name-scrubbed.svg |
| Options / controls | None — the scrub set is fixed, there is no options panel |
| Minimum tier | Free |
| Free file-size limit | 5 MB per file |
| Pro file-size limit | 50 MB per file |
| Developer file-size limit | 2 GB per file |
| Where it runs | Entirely in the browser DOM; nothing is uploaded |
Cookbook
Real before/after fragments from typical design-tool exports. The artwork between the tags is identical before and after — only the bookkeeping changes.
Inkscape export: namespaces, metadata, sodipodi attrs
A plain Inkscape save carries the heaviest payload — sodipodi:docname, inkscape:version, a full RDF <metadata> block, and six namespace declarations. The scrubber removes the metadata element and the root editor attributes/namespaces. Note: inkscape:label on nested <g> elements is not removed (only root attributes are iterated).
Before:
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:sodipodi="http://sodipodi.sourceforge.net/..."
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="logo.svg" inkscape:version="1.3"
version="1.1" id="svg5" viewBox="0 0 24 24">
<metadata id="metadata1"><rdf:RDF>…</rdf:RDF></metadata>
<path d="M4 4h16v16H4z"/>
</svg>
After (scrubbed):
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M4 4h16v16H4z"/>
</svg>Figma export with title + desc
Figma typically writes a clean root but adds a <title> (the layer name) and sometimes a <desc>. Both are removed. The width/height/viewBox/fill stay exactly as Figma wrote them.
Before:
<svg width="24" height="24" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<title>icon / arrow-right</title>
<desc>Created in Figma</desc>
<path d="M5 12h14M13 6l6 6-6 6" stroke="#111"/>
</svg>
After (scrubbed):
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5 12h14M13 6l6 6-6 6" stroke="#111"/>
</svg>Illustrator export: what survives
Illustrator writes its tool signature as an XML comment, not an element, plus an XML declaration. The scrubber leaves both because it does not touch comments or the prolog — a deliberate, accurate limit. To clear them, chain the minifier.
Before:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generator: Adobe Illustrator 28.0, SVG Export Plug-In -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
x="0px" y="0px" viewBox="0 0 48 48" xml:space="preserve">
<path d="M24 4 44 44H4z"/>
</svg>
After scrubber (note the comment + prolog remain):
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generator: Adobe Illustrator 28.0, SVG Export Plug-In -->
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="0 0 48 48">
<path d="M24 4 44 44H4z"/>
</svg>
Then run /svg-tools/svg-pro-minifier to drop the comment + <?xml?>.Already-clean SVG (hand-authored)
A hand-written or already-optimised icon has nothing to remove. The scrubber returns it essentially unchanged, and the saved-percentage may be 0% or even slightly negative if serialisation normalises attribute spacing.
Before: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"> <circle cx="8" cy="8" r="6"/> </svg> After (scrubbed): identical artwork, no metadata to strip. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"> <circle cx="8" cy="8" r="6"/> </svg>
Scrub, then minify — the recommended chain
For the smallest, most anonymous production SVG, run the scrubber first (structural metadata) and the minifier second (comments, prolog, whitespace, empty attributes). Each tool runs in-browser; nothing is uploaded.
Step 1 /svg-tools/svg-metadata-scrubber
→ removes <metadata>/<title>/<desc> + editor namespaces
→ download icon-scrubbed.svg
Step 2 /svg-tools/svg-pro-minifier
→ drops <!-- Generator --> comment, <?xml?>, inter-tag
whitespace, empty attrs
→ download icon-scrubbed-minified.svg
Typical combined result on an Illustrator export: 30-55% smaller
and no tool fingerprint anywhere in the file.Edge cases and what actually happens
Illustrator `<!-- Generator -->` comment remains after scrubbing
By designThe scrubber removes metadata elements and editor attributes, but it never touches XML comments. Illustrator writes its tool signature as <!-- Generator: Adobe Illustrator … -->, so that one line survives. This is accurate behaviour, not a bug — run the SVG Pro Minifier afterwards to strip comments and the <?xml?> declaration.
`inkscape:label` on a nested `<g>` is not removed
PartialThe attribute-stripping pass iterates only the root <svg> element's attributes. So root inkscape:* / sodipodi:* / data-* attributes are removed, but the same prefixes on child elements (e.g. inkscape:label="Layer 1" on a <g>) are left. Because the root xmlns:inkscape declaration is stripped, those child attributes are left with an undeclared prefix. If layer labels matter to your privacy goal, run the SVG Pro Minifier or remove them manually.
Accessibility `<title>` is removed too
ExpectedThe scrubber does not distinguish an editor-generated <title> from an accessibility one — it removes every <title>. If your icon is meaningful to screen readers, re-add an accessible name via the surrounding HTML (aria-label) or mark the SVG aria-hidden="true" if it is decorative. See the metadata-types reference for the accessibility trade-off.
Pasted markup that is not well-formed SVG
invalidWhen you paste source into the textarea, it is validated as well-formed SVG XML first; malformed markup is rejected with an Invalid SVG message before any processing runs. An uploaded file is parsed directly by the DOM, which is more tolerant — but garbage in still produces a parsererror document with nothing useful to scrub.
File larger than the tier limit
413-style blockFree tier caps input at 5 MB, Pro at 50 MB, Developer at 2 GB. A file over your tier limit is blocked before processing with an upgrade prompt. SVGs are rarely this large; if yours is, it usually means embedded raster <image> base64 data — strip or externalise that, or upgrade.
Saved percentage shows 0% or negative
ExpectedIf the SVG had little or no metadata, there is nothing to remove, so the byte count barely moves. Re-serialising can even normalise attribute spacing slightly, occasionally yielding a tiny negative saving. That is correct — the scrubber's job is fingerprint removal, not compression. For size, use the SVG Pro Minifier or SVG Precision Tuner.
Embedded `<image>` raster data is untouched
PreservedIf the SVG contains a base64-embedded PNG/JPEG inside an <image> element, that data is not metadata in the scrubber's sense and is left intact — including any EXIF inside the raster. The scrubber only handles SVG-level <metadata>/<title>/<desc> and editor attributes, not raster EXIF. Use an image-EXIF tool on the raster before embedding.
A `<desc>` you wanted to keep
RemovedSome teams put licence or attribution text in <desc>. The scrubber removes all <desc> unconditionally, so that text goes. If you rely on in-file attribution, keep an unscrubbed master and only ship the scrubbed copy, or store attribution in an HTML comment outside the SVG.
Comments inside `<metadata>`
Removed (with parent)Comments that live inside a <metadata> block are removed because the whole element is deleted. Standalone comments outside metadata (like the Illustrator generator line) are not — only elements, not comment nodes, are deleted.
Re-running the scrubber on an already-scrubbed file
SupportedRunning the tool twice is safe and idempotent: the second pass finds no <metadata>/<title>/<desc> and no editor attributes, so the output equals the input (minus any trivial serialisation normalisation). There is no risk of double-stripping anything important.
Frequently asked questions
What exactly does the Metadata Scrubber remove?
Every <metadata>, <title>, and <desc> element in the document; the root <svg> namespace declarations xmlns:dc, xmlns:cc, xmlns:rdf, xmlns:svg, xmlns:sodipodi, and xmlns:inkscape; the root version, id, and xml:space attributes; and any root-level data-*, inkscape:, or sodipodi: attributes. It then strips any leftover editor-namespace declarations from the serialised output.
Does it remove the Adobe Illustrator generator comment?
No. The <!-- Generator: Adobe Illustrator … --> line is an XML comment, and the scrubber does not touch comments — only elements and attributes. To remove it, run the output through the SVG Pro Minifier, which strips comments and the <?xml?> declaration as well.
Will scrubbing change how my SVG looks?
No. The tool only removes non-rendering metadata and editor bookkeeping. Path data, colours, gradients, viewBox, width, height, class, and style are all left untouched, so the artwork is visually identical before and after.
Are there any options to configure?
None. The scrub set is fixed and there is no options panel — you just drop the file and click Process SVG. That makes the result predictable: every run removes the same set of metadata and editor attributes.
Is my file uploaded anywhere?
No. Processing runs entirely in your browser using the DOM parser. The SVG content never reaches a JAD server — the result panel even shows a 0 bytes uploaded badge. On Pro+ with a paired local runner the work can be offloaded to the runner, which also runs on your own machine.
Why is my scrubbed file barely smaller?
Because the scrubber removes fingerprints, not bytes for the sake of it. If your SVG had little metadata, savings are small. For real size reduction, combine it with the SVG Pro Minifier, SVG Precision Tuner, or SVG Unused Defs Purger.
Does removing `<title>` hurt accessibility?
It can. A meaningful icon may rely on <title> for its accessible name. After scrubbing, supply the name from the surrounding HTML (aria-label on the <svg> or its container), or mark a purely decorative icon aria-hidden="true". The metadata-types reference explains the trade-off in depth.
Does it strip editor attributes from nested elements?
Only from the root <svg> element. Attributes like inkscape:label on a nested <g> are not removed, because the attribute pass iterates the root element only. The root xmlns:inkscape declaration is still stripped, so any such child attributes are left prefixed without a declaration — clean those with the minifier if needed.
What file size can I process?
Free tier allows up to 5 MB per file, Pro up to 50 MB, and Developer up to 2 GB. SVGs almost never exceed those limits unless they embed large base64 raster images.
Can I paste SVG code instead of uploading?
Yes. There is a textarea below the dropzone — paste your SVG markup there. Pasted markup is validated as well-formed SVG XML before it runs, so malformed snippets are rejected with a clear error rather than producing garbage.
What is the output filename?
The cleaned file downloads as your original stem plus -scrubbed.svg — for example logo.svg becomes logo-scrubbed.svg. You can also copy the cleaned markup straight to the clipboard from the result panel.
Does it remove EXIF from images embedded in the SVG?
No. Raster images embedded via <image> (base64 PNG/JPEG) are left intact, including any EXIF inside them. The scrubber operates on SVG-level metadata only. Strip raster EXIF before embedding the image.
How does this differ from the SVG Pro Minifier?
The scrubber targets structural metadata: <metadata>/<title>/<desc> elements and editor namespaces/attributes. The SVG Pro Minifier targets size: it removes comments, the <?xml?> prolog, inter-tag whitespace, empty attributes, and redundant namespaces. They are complementary — scrub for privacy, then minify for size.
Privacy first
Every JAD SVG tool runs entirely in your browser using the DOM API and Canvas. Your SVG files never leave your device — verified by zero outbound network requests during processing.