# Keyline Icons
[](https://github.com/keyline-icons/keyline-icons/actions/workflows/ci.yml)
[](LICENSE)
**1,435 icons, drawn on one 24×24 grid, in four styles and two corner
treatments.** Built for shadcn/ui, free under MIT.
[**keylineicons.com**](https://keylineicons.com) to browse and copy.
| Style | Icons | What it is |
| --- | --- | --- |
| `stroke` | 1,435 | The full set. 2px keylines on a 24 grid. |
| `two-tone` | 1,435 | The stroke drawing over a flat plate at reduced opacity. |
| `duotone` | 1,435 | No outline: a grey body with the detail in full strength. |
| `fill` | 1,435 | Solid, with the detail knocked back out of the shape. |
`stroke` is the drawing every other style starts from, and since 1.0.0 every
name comes in all four. `two-tone` is what `duotone` meant until 0.9.0: the
outline kept, a 40% plate under it. `duotone` now drops the outline and decides
per icon which part is grey and which is black, so the thing that matters reads
first: the check on a badge, the liquid in a flask, the data rather than the
chart's axes. A glyph with nothing to fill, like `bar-chart`, carries its stroke
drawing in the filled styles, so no import ever comes up empty.
## Rounded and sharp
Every drawing in the table comes twice: rounded, with round caps and filleted
corners, and sharp, with butt caps and square corners. Same names, same
coverage, so 11,480 SVGs in total.
```
icons/stroke/bell.svg
icons/sharp/stroke/bell.svg
icons/sharp/fill/bell.svg
```
Sharp is a drawing of its own rather than a filter over the rounded one. Squaring
a corner moves the ink, and where that changes the silhouette the geometry was
solved again, so both treatments sit side by side in `raw/` and the build
converts neither into the other.
## Using them
**Copy one from the site.** [keylineicons.com](https://keylineicons.com) is the
browser: click any icon to open it, then take it as SVG, JSX, a React import or
an `npx` line, at whatever style, corners, stroke width and size you have set.
The panel keeps the last three icons you opened, so two candidates can be held
side by side. That is the fastest path and needs no install.
**Take the files.** `icons/