Looking to use the SVG + JS method to get your icon Sprites to make repeated icons more performant on your page? We’ve got your back.

Advertisement

We’ll cover the basics of when, and how, to use SVG Sprites to improve load time on sites that repeat the same icons.

Before You Get Started

Make sure you:

You might be wondering how rendering icons with JavaScript affects performance. Well you're not the only one. We worried about this while we were developing it and even took some special measures to make sure it was as fast as we could make it.

Our testing shows that for the typical number of icons most people use on a site, the loading and rendering time for SVG+JS method is faster than Web Fonts.

A Case for SVG Symbols

The case below is a great one for SVG Symbols – there are a bunch of the same icon repeated on the page, so you'll get a big performance boost by loading each of them only once using the step-by-step method below.

Font Awesome 6 installed and being activated in Font Explorer X on Mac OS X

Step-by-Step

We'll define these icons as symbols: pencil, trash, and star.

  <!-- Define the symbols, these are invisible on the page -->
  <i data-fa-symbol="delete" class="fas fa-trash fa-fw"></i>
  <i data-fa-symbol="edit" class="fas fa-pencil fa-fw"></i>
  <i data-fa-symbol="favorite" class="fas fa-star fa-fw"></i>

  <!-- Use the defined symbols -->
  <svg><use xlink:href="#edit"></use></svg>
  <svg><use xlink:href="#delete"></use></svg>
  <svg><use xlink:href="#favorite"></use></svg>

Using data-fa-symbol informs Font Awesome SVG with JavaScript to create the symbol. The value of this attribute becomes the name.

  <!-- Name symbols with the value of data-fa-symbol -->
  <i data-fa-symbol="picture-taker" class="fas fa-camera"></i>

  <!-- Use the defined name -->
  <svg><use xlink:href="#picture-taker"></use></svg>
Advertisement

Make Sure to Add Some CSS

One of the downsides to SVG sprites is that extra styling is necessary to make them behave. When using symbols you will need to handle this yourself.

  <!-- A quick, reasonable place to start with styling your symbols -->
  <style>
    .icon {
      width: 1em;
      height: 1em;
      vertical-align: -.125em;
    }
  </style>

  <!-- Name symbols with the value of data-fa-symbol -->
  <i data-fa-symbol="picture-taker" class="fas fa-camera"></i>

  <!-- Use the defined name -->
  <svg class="icon"><use xlink:href="#picture-taker"></use></svg> Say Cheese!

Learn more

You're viewing the Version 6 Beta

It's all the awesome of 5, but now more six-y! Version 6 brings over 13,000 icons across 5 styles – including the new Thin style! – and includes more and faster services.

Get the Deets on Version 6

Head Back to Our Current Version 5 Release

Need a Hand?

If you’re stuck or have a question, check our Troubleshooting docs, all of the Font Awesome threads on Stack Overflow, or contact our community on GitHub.

Or get Real Human Support™ with a Pro Subscription!