SVG symbol and use: Reusable Vector Definitions
SVG's symbol element lets you define shapes once and reuse them anywhere  the foundation of every scalable icon system.
Drop your image here
Supports PNG, JPG, BMP, WEBP up to 5MB
Defining Symbols
A symbol is an SVG element that can be instantiated with use.
- <defs><symbol id='arrow' viewBox='0 0 24 24'><path d='M5 12h14M12 5l7 7-7 7'/></symbol></defs>
- Symbol is not rendered until referenced with <use>
- Symbol can have its own viewBox  crucial for correct scaling
- Define all symbols at the top of the SVG or in a hidden sprite
- <symbol id='...'>: the id is what you reference with href
Using Symbols with use
Reference symbols anywhere with the use element.
- <svg class='icon'><use href='#arrow'/></svg>
- Size: control via CSS on the wrapping <svg>: .icon { width: 24px; height: 24px; }
- Color: set fill='currentColor' on paths inside symbol; control with CSS color
- External sprite: <use href='/sprite.svg#arrow'/>  references from a separate file
- Stacked use: multiple use elements with the same symbol  each can have different position/size
symbol vs g vs defs
Understanding when to use each grouping mechanism.
- <symbol>: reusable template  not rendered until used, has own viewBox
- <g>: simple group  rendered in place, no own viewBox
- <defs>: storage container  anything in defs is not rendered until referenced
- Use symbol for: icon definitions, repeated graphical elements
- Use g for: grouping related paths in a composition for transforms/opacity
- Use defs for: gradients, filters, clip paths, and symbols
Frequently Asked Questions
What's the difference between symbol and g in SVG?
<symbol> creates a reusable template with its own viewBox, not rendered until instantiated with <use>. <g> is a rendered group  it appears in the document where defined.
Can I override a symbol's colors at the use site?
Yes  if the symbol paths use fill='currentColor', set CSS color on the wrapping <svg> element. Each <use> can have a different color: <svg style='color:red'><use href='#icon'/></svg>
Can I scale a symbol instance independently?
Yes  add width and height to the <use> element or control the wrapping <svg> dimensions via CSS. The symbol's viewBox scales to fit the display size.
Do SVG symbols work in CSS background-image?
No  background-image SVG doesn't support cross-document references. Only inline SVG with <use> can reference symbols.
How do I animate only one use instance of a symbol?
Target the wrapping <svg> or <use> element with CSS animation. Since <use> creates shadow DOM instances, you can't style individual instances' internal paths  design symbols using currentColor for flexible per-instance styling.
Related guides
Ready to Convert Your Image to SVG?
Free online converter — no sign-up, no watermarks, results in under 3 seconds.
Try It Free — Convert Image to SVG