Icons

Heroicons vs Material Symbols

Heroicons and Material Symbols are two of the most widely used open-source icon sets. Both are free, both ship framework packages, and both will look perfectly reasonable in a product UI — which is exactly why the choice is annoying. This page puts the two side by side using the actual artwork and the real numbers.

The short answer

  • Material Symbols is the broader set: 18,547 icons against 1,297 in Heroicons — roughly 1330% more coverage, which matters most if you build interfaces that need unusual glyphs.
  • Material Symbols gives you more visual range: 4 variants per concept (variable weight, fill, grade and optical size axes), where Heroicons ships 2.
  • Both are MIT, so licensing is not a deciding factor here.

Specifications compared

Specification comparison
 HeroiconsMaterial Symbols
Icons1,29718,547
Visual variants per concept2 — outline and solid4 — variable weight, fill, grade and optical size axes
Design grid16/20/2424×24
LicenseMITApache 2.0
Attribution requiredNoNo
Official React package@heroicons/react@material-symbols/svg-400

Same icons, both libraries

Every pair below is the same concept rendered from each library's own source files. This is the part you cannot get from a written review — the difference in stroke weight, corner rounding and optical size is the thing you will actually notice in your interface.

HeroiconsMaterial Symbols 
home
search
settings
user
heart
star
cart
bell
mail
calendar

Which one should you choose?

Pick Heroicons when

Tailwind CSS projects of any size, and teams that want their icons styled with the same utilities as the rest of their markup. The three drawn sizes also make Heroicons a good fit for interfaces with a strict type and spacing scale.

Consider otherwise if: Outside the Tailwind ecosystem the utility-class ergonomics matter less, and Lucide or Tabler give you more icons. For dense 15px-scale interfaces, Radix Icons is drawn specifically for that.

Pick Material Symbols when

Products that want continuous control over icon weight and fill state, and teams that would rather ship one font file than manage five icon sets.

Consider otherwise if: If you need individually imported SVG components with tree-shaking, the older Material Icons set or Lucide is a better fit — a variable font loads all 18,547 glyphs even if you use thirty of them.

Coverage

Heroicons contains 1,297 icons and Material Symbols contains 18,547. Heroicons is made by the team behind Tailwind CSS, and it is designed to drop straight into Tailwind projects. The 1,297 icons ship in outline and solid variants, each available at 16px, 20px, and 24px — three sizes that are drawn separately rather than scaled, so optical weight stays correct at each one.

Material Symbols is Google's current icon format and the successor to Material Icons. It is built on variable font technology: all 18,547 icons live in a single font file, and four axes — Weight, Fill, Grade, and Optical Size — can be adjusted continuously rather than by swapping between five static themes.

Licensing

Heroicons is released under MIT. Commercial use, modification and redistribution with no attribution required.

Material Symbols is released under Apache 2.0. No attribution required, but carries an explicit patent grant and requires notice for modified files.

Using them from IconStash

You do not have to commit to one. IconStash indexes both libraries, so you can search a concept once and see how each set drew it, then export SVG or PNG at any size and colour. Start with Heroicons or Material Symbols, or browse every library comparison.

Frequently asked questions

Is Heroicons or Material Symbols better for React projects?

Both have first-party React packages: @heroicons/react and @material-symbols/svg-400. Heroicons has the smaller catalogue, so for a React app the practical difference is coverage and visual style rather than integration effort. Both tree-shake, so bundle size tracks the number of icons you import, not the size of the library.

Which has more icons, Heroicons or Material Symbols?

Heroicons has 1,297 icons and Material Symbols has 18,547. Material Symbols is larger by about 1330%. Raw count is not the whole story though — a 20,000-icon set with many near-duplicate variants can be slower to search than a tightly edited 2,000-icon set.

Can I mix Heroicons and Material Symbols in one interface?

You can, but it usually looks wrong. Each library draws to its own grid and stroke weight — Heroicons uses 16/20/24 and Material Symbols uses 24×24 — so icons from both sit slightly differently next to each other. If you must mix them, keep each library to a distinct area of the interface rather than interleaving them in the same toolbar.

What licenses do Heroicons and Material Symbols use?

Heroicons is MIT: Commercial use, modification and redistribution with no attribution required. Material Symbols is Apache 2.0: No attribution required, but carries an explicit patent grant and requires notice for modified files. Neither requires payment, but attribution rules differ, so check before shipping in a product where credit is inconvenient.

Do Heroicons and Material Symbols include filled and outline versions?

Heroicons offers outline and solid; Material Symbols offers variable weight, fill, grade and optical size axes. If you need to express selected and unselected states with the same glyph, the library with more variants saves you from importing a second set.

Which is better for small sizes like 16px?

At 16px, stroke weight and counter size matter more than coverage. Heroicons draws on a 16/20/24 grid and Material Symbols on 24×24. Libraries that redraw per size rather than scaling — such as Fluent UI — generally hold up best. The reliable test is to preview both at your actual render size, which you can do on any icon page on IconStash.