Tabler Icons started as the icon set for the Tabler admin dashboard project and outgrew it. It is maintained by Paweł Kuna and a large group of contributors, released under the MIT licence, and now carries more than 5,000 icons across outline and filled styles.
Most icon sets solve the consistency problem by staying small. Tabler solved the coverage problem instead. If your product has an unusual domain, medical, logistics, finance, agriculture, manufacturing, Tabler is usually the first set that actually has your icon rather than a vague approximation of it.
The short version
Tabler is drawn on a 24 by 24 grid with a 2px stroke and rounded caps, the same base rules as Lucide, so the two mix better than most libraries. The real differentiator is the filled set: most outline icons have a filled twin with the same name, which makes selected and unselected states trivial. Licence is MIT, no attribution required.
What coverage actually buys you
Icon coverage is not about having more pictures. It is about how often a designer has to compromise.
When a set is missing an icon, one of three bad things happens. Someone substitutes a vaguely related icon and the interface gets slightly less legible. Someone pulls a single icon from a second library and the visual consistency breaks. Or someone draws a new one, which now needs to be maintained forever and will drift from the set within a year.
Tabler's size means the first of those happens far less often. For a general product this is a mild convenience. For a domain-heavy product, an internal tool, a clinical system, a warehouse app, it is the difference between a coherent interface and a patchwork.
Outline and filled pairs
This is Tabler's most underrated feature. Most outline icons have a filled counterpart drawn on the same silhouette. The convention is a -filled suffix, so star and star-filled, heart and heart-filled, bookmark and bookmark-filled.
That pairing solves a genuine interface problem cleanly:
| Pattern | Unselected | Selected |
|---|---|---|
| Bottom tab bar | Outline | Filled |
| Favourite / like | Outline | Filled, usually recoloured |
| Saved item | Outline bookmark | Filled bookmark |
| Rating stars | Outline | Filled up to the rating |
Doing this without a matched pair means either recolouring the same outline icon, which reads as weak, or hand-filling an outline icon, which rarely looks right because the silhouette was drawn for a stroke.
Naming and search patterns
Names are lowercase kebab-case and lean descriptive rather than semantic: brand-github, device-mobile, square-rounded-check, arrow-narrow-right. Three prefixes are worth knowing because they cover a large share of the set.
brand-for brand and product marks, for examplebrand-figma.device-for hardware, for exampledevice-laptop.file-for document types, for examplefile-spreadsheet.
Tabler's naming is more literal than Lucide's. If you are searching for a concept rather than a shape, search the shape. Looking for "delete", search "trash". Looking for "settings", search "adjustments" as well as "settings", because Tabler has both and they mean different things.
Installing Tabler
| Stack | Package |
|---|---|
| React | @tabler/icons-react |
| Vue 3 | @tabler/icons-vue |
| Svelte | @tabler/icons-svelte |
| Raw SVG files | @tabler/icons |
| Webfont | @tabler/icons-webfont |
The webfont exists, and for most projects it is the wrong choice. An icon font ships the entire set as one blocking file, cannot be multi-coloured, and is read badly by screen readers unless carefully hidden. The reasoning is set out in SVG vs icon fonts. Use the SVG packages unless you are maintaining something legacy.
Subsetting: the thing nobody does and should
A real product uses somewhere between 30 and 120 distinct icons. Tabler has 5,000. Those two numbers should shape how you use it.
The practical approach is to treat Tabler as a source, not a dependency. Pick your icons, export them, and commit them to your repo as a small local set, either as individual SVGs or a single sprite sheet. You get four things from this: a fixed, reviewable icon inventory, no package version churn changing your icons under you, no bundler configuration to argue about, and a natural checkpoint where someone has to justify adding icon 121.
Why this matters more than bundle size
Modern bundlers tree shake, so the unused 4,900 icons usually do not ship. The real cost of an unmanaged icon library is not kilobytes, it is that nobody knows which icons the product uses, so nobody can keep them consistent. A committed local set turns icons into a reviewable design decision instead of an import someone made at 6pm.
The risk of a 5,000 icon library
Breadth invites inconsistency. With this many options, two developers building similar features will pick two different icons for the same concept: one uses settings, one uses adjustments, one uses tool. Six months later your product has three settings icons and users have learned none of them.
The fix is not a smaller library. It is a one-page icon inventory: concept, chosen icon name, where it is used. Ten minutes to write, and it prevents the single most common icon problem in growing products.
Tabler vs Lucide vs Phosphor
| Tabler | Lucide | Phosphor | |
|---|---|---|---|
| Roughly | 5,000+ | 1,700 | 1,500 icons, 6 weights each |
| Licence | MIT | ISC | MIT |
| Filled variants | Yes, matched pairs | Limited | Yes, plus duotone |
| Native grid | 24 by 24 | 24 by 24 | 256 by 256 |
| Best when | You need obscure icons | You want restraint | You want tunable weight |
Tabler and Lucide share a grid and stroke weight, so mixing them is the least-bad mixing you can do if you are genuinely stuck. Phosphor's different native grid means it rarely mixes cleanly with either.
Licence in plain English
Tabler Icons is MIT licensed. Commercial use, modification, redistribution and use inside paid products are all permitted. Keep the licence text with the source if you redistribute the files. No visible attribution is required on your site.
The exception is the brand- icons. The SVG path data is MIT, but the logos those paths depict are trademarks owned by the companies concerned. Using a GitHub mark to link to GitHub is normal nominative use. Using it to imply GitHub endorses your product is not. See icon licensing.