Website review
This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.
What is Heroicons?
Heroicons is an open-source set of interface icons for web and app development, distributed under the MIT license with no attribution required. It's aimed at developers and designers who need clean, consistent UI glyphs — things like arrows, chevrons, user avatars, and status indicators — without paying for a commercial icon pack or worrying about licensing terms.
The icons are designed by Steve Schoger, which matters if you care about visual consistency: the set is drawn to a single grid and stroke style, so mixing icons within a project looks deliberate rather than cobbled together.
What you get in practice
- A library of interface-oriented icons rather than illustrative artwork — suited to buttons, navigation, form fields, and empty states.
- Free commercial use under MIT, with no attribution requirement.
- A browsable website for finding and copying icons, plus packages for common front-end workflows.
Who it suits, and the trade-offs
| Situation | Heroicons fits? |
|---|---|
| React or Vue app needing a consistent UI icon set | Yes — well-trodden path |
| Needing brand logos or multicolor illustrations | No — it's a UI glyph set |
| Wanting many visual styles (duotone, filled, sharp, rounded variants across the board) | Partly — style range is narrower than some large commercial libraries |
| Requiring a specific niche glyph (industry-specific symbols) | Check first — coverage is broad but not exhaustive |
The main trade-off is scope versus coherence: a smaller, tightly drawn set stays visually consistent, but you may hit a missing icon and need a second source. If that happens, keep the fallback icon's stroke weight and corner radius close to Heroicons so the mismatch isn't obvious.
A concrete next step: open Heroicons, search for the three or four icons your current screen actually needs, and compare their stroke weight against your existing UI. If they sit comfortably alongside your buttons and text, adopt the set project-wide rather than mixing sources screen by screen.
How do I use Heroicons in my web or app project?
Heroicons is a set of MIT-licensed interface icons you can drop into a web or app project without paying or crediting anyone. The simplest way to use it is to pick the icon you need from the library, then bring it into your codebase in whatever form your stack prefers.
Common ways to use it
- Copy the SVG: Download or copy an individual icon's SVG markup and paste it directly into your HTML, JSX, or component file. This gives you full control over size, color, and stroke.
- Import as a component (React/Vue): Heroicons ships as packages for popular frameworks, so you can import icons by name and render them like any other component. This is convenient when you use many icons and want tree-shaking.
- Use it in a design tool: The SVGs also work in Figma and similar tools if you're designing before coding.
Outline vs. solid
Heroicons offers outline and solid variants. Outline icons use strokes and suit navigation, toolbars, and places where you want a lighter feel. Solid icons use filled shapes and read better at small sizes or when you need stronger visual weight, such as status badges or primary actions.
A practical example
Suppose you're building a dashboard. Import the outline bell icon for notifications, the solid check-circle for completed tasks, and size them with your CSS or component props rather than editing each SVG by hand. Keeping a single icon component wrapper makes it easy to change size and color globally.
Decision criteria
- Few icons, full control: copy SVGs inline.
- Many icons, component-based app: use the framework package.
- Design-first workflow: use the SVGs in your design tool, then export.
For the official source and current usage docs, see Heroicons. If you need icons beyond Heroicons' style, Lucide and Tabler Icons are comparable open-source sets worth comparing on stroke style and icon coverage.
Can I use Heroicons for commercial projects without attribution?
Yes. Heroicons is released under the MIT license, which permits commercial use, and the project states that no attribution is required. That applies whether you are building a client site, a paid SaaS product or a mobile app.
What the license means in practice
- You can copy, modify and redistribute the icons, including in closed-source products.
- You can sell products that include them.
- You do not need to credit Steve Schoger, the Heroicons project or its website in your UI, documentation or marketing.
- MIT still requires that the copyright and license notice be preserved in copies of the software itself, so keep the license file if you vendor the icon set into a repository. This is a normal open-source obligation, not a visible-credit requirement.
Practical trade-offs
- Consistency: Heroicons is a single, coherent outline and solid set, which suits dashboards, admin panels and product UIs where a mixed icon library looks sloppy.
- Coverage: General interface actions are well covered, but highly specialised or brand-specific symbols may be missing, so budget time for a few custom icons.
- Style lock-in: Because the set has a recognisable look, using it alongside a very different icon family can feel inconsistent. Pick one primary family.
- Maintenance: Icons are SVG, so they scale cleanly and can be styled with CSS or component props. If you use a framework wrapper, check that it tracks the current release rather than a stale fork.
Next step
Before shipping, confirm how you are consuming the icons: an npm package or component library usually carries the license notice automatically, while manually copying SVGs into a design file does not. For the canonical terms, see Heroicons. If you need a broader catalogue to fill gaps, compare with Lucide or Tabler Icons, both of which also use permissive licenses, and check each project's current license text yourself.
How do I customize the size, color, or stroke width of Heroicons icons?
Heroicons ships as raw SVG, so size, color and stroke width are controlled by the SVG attributes and CSS you apply — not by a built-in configuration panel on Heroicons.
Size
Set the width and height attributes on the <svg> element, or override them with CSS:
<svg width="32" height="32" ...>
In React/Vue components, pass a class and size it via CSS (width/height in em or rem) so it scales with surrounding text. Keeping a single source of truth for sizing (a utility class or component prop) prevents mismatched icons across a page.
Color
Heroicons use currentColor for their fill or stroke in most distributions, so the icon inherits the text color of its parent. Change color on the parent or the icon itself:
.icon { color: #2563eb; }
This makes them easy to theme, including dark mode, without editing the SVG.
Stroke width
Outline-style icons expose a stroke-width attribute on the SVG. You can edit it directly or override with CSS:
.icon { stroke-width: 1.5; }
Solid-style icons use fill instead of strokes, so stroke width does not apply to them — choose the outline variant if you need that control.
Practical trade-off
Heavier strokes and larger sizes read better at small display sizes or on low-density screens; thinner strokes and smaller sizes suit dense UIs and large headings. Test at the actual rendered size rather than zoomed in, since stroke weight that looks right at 48px can look muddy at 16px.
A useful next step: pick one icon, set its color via currentColor, then adjust stroke-width in 0.25 increments at your real display size until it matches your text weight.
What is the difference between the outline and solid versions of Heroicons?
Heroicons ships each icon in two visual styles: outline and solid. The difference is mainly how much visual weight the icon carries, not what it depicts.
Outline
- Drawn as strokes with an open interior, typically on a 24px grid.
- Reads as lighter and more airy, so it sits quietly next to text.
- Works well for secondary actions, navigation, form fields and dense toolbars where many icons appear at once.
Solid
- Drawn as filled shapes with no interior stroke.
- Reads as heavier and more emphatic, so it draws the eye.
- Works well for primary actions, active or selected states, small sizes where thin strokes would blur, and places needing strong contrast.
Choosing between them
A practical rule: use outline for most of the interface, then switch to solid when an element becomes active or important — for example an outline bell in the header that becomes solid when notifications are unread, or outline navigation icons where the current tab is solid. This gives you a state change without inventing a new icon.
Two other factors matter:
| Factor | Outline | Solid |
|---|---|---|
| Visual weight | Light | Heavy |
| Best at small sizes | Weaker | Stronger |
| Pairing with text | Subtle | Dominant |
| Typical role | Default and secondary | Emphasis and selected |
Consistency is the trade-off to watch. Mixing the two randomly looks accidental; mixing them by rule (state, hierarchy, size) looks deliberate. Also check rendering at the actual size you will ship — a 24px outline icon scaled down to 16px can lose detail, while a solid icon at that size usually stays legible.
A useful next step: pick one icon you already need, such as a search or settings glyph, place the outline and solid versions side by side at your real display size, and choose based on which one holds up next to your body text. Repeat for a selected state, and you will have a consistent rule for the rest of the set. Heroicons itself is at Heroicons, and if you want a broader library with similar style pairs, Lucide and Feather are worth comparing.
How do I install Heroicons via npm or download the SVG files?
Install Heroicons through npm when you want icons bundled into a build pipeline, or download individual SVGs when you need a handful of files without adding a dependency.
Installing via npm
Heroicons ships as an npm package, so installation follows the standard Node workflow:
npm install @heroicons/react
That package targets React. After installing, you import the specific icon components you need, for example:
import { BeakerIcon } from '@heroicons/react/24/solid'
The import path reflects the package's internal structure, which separates icons by size and style. Check the package's own documentation for the exact subpaths available, since these can change between major versions.
Downloading SVG files
If you don't use React, or you only need a few icons, download the raw SVG files instead. Each icon is a standalone .svg file you can drop into a project, inline into HTML, or reference from CSS. Because the icons are MIT licensed, you can use them freely without attribution.
Choosing between the two
| Situation | Better option |
|---|---|
| React app with many icons | npm package |
| Vue, Svelte, plain HTML, or a CMS | Downloaded SVG files |
| One or two icons, no build step | Downloaded SVG files |
| Need icons to update with your dependency manager | npm package |
A practical next step
Decide based on your framework first. If you're in React, install the npm package and import only the icons you actually use so your bundler can tree-shake the rest. If you're anywhere else, download the SVGs and commit them to your repository — that keeps your build simple and your icons stable.
The official site is Heroicons, where you can browse the full set and copy or download individual files.
User reviews (0)