The Infinite Icon Toolkit
Search 200,000+ open-source icons across 150+ libraries, live. Tune the color, size, and weight, then copy any icon as SVG, data URI, JSX, web component, or CSS. One search box. Every icon set worth knowing.
Search for an icon to pull from the live database.
Try a category below, or type "arrow", "user", "chart".
Browse by icon set
Every icon here comes from a curated open-source library. These are the sets worth knowing, pulled live from the registry with real counts and licenses. Click any set to browse its full catalog.
Copy in the format you actually ship
Pick a format with the toggle above the results, then click any icon. The toolkit applies your chosen color and size, then writes the exact snippet to your clipboard. No download step, no asset folder.
| Format | What you get | Best for |
|---|---|---|
| SVG | Raw <svg> markup with your color and size baked in. | Inline in HTML, design tools, hand-tuning paths. |
| Data URI | A data:image/svg+xml string, URL-encoded. | <img src>, favicons, single-file builds. |
| JSX | An <Icon /> tag for @iconify/react. | React, Next.js, any JSX component tree. |
| Web Component | An <iconify-icon> custom element. | Plain HTML, Vue, Svelte, web components. |
| CSS | A background-image rule with an encoded mask. | Pseudo-elements, buttons, pure-CSS UI. |
How the toolkit works
No icons are bundled here. Everything is pulled on demand from the open Iconify registry, so the catalog is always current and the page stays light.
Live search
Each query hits the registry across every indexed set at once and returns the closest matches. Two characters is enough to start.
Tuned on copy
Your color and pixel size are applied to the icon the moment you copy it, so the snippet drops into your code already styled.
Favorites that stick
Star the icons you reach for and they are saved to this browser. Open the drawer any time to copy them again.
License-aware
Every set lists its license. Most are MIT or Apache 2.0 and free for commercial work. The brand sets are trademarks, used per their guidelines.
Common UI needs, mapped
Not sure what to search for? These are the icons every product reaches for. Click any one to pull a full set of options from the live database.
Embed in your stack
The copy button hands you a ready snippet, but here is the bigger picture for each framework. The web-component and React approaches keep icons by name, so they stay tiny and recolor with your CSS.
Recipes worth keeping
Small, reusable patterns that come up again and again once icons are in your product. Copy, adapt, ship.
Theme-aware icon
Let one icon serve light and dark mode by inheriting the text color instead of hard-coding a fill.
<svg fill="currentColor"> ... </svg>
/* now this controls the icon too */
.card { color: #F1F5F9; }
.card.dark { color: #0A0A0A; }Labeled icon button
An icon-only button still needs a name for screen readers. Add an aria-label and hide the glyph from the tree.
<button aria-label="Delete item">
<iconify-icon icon="ph:trash-bold" aria-hidden="true"></iconify-icon>
</button>Spinning loader
Any icon becomes a loader with a one-line keyframe. A spinner or circle-notch reads best.
<iconify-icon icon="ph:spinner-bold" class="spin"></iconify-icon>
/* css */
.spin { animation: spin 0.7s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }Status dot pairing
Pair an icon with a small colored dot to show state without changing the icon itself.
<span class="with-status">
<iconify-icon icon="ph:bell-bold"></iconify-icon>
<i class="dot"></i>
</span>Crisp favicon
Use the Data URI copy format to set a favicon with zero extra files. Great for single-page tools.
<link rel="icon" type="image/svg+xml"
href="data:image/svg+xml,..." />Consistent sizing token
Define icon sizes as CSS variables so the whole product scales from one place.
:root { --ic-sm: 16px; --ic-md: 20px; --ic-lg: 24px; }
iconify-icon { font-size: var(--ic-md); }
.toolbar iconify-icon { font-size: var(--ic-lg); }Licensing, in plain terms
Every set lists its license on its card above. Here is what the common ones actually mean for shipping work. This is a plain-language summary, not legal advice. When in doubt, read the set's own license file.
The most permissive common license. Use, modify, and ship in commercial products freely.
Commercial use Modify and redistribute Keep the license notice
Permissive like MIT, with an explicit patent grant. Common for large vendor sets.
Commercial use Patent grant included State significant changes
Functionally equivalent to MIT, just shorter wording. Fully permissive.
Commercial use Modify and redistribute Keep the license notice
Free for commercial use, but you must credit the author. A short line in your about or footer is enough.
Commercial use Credit the author
The author has waived all rights. Use it any way you like, no attribution required.
Anything goes No attribution needed
Company logos are trademarks. The artwork may be free to use, but the brand has rules about how its mark is shown. Follow each brand's guidelines.
Respect brand guidelines No implied endorsement
Principles for using icons well
A great icon set is only half the job. These are the habits that make icons feel intentional in a real product.
Commit to one set
Mixing libraries is the fastest way to look unfinished. Pick a single set and stay in it. Consistent stroke, corner, and grid is what reads as polish.
Match weight to text
A thin icon next to bold text looks weak. Align the icon's visual weight with the type it sits beside so they feel like one element.
Size for the target, not the grid
An icon on a touch target needs room around it. The glyph can be 20px while its tap area is 44px. Pad, do not enlarge.
Label anything ambiguous
A gear means settings, a heart is less certain. If an icon could be misread, give it a text label or a tooltip. Icons assist, they rarely replace words.
Use color for meaning, not decoration
Reserve color shifts for state: success, warning, danger. A wall of multicolor icons turns signal into noise.
Align to the optical center
A play triangle looks off when centered by its bounding box. Nudge it to where the eye expects the center, not where math puts it.
Respect the metaphor
A floppy disk for save still works because people learned it, but question stale metaphors for new audiences. The clearest icon wins over the cleverest.
Keep filled and outline consistent
If you use filled icons for active states and outline for inactive, do it everywhere. A mixed system confuses more than it guides.
Accessibility checklist
Icons carry meaning, so they have to work for assistive tech too. Run through this before you ship.
aria-hidden="true" when the icon only repeats nearby text.aria-label so its purpose is announced.prefers-reduced-motion for spinners and transitions.Sizing scale
Common pixel sizes and where each one earns its place. Most sets are drawn on a 24px grid, so sizes that divide cleanly stay sharp.
| Size | Name | Where it fits |
|---|---|---|
| 12px | Micro | Inline hints, dense tables, tiny badges. Use simple glyphs only. |
| 16px | Small | Inline with body text, menu items, compact toolbars. |
| 20px | Default | The workhorse size for buttons, inputs, and list rows. |
| 24px | Medium | Primary toolbar actions, navigation, the native grid size. |
| 32px | Large | Empty states, feature callouts, prominent buttons. |
| 48px | Display | Hero moments, onboarding, marketing. Use illustrative sets here. |
| 64px+ | Showcase | Full illustrations and spot art. Stroke icons start to feel thin. |
Animating icons
A little motion makes an icon feel alive. Keep it short, purposeful, and always respect reduced-motion. Here are the patterns worth reusing.
Spin on load
The classic loading state. Best on a spinner, circle-notch, or gear glyph.
.spin { animation: spin 0.8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
.spin { animation: none; }
}Pulse for attention
A gentle scale pulse draws the eye to a new notification or live status without shouting.
.pulse { animation: pulse 1.6s ease-in-out infinite; }
@keyframes pulse {
0%, 100% { transform: scale(1); opacity: 1; }
50% { transform: scale(1.12); opacity: 0.8; }
}Hover lift on a button
Nudge an icon on hover so a button feels responsive. Keep the move small, a few pixels at most.
.btn iconify-icon { transition: transform 0.2s ease; }
.btn:hover iconify-icon { transform: translateX(3px); }Draw-on stroke
For an outline icon, animate the stroke so it appears to draw itself. Works best on simple, single-path glyphs.
path { stroke-dasharray: 100; stroke-dashoffset: 100;
animation: draw 0.9s var(--ease) forwards; }
@keyframes draw { to { stroke-dashoffset: 0; } }Swap on state
Cross-fade between two icons, like play and pause, by stacking them and toggling opacity. Cleaner than swapping the node.
.swap iconify-icon { transition: opacity 0.2s ease; }
.swap .pause { opacity: 0; position: absolute; }
.swap.is-playing .play { opacity: 0; }
.swap.is-playing .pause { opacity: 1; }What makes an icon an icon
Behind every clean icon is a quiet system. Knowing the parts helps you choose sets that will sit together and spot the ones that will not.
The grid
Most sets are drawn inside a fixed square, often 24 by 24. Every icon is built on this grid so they share scale and rhythm.
Live area and padding
Inside the grid sits a slightly smaller live area. The padding around it keeps icons from touching their container edges.
Keyline shapes
A square, a circle, and two rectangles define how big a shape should be so a round icon and a square one feel equal.
Stroke and terminals
The line weight and how lines end, rounded or square, give a set its voice. Consistency here is what reads as quality.
Corner radius
How soft the corners are. A shared radius ties a set together, while a mismatched one is the first thing that looks off.
Optical center
Some shapes need nudging off the mathematical center to look balanced. A play triangle is the classic example.
Framework support
Every icon here is available through these official Iconify packages. Same icon names, same props, whatever you build in.
| Framework | Package | Usage |
|---|---|---|
| Plain HTML | iconify-icon | One script tag, then the web component anywhere. |
| React | @iconify/react | The Icon component with on-demand loading. |
| Vue 3 | @iconify/vue | The Icon component, also works in Nuxt. |
| Svelte | @iconify/svelte | Default Icon import, SvelteKit friendly. |
| Angular | @iconify/angular | The ic-icon component for templates. |
| Astro | astro-icon | The Icon component, build-time inlined. |
| Ember | @iconify/ember | A helper for Handlebars templates. |
| Tailwind | @iconify/tailwind | A plugin that turns icons into utility classes. |
| Any build | @iconify/json | The full registry as data for custom tooling. |
How we got to live SVG icons
A short tour of how interface icons evolved, and why on-demand SVG won.
The image era
Early icons were tiny bitmaps, one PNG per icon per size. Crisp at exactly one size, blurry everywhere else, and heavy to manage.
The icon-font era
Packing icons into a font made them scalable and recolorable with CSS. But fonts are awkward for accessibility and ship every glyph whether you use it or not.
The SVG era
SVG gave each icon real shapes, perfect scaling, full styling, and proper accessibility. The question shifted to how you deliver them.
On-demand today
Now icons load by name from a shared registry, only when used. Hundreds of sets become one searchable catalog, and your bundle stays tiny.
Performance notes
Icons are small, but a careless setup can still cost you. A few habits keep them free.
Load only what you use
Reference icons by name so your bundler ships just those glyphs. A whole icon font can be hundreds of kilobytes you never render.
Cache after first paint
The web component stores fetched icons so repeat views are instant. For critical above-the-fold icons, inline the SVG to skip the request entirely.
Inline the hero icons
For the handful of icons visible on first load, paste the raw SVG into your markup. No network call, no layout shift.
Size from CSS, not files
One SVG scales to every size. You never need a separate file per dimension, which keeps your asset count near zero.
Power-user shortcuts
Small moves that make the toolkit feel like an extension of your hands.
Press / to search
Jump straight to the search box from anywhere on the page without reaching for the mouse.
Press F for favorites
Open your saved icons drawer instantly. Press Esc to close it again.
Set format once
Pick SVG, JSX, or any format with the toggle, then every click copies in that format until you change it.
Pre-tune color and size
Set your brand color and target size before you start clicking, and every copied snippet arrives styled.
Frequently asked
Icon design glossary
A working vocabulary for anyone wiring icons into a product. The terms that come up the moment you move past copy and paste.