ICON OOP
Icons & Logos
Compare

Icon sets compared

Choosing an icon set is a decision you make once and live with for years. Here is what each of the seven sets in ICON OOP is actually good at, including the parts their own documentation does not lead with.

HomeIcon Sets

ICON OOP bundles seven freely licensed collections. They are not interchangeable. Each was drawn to different rules by different people for different purposes, and mixing them is the most common cause of an interface that looks subtly wrong.

If you want the answer without the reasoning

Building a product interface: Lucide, unless you need unusual icons, in which case Tabler. Building a design system where icon weight is a token: Phosphor. Working inside Google's design language: Material Symbols. Showing company logos: brand logos for consumer marks, Devicon for developer tooling. Emoji are their own thing.

The comparison at a glance

SetRoughlyStyleLicenceBest for
Lucide1,700Outline, 2px, 24 gridISCClean product interfaces
Tabler5,000+Outline + filled, 24 gridMITBroad coverage, dashboards
Phosphor1,500 x 6 weightsSix weights, 256 gridMITDesign systems, tunable weight
Material Symbols3,800Three styles, four axesApache 2.0Google-aligned products
Brand logos3,400 mono + 1,400 colourLogosCC0Company and product marks
Devicon570+Tech logos, 4 variantsMITLanguages, frameworks, tooling
Emoji1,700Full colourCC-BY 4.0Reactions, expressive UI

Note the licence column. Six of the seven need no attribution. Emoji, under CC-BY 4.0, does. That single difference is the one people miss.

The four UI sets, in detail

Lucide

Good at: consistency. It is drawn to a written specification, so an icon added last month sits correctly beside one from 2020. Restrained, geometric, and it disappears into an interface rather than decorating it.

Bad at: coverage of niche concepts, and filled variants. If your product has a specialist domain you will hit gaps.

Choose it when you want the icon question settled and forgotten about.

Tabler

Good at: having the icon. Over 5,000 of them, including matched outline and filled pairs, which makes selected and unselected states trivial. Shares Lucide's 24 grid and 2px stroke.

Bad at: restraint. With this many options, two developers will pick two different icons for the same concept, and six months later you have three settings icons.

Choose it when you are building something domain-heavy: clinical, logistics, finance, internal tooling.

Phosphor

Good at: flexibility. Six weights per icon means icon weight becomes a design token alongside type weight, and the React package lets you set it globally.

Bad at: mixing with anything else, because of the 256 grid. And it gives you a decision to make on every icon, which small teams may not want.

Choose it when you are building a design system properly rather than picking icons for a project.

Material Symbols

Good at: the variable axes, particularly optical size, which changes how much detail an icon carries at different display sizes. Nothing else free does this. And fill as a continuous axis means you can animate it.

Bad at: looking like anything other than a Google product. That is a feature if you are building an Android app and a liability if you are building a distinctive brand.

Choose it when you are inside Google's design language or need runtime axis control.

The three logo and emoji sets

Brand logos come from two CC0 collections: monochrome single-path marks with official brand hex codes as metadata, and full-colour logos including gradients. Use monochrome inside your own design system, full colour when the logo is the subject.

Devicon covers programming languages, frameworks, databases and dev tooling, in original, plain, line and wordmark variants. It exists because general logo sets do not cover PostgreSQL, Terraform or Kubernetes well.

Emoji from Twemoji, useful when you need every user to see the same picture rather than their own platform's rendering. The CC-BY attribution requirement applies.

All three are logo or artwork sets rather than UI icon sets, so the one-set rule does not apply to them. Mixing brand logos with your UI icon set is normal and expected.

How to actually choose

Skip the feature comparison and run this instead. It takes fifteen minutes and gives you a better answer than any table.

  1. List your ten hardest icons. Not "home" and "settings". The ones specific to your product: whatever concept your domain has that a general icon set might not.
  2. Search for all ten in each candidate set. The set that has eight or nine of them without compromise is your answer, and this usually decides it outright.
  3. Put the found icons in a row at your real display size. 16 or 20 or 24 pixels, not 64. Check they read clearly and carry equal weight.
  4. Check them against your typeface. Rounded icons want humanist type. Sharp icons want tighter grotesques. Mismatch here is subtle and permanent.
  5. Check the filled or active state you will need. If your navigation has selected states, confirm the set can express them.

On mixing sets

The standard advice is never mix, and the standard advice is right, with a caveat worth knowing.

Mixing fails because sets differ on three axes simultaneously: stroke weight, corner radius, and level of detail. Any one difference is survivable. All three at once produces an interface where icons look like they came from different products, which they did.

The caveat: Lucide and Tabler mix better than most, because both use a 24 grid with a 2px rounded stroke. If you are genuinely stuck, use one as your base and take only the missing icons from the other, then check them side by side at your real size. This is a compromise, not a strategy.

What never works is taking whichever icon looks best for each individual search. That is how a project ends up with icons from five libraries and nobody able to say why the interface feels off.

Licences side by side

LicenceSetsCommercial useAttribution
CC0Brand logosYesNone required
MITTabler, Phosphor, DeviconYesNotice with source only
ISCLucideYesNotice with source only
Apache 2.0Material SymbolsYesNotice, note changes
CC-BY 4.0EmojiYesVisible credit required

"Notice with source only" means you keep the licence file if you redistribute the icon files themselves. It does not mean a credit on your website. The full explanation is in icon licensing, and brand marks carry separate trademark considerations regardless of file licence.

Switching sets later

It is more painful than choosing well, and less painful than people fear. What makes it manageable is having a written icon inventory: a list of every concept in your product and the icon name you use for it. With that, switching is a mapping exercise. Without it, it is an audit of your entire codebase first.

If you are early enough to still be deciding, write the inventory now regardless of which set you pick. It is the single highest-value thing you can do about icons, and it takes ten minutes.

Frequently asked questions

For most product interfaces, Lucide, because it is drawn to a strict specification and stays consistent as it grows. Choose Tabler instead if your product needs unusual domain-specific icons, Phosphor if you want icon weight as a design token, and Material Symbols if you are working inside Google's design language or need runtime variable axes.
It is best avoided. Sets differ simultaneously in stroke weight, corner radius and level of detail, and the combination produces an interface where icons visibly come from different sources. Lucide and Tabler mix better than most because both use a 24 grid with a 2 pixel rounded stroke, but this is a compromise rather than a plan. Brand logos and emoji are separate categories and mix freely with any UI set.
Only the emoji, which are licensed CC-BY 4.0 and require a credit line naming the source and linking to the licence, placed somewhere findable such as a footer or credits page. The six icon libraries use CC0, MIT, ISC and Apache 2.0, none of which require visible attribution on your site, though you should retain licence notices if you redistribute the source files.
Most products use between 30 and 120 distinct icons, which is a small fraction of any of these libraries. That means library size matters far less than whether the library covers your specific hard cases. Test a set against the ten most unusual icons your product needs rather than comparing total icon counts.
List the ten hardest icons your product needs, the ones specific to your domain rather than generic actions, then search for all ten in each candidate set. The set that covers eight or nine without compromise is usually the answer. Then check the found icons at your real display size and against your typeface before committing.
Use a set unless icons are a core part of your brand identity. A custom set needs a specification, ongoing maintenance and a person who owns it, and without those it drifts within a year. A well-maintained free set gives you consistency you would otherwise have to manufacture, and lets you spend design time on things users actually notice.

Try all seven sets in one place

Search across every set at once, compare icons side by side, then export the one you want.

Open the ICON OOP tool