The Bloat Is Real, and It's Consistent
Export a simple icon from Illustrator or Figma, and there's a good chance the file is several times larger than the visual complexity of the icon would suggest โ a shape that should reasonably weigh 500 bytes leaving the tool as 3KB or more. That's not a fluke of one export; it's a structural pattern in how design tools serialize SVG, and it's fixable with zero visual cost in the overwhelming majority of cases.
Typical optimization results: a 40-80% file size reduction, with no visible difference. Here's exactly where that bloat comes from.
Where the Bytes Actually Go
1. Editor Metadata
Design tools embed their own state directly into the exported file, using extensions to the SVG spec:
<svg xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
<sodipodi:namedview pagecolor="#ffffff" ... />
<g inkscape:label="Layer 1" inkscape:groupmode="layer">
<!-- your actual shape, buried inside editor bookkeeping -->
</g>
</svg>
None of this affects rendering. It exists so the editor can reopen the file with layer names, grid settings, and tool state intact โ genuinely useful if you're going back to edit the source file, completely irrelevant to a browser displaying it.
2. Excessive Coordinate Precision
<!-- As exported -->
<path d="M12.123456789 5.987654321L18.000000001 12.000000002" />
<!-- Visually identical -->
<path d="M12.12 5.99L18 12" />
Every anchor point adjustment you make while designing gets recorded with far more decimal precision than a screen can actually render โ the difference between 12.123456789 and 12.12 is smaller than a sub-pixel on any real display. Two decimal places is visually indistinguishable from the original for the vast majority of artwork; icons can often go to one decimal place or even whole numbers with no perceptible change.
3. Comments, Titles, and Descriptions
<!-- Generator: Adobe Illustrator 29.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<title>Layer_1</title>
<metadata>...tool version info, timestamps, color profile data...</metadata>
Auto-generated comments identifying the exact tool and version used, plus a <title> that's usually just the internal layer name ("Layer_1", "Group 3") rather than meaningful alt text โ safe to strip in nearly every case.
4. Empty Groups
Illustrator in particular tends to leave empty <g></g> wrapper elements behind after layers get flattened or reorganized during editing โ pure dead weight with zero visual effect, but real bytes and real DOM nodes.
Beyond File Size: DOM Node Cost
There's a second cost that's easy to miss because it doesn't show up in the file size number at all: every element in an SVG becomes a DOM node when the browser renders it. An unoptimized icon with nested groups, an unused <clipPath> definition, and a couple of empty wrapper groups might add 15-20 DOM nodes for content that should realistically need 2 or 3.
That's inconsequential for one icon. It's not inconsequential for a UI with 30 icons on screen at once โ that's 400+ unnecessary DOM nodes, purely from export bloat, with real (if often invisible until profiled) cost to layout and rendering performance.
Figma vs. Illustrator: Not Equally Bad
Worth knowing if you're choosing between exports: Figma's raw SVG output tends to be cleaner than Illustrator's, though it has its own specific issues โ notably a reputation for adding redundant wrapper groups and occasionally problematic fill-rule attributes that can cause subtle rendering differences. Illustrator tends toward heavier editor metadata and deeper precision bloat. Neither is clean enough to skip optimization entirely, but if you're deciding where to invest cleanup effort, Illustrator exports usually need it more.
What Optimization Actually Removes
Putting it together, a real before/after on a typical Illustrator icon export:
<!-- Before: 400 bytes -->
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generator: Adobe Illustrator -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 24 24" width="24" height="24">
<title>My Icon</title>
<metadata>some metadata here</metadata>
<g></g>
<g inkscape:label="Layer 1">
<path d="M12.123456 5.987654L18.000001 12.000002" />
</g>
</svg>
<!-- After: 126 bytes (68% smaller, visually identical) -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><g><path d="M12.12 5.99L18 12" /></g></svg>
Gone: the XML declaration (unnecessary for inline/web use), the generator comment, the <title> and <metadata> blocks, the inkscape:label attribute, the empty <g></g>, and five decimal places of coordinate precision nobody could see anyway. What's left renders pixel-for-pixel identical.
Optimize Without Installing a Build Tool
ToolNinja's SVG Optimizer โ strips exactly this class of bloat โ comments, metadata, Inkscape/Sodipodi namespaces, empty groups, and excess coordinate precision โ with a live before/after size comparison and visual preview of both versions, so you can confirm nothing changed before shipping it. Drag in a file or paste markup directly; everything runs in your browser, no CLI or build step required for a one-off cleanup.
Sources: