The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Aria Icons listing page.
340,000+ SVG icons — searchable, customizable, and a package manager for your icon codebase.
Website + API + CLI + MCP. Find any icon, write it into the project as source (no giant dependency), migrate mixed icon libraries, and let AI agents use the same engine.
Repo: github.com/LeulAria/Aria-Icons
The npm package name is aria-icons (verified unused on the registry at the time of adding the CLI). The CLI is tiny: it talks to the Aria Icons API and only downloads the icons you request.
| Command | Purpose |
|---|---|
search <query> | Search all collections |
get <id> | Print SVG or framework source |
add <names…> | Write icon files into the repo |
migrate --to <set> | Map existing icon-package imports onto one collection |
doctor | Audit mixed libraries |
suggest [src/] | Recommend a consistent set |
init | Write .aria-icons.json |
setup | Configure MCP for Cursor / Claude / VS Code / … |
mcp | Stdio MCP server (default if you run aria-icons with no args) |
Icon ids: collection:name (lucide:house, tabler:arrow-up, thesvg:github).
Full CLI docs: packages/cli/README.md.
Local (stdio) — what aria-icons setup writes:
Remote HTTP — same catalog, hosted with the website:
Public REST used by the CLI (tiny payloads, no icon database in the package):
| Endpoint | |
|---|---|
GET /api/v1/search?q= | Search |
GET /api/v1/icon?id=lucide:house | One icon |
GET /api/v1/icons?ids=a,b | Batch |
GET /api/v1/collections | Collections |
GET /api/v1/similar?id= | Similar / other sets |
GET /api/v1/equivalent?id=&to= | Cross-set mapping |
During local development:
First, install the dependencies:
Fetch the brand + Iconify icon sources (one-time, or whenever you want to refresh), then rebuild the search catalog:
Then, from the repo root, run the development server:
Open http://localhost:3001 in your browser. The in-app Contribute Icons page (/contribute) walks through adding a new set.
Icons come from three storage backends, all indexed into one catalog:
| Source | Storage | Fetch |
|---|---|---|
| Vendored sets (Lucide, Tabler, Heroicons, …) | one JSON per set in apps/web/icons/vendored/ | committed to the repo |
| theSVG brand logos (6,500+ brands, variants) | apps/web/icons/thesvg.json | bun run fetch:thesvg (auto-packs) |
| Iconify collections (200+ sets) | one JSON per set in apps/web/icons/iconify/ | bun run fetch:iconify (add -- --all for every set) |
After fetching, rebuild the search catalog:
This writes public/icons-meta.json (browser + MCP search index with names,
tags, aliases, and categories) and icons-name.json.
Every icon set here was contributed or curated by the community — new sets
and better metadata are always welcome. The in-app guide at
/contribute walks through it, and the
short version is:
apps/web/icons/<your-set-name>/ (lowercase, hyphenated file names — the file name becomes the icon name).apps/web/src/lib/icon-sets.ts (id, label, homepage, and whether it's line or solid style).bun run pack:icons -- --delete && bun run generate-icons inside apps/web.bun run dev — check the sidebar, grid rendering, and search.Other ways to contribute:
bun run fetch:thesvg.bun run fetch:iconify -- --sets <prefix>.Only submit icons you have the right to share, and include the license in your PR (MIT, CC0, or similarly permissive licenses preferred).
Manual npm publish:
Pre-release:
Website deploy is unchanged (Vercel / your current host for apps/web). After deploy, /api/v1/* and /api/mcp are what the CLI and remote MCP use.
bun run dev: Start all applications in development modebun run build: Build all applicationsbun run check-types: Check TypeScript types across all appsbun run cli:dev: Run the CLI from sourcebun run cli:build: Bundle the CLI for npmbun run cli:release: Version, tag, and push the CLIInside apps/web:
bun run fetch:thesvg: Fetch/refresh theSVG brand icons (packs into icons/thesvg.json)bun run fetch:iconify: Fetch Iconify sets (-- --sets a,b, -- --all)bun run pack:icons: Collapse loose SVG folders into one JSON per set (-- --delete removes sources)bun run generate-icons: Rebuild the icon search catalogMIT © Leul Aria