Open-source project
tabler/tabler-icons avatar
tabler/tabler-icons

Tabler Icons: 6202 MIT SVG Icons, Fifteen Packages, One Version Number

A set of over 6100 free MIT-licensed high-quality SVG icons for you to use in your web projects.

21,809 stars1,209 forksJavaScriptMIT

At a glance

What is it?
Tabler Icons ships 6202 outline and filled SVG icons on a 24x24 grid with a 2px stroke, plus framework-specific packages for React, Vue, Svelte, Angular and more. The install is trivial; the interesting part is the package split and the release cadence you inherit.
Who is it for?
Adopt Tabler Icons if you want one visual language across a React, Vue or Svelte app and a static site, and you are willing to pin a version and re-check icon names on upgrade. Do not adopt it if you need brand logos, multi-colour illustrations, or a tree-shaken import path for a component that renders a single icon at runtime.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Tabler Icons Solves, and Who It Is For

The README describes the project as a set of 6202 free, MIT-licensed SVG icons, each drawn on a 24x24 grid with a 2px stroke. That grid and stroke specification is the actual product. It means an icon pulled from the outline set and an icon pulled from the filled set line up visually, and a designer adding a new one has a fixed frame to work inside. If you have ever mixed two icon libraries in one navigation bar and watched the stroke weights disagree, this is the problem Tabler Icons is built to avoid.

The audience is web projects. The topics list names Bootstrap Icons, React, Svelte, CSS and SVG, and the packages cover React, React Native, Preact, Vue 3, Svelte 4, Svelte 5 runes, SolidJS, Astro and Angular. That is a wider framework spread than most icon sets attempt. The split into 5148 outline icons and 1054 filled icons matters for interface work: outline reads as navigation and secondary actions, filled reads as state. You get both from one dependency, which is the practical reason to pick this over assembling a set from several sources.

It is not a brand asset library. Nothing in the README suggests logos or multi-colour artwork, and the format is single-path SVG with stroke styling, not layered illustration.

How the Packages and the 24x24 Grid Fit Together

The repository is a monorepo. The top level holds icons/, packages/, src/, docs/ and a pnpm-workspace.yaml, and the root package.json is marked private with a build script that chains validate, update, optimize, build:packages, preview, changelog-image, zip and update-readme. So the published artifacts are generated from a single icon source tree, and every package shares the same version number. The README states this explicitly: all packages are published to npm from this repository and share the same version number. In practice that means @tabler/icons, @tabler/icons-react and @tabler/icons-webfont all move to 3.47.0 together.

The mechanism behind the framework packages is generation, not hand-written wrappers. The build script runs build:icons, build:sprite, build:react, build:react-native, build:preact, build:solidjs and build:astro in sequence, so a React component is produced from the same SVG file that ends up in the raw package. The SVG itself carries the styling: fill is none, stroke is currentColor, stroke-width is 2, and the line caps and joins are round. Because stroke is currentColor, an inline icon inherits the text colour of its container, and the README notes you can change size, colour and stroke-width from CSS.

There is a second layer worth knowing about: aliases.json sits at the repository root, and the build has separate import-tags and import-categories scripts. Icon metadata (tags and categories) ships with the raw SVG package, which is how the browser at tabler.io/icons is able to offer search. If you are building an icon picker, that metadata is the reason to install @tabler/icons rather than copying SVG files out of the repository by hand.

Installing Tabler Icons and Rendering the First Icon

The README gives three install commands for the raw SVG package. Pick your package manager and run one.

bash
npm install @tabler/icons
bash
yarn add @tabler/icons
bash
pnpm add @tabler/icons

The README says to replace @tabler/icons with any package from its table to install a framework-specific version. So a React project installs @tabler/icons-react, a Vue 3 project installs @tabler/icons-vue, and a Svelte 5 project installs @tabler/icons-svelte-runes. There is also a direct download option: the README points at the latest release on GitHub.

Once the raw package is installed, the simplest use is an image tag. The README shows this form, and notes that size is controlled with CSS when you load an icon this way.

html
<img src="path/to/icon.svg" alt="icon title" />

For inline use, the README shows pasting the file contents into your HTML. The attributes are the part that matters: the class names, the 24x24 viewBox, fill="none", stroke="currentColor" and stroke-width="2".

html
<svg
  xmlns="http://www.w3.org/2000/svg"
  class="icon icon-tabler icons-tabler-outline icon-tabler-activity"
  width="24"
  height="24"
  viewBox="0 0 24 24"
  fill="none"
  stroke="currentColor"
  stroke-width="2"
  stroke-linecap="round"
  stroke-linejoin="round"
>
  <path stroke="none" d="M0 0h24v24H0z" fill="none" />
  <path d="M3 12h4l3 8l4 -16l3 8h4" />
</svg>

That example is the activity icon, and the path data draws a small line chart. Because stroke is currentColor, dropping this into a red parent renders red without any extra CSS. That is the whole first-use loop: install, reference or paste, style with the surrounding text colour.

Where Tabler Icons Stops Being the Right Tool

The clearest limitation is scope. This is a UI icon set on a fixed grid, and the README does not present it as anything else. If your interface needs a company logo, a payment brand mark, a flag in accurate proportions, or a two-colour illustration, none of that is described here, and the single-stroke format works against it.

The second limitation is version coupling. Because all packages share one version number, upgrading the React package also moves the raw SVG package and the webfont, whether or not you use them. Icon names are not frozen by the README either. The release history shows three releases between 2026-07-17 and 2026-09-18, so names and sets can shift within a couple of months. A project that imports icons by name and never re-reads the changelog is exposed to a rename on a minor bump.

The third is bundle behaviour. The README documents the packages and the usage forms, but it does not document per-icon import paths or a tree-shaking guarantee for the framework packages. If you need certainty that a 6202-icon set does not pull unused icons into a bundle, the README will not settle that question for you, and you should check the built output of your own bundler rather than assume.

Finally, the webfont package is a different trade-off from the SVG packages. Icon fonts render as text, which means a missing font file shows a box instead of nothing, and you lose per-icon stroke control. The README lists the webfont package and its CSS and SCSS files but does not argue for it over SVG.

Tabler Icons Compared with Lucide and Font Awesome

The search data around this project keeps returning two comparisons, so it is worth being concrete about the difference in approach rather than ranking them.

Font Awesome is the oldest of the three and the one built around a font-first model. Its icon names are widely recognised and its brand icon coverage is a large part of its appeal. Tabler Icons takes the opposite position: the primary artifact is an SVG file, the webfont is one package among fifteen, and there is no brand set described in the README. If your interface is mostly standard UI glyphs and you want stroke control, the SVG-first design is the more direct fit. If you need brand marks, Font Awesome is addressing a need this project does not.

Lucide is closer in spirit: a stroke-based SVG set. The practical difference visible here is the package matrix. Tabler Icons publishes separate packages for React, React Native, Preact, Vue 3, Svelte 4, Svelte 5 runes, SolidJS, Astro and Angular, plus sprite, webfont, PNG, PDF and EPS. That is a lot of surface area to keep in step, and the shared version number is how the project manages it. The cost is that a framework you care about may be represented by a package that lags the icon set, or by a package you have to check exists before you plan around it. Verify the package you need is in the table before you commit to the set.

Licence, Release Cadence and Upgrade Cost

The licence is MIT, stated in the README badge and in the LICENSE file at the repository root. For most teams that is the permissive end of the spectrum: you can use the icons in commercial products without a separate agreement. This is a description of what the repository declares, not legal advice, and if your organisation has a policy on asset provenance you should route the LICENSE file through it.

The maintenance picture is straightforward. The repository is not archived, and the last push was on 2026-09-18. The release history shows v3.45.0 on 2026-07-17, v3.46.0 on 2026-07-28 and v3.47.0 on 2026-09-18. That is a roughly two-month gap between the last two releases, with a shorter gap before that. Treat the set as something that moves on a schedule you do not control.

Upgrade cost is where the shared version number bites. Upgrading one package bumps the version of the whole family, so a lockfile diff after a minor bump can touch several packages at once. The repository has a changelog script and a changelog-commit script, and the release history is the record to read before you bump. The practical check before upgrading is whether any icon you import by name was renamed or removed, because a rename fails at build time in a typed framework package and silently renders nothing in an inline SVG you pasted by hand.

Editorial conclusion

Adopt Tabler Icons if you want one visual language across a React, Vue or Svelte app and a static site, and you are willing to pin a version and re-check icon names on upgrade. Do not adopt it if you need brand logos, multi-colour illustrations, or a tree-shaken import path for a component that renders a single icon at runtime. Before you commit, check the icon you actually need exists in both the outline and filled sets, and confirm which of the fifteen npm packages matches your framework, because the raw SVG package and the React package are different installs with different import syntax.

Frequently asked questions

Are Tabler Icons free?

Yes. The README describes them as free, MIT-licensed SVG icons, and the repository carries a LICENSE file at the root. The MIT terms allow commercial use.

How to install Tabler Icons?

Install the package that matches your format or framework, for example npm install @tabler/icons for the raw SVG files, or @tabler/icons-react for React components. The README also points to the latest GitHub release for a direct download.

How to use Tabler Icons in HTML?

The README gives two forms: an img tag pointing at the SVG file, with size controlled by CSS, or the SVG content pasted inline. Inline icons carry stroke="currentColor", so they inherit the surrounding text colour.

How to use Tabler Icons in React?

Install @tabler/icons-react rather than the raw SVG package, and import the components from it. The README lists the React package with its own documentation link in the packages table.

What is Tabler Icons?

It is a set of 6202 free, MIT-licensed SVG icons, each designed on a 24x24 grid with a 2px stroke. The set splits into 5148 outline icons and 1054 filled icons and is published as fifteen format and framework packages.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. tabler/tabler-icons on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/tabler-tabler-icons.svg)](https://hysenlabs.com/projects/tabler-tabler-icons)