← back to all libraries
// ICON LIBRARY

Radix Icons

Crisp 15x15 icons designed for dense UIs and dashboards

reactnextjsMIT
GitHub →Official Site →

STATS

318
Icons
5,000
GitHub Stars
1.2M
Weekly Downloads
MIT
License
~0.5kb per icon
Bundle Size
2021
Since

OVERVIEW

Radix Icons is a crisp set of 318 icons designed by the WorkOS team, the same team behind Radix UI — the headless component library that powers shadcn/ui and many other popular React component systems.

Unlike most icon libraries that target 24x24, Radix Icons are designed at 15x15. This makes them uniquely suited for dense interfaces where space is at a premium — data tables, toolbars, dropdowns, badges, and form controls all benefit from the smaller, more precise icons.

The @radix-ui/react-icons package provides fully typed React components for all 318 icons. All icons are tree-shakable and render as inline SVGs. They accept className props and work perfectly with Tailwind CSS. The library integrates seamlessly with Radix UI components and shadcn/ui.

// VERDICTRadix Icons is a specialized tool — not a general-purpose icon library. If you are building with Radix UI or shadcn/ui, it is the natural companion. For general use, its 318 icons and 15x15 size constraint make it too limited. Pair it with Lucide Icons for broader coverage.

INSTALLATION

react
npm install @radix-ui/react-icons
nextjs
npm install @radix-ui/react-icons

// Note: Perfect for Next.js projects using shadcn/ui. Works in both Server and Client Components.
vue
// No official Vue package. Use SVG files directly from radix-ui.com/icons
svelte
// No official Svelte package. Use SVG files directly.
vanilla
// No vanilla JS package. Download SVG files from radix-ui.com/icons

CODE EXAMPLES

basic
import { HomeIcon, GearIcon, PersonIcon } from '@radix-ui/react-icons'

export default function App() {
  return (
    <div>
      <HomeIcon />
      <GearIcon className="text-gray-500" />
      <PersonIcon className="h-4 w-4" />
    </div>
  )
}
with Shadcn
// Perfect pairing with shadcn/ui components
import { Button } from '@/components/ui/button'
import { PlusIcon, Cross2Icon } from '@radix-ui/react-icons'

export default function Toolbar() {
  return (
    <div className="flex gap-2">
      <Button size="sm">
        <PlusIcon className="mr-1" />
        Add Item
      </Button>
      <Button variant="ghost" size="sm">
        <Cross2Icon />
      </Button>
    </div>
  )
}
in Dropdown
import {
  ChevronDownIcon,
  CheckIcon,
  DotFilledIcon
} from '@radix-ui/react-icons'

export default function MenuItem({ checked }: { checked: boolean }) {
  return (
    <div className="flex items-center gap-2 px-2 py-1.5 text-sm">
      <span className="w-4">
        {checked && <CheckIcon className="h-4 w-4" />}
      </span>
      Menu Item
      <ChevronDownIcon className="ml-auto" />
    </div>
  )
}

PROS & CONS

PROS
Perfect for dense UIs
The 15x15 design grid makes these icons ideal for toolbars, dropdowns, badges, and data-dense interfaces where 24px icons would be too large.
Full TypeScript support
Every icon is fully typed with autocomplete in VS Code. The package is maintained by WorkOS who prioritize TypeScript quality.
Seamless shadcn/ui integration
If you use shadcn/ui, Radix Icons are the natural companion — they share the same design language and team.
Extremely lightweight
At ~0.5kb per icon, Radix Icons are among the smallest per-icon sizes available. Perfect for performance-critical applications.
Tree-shakable
Only the icons you import are included in your bundle. The rest are eliminated at build time.
CONS
Only 318 icons
The smallest library here alongside Feather. Complex applications will definitely encounter gaps.
15x15 only
The fixed 15x15 design means icons can look small or blurry if scaled up significantly. Not suitable as large decorative icons.
React only
No official Vue, Svelte, or Angular packages. Only React developers can use this library comfortably.
Not a standalone library
Radix Icons is really designed as a companion to Radix UI and shadcn/ui. As a standalone icon library it is too limited.

WHO SHOULD USE THIS

USE IF YOU...
Projects built with shadcn/ui — Radix Icons are the default companion
Applications using Radix UI headless components
Data-dense interfaces like admin dashboards and data tables
React projects that need small, precise icons for UI controls
Teams already in the Radix ecosystem who want design consistency
AVOID IF YOU...
Projects that need more than 318 icons
Applications where icons are used as large decorative elements
Vue, Svelte, or Angular developers
Projects not using Radix UI or shadcn/ui

FREQUENTLY ASKED QUESTIONS

Q.Is Radix Icons the same as Radix UI?
A.No. Radix UI is a headless component library (buttons, dialogs, dropdowns etc). Radix Icons is a separate icon library by the same team. They pair well together but are independent packages.
Q.Do I need to use Radix UI to use Radix Icons?
A.No. Radix Icons can be used in any React project independently of Radix UI components.
Q.Why are Radix Icons 15x15 instead of 24x24?
A.The 15x15 grid was chosen to make icons sharp and precise at small sizes, which is where they are most commonly used — inside buttons, dropdowns, form fields, and toolbars.
Q.Is Radix Icons free for commercial use?
A.Yes. Radix Icons uses the MIT license which allows free use in any commercial project.
Q.Should I use Radix Icons or Lucide Icons with shadcn/ui?
A.shadcn/ui uses Radix Icons internally for its own components. For icons in your application content, Lucide Icons is the more common choice due to its larger icon set. Many shadcn/ui projects use both libraries together.

COMPARE WITH ALTERNATIVES

Radix Icons vs Lucide IconsRadix Icons vs HeroiconsRadix Icons vs Tabler IconsRadix Icons vs Phosphor IconsRadix Icons vs Remix IconRadix Icons vs Feather IconsRadix Icons vs Bootstrap Icons