sketchyicons

Hand drawn icons for Plain DOM

No framework, no build step. Mark the icons up in HTML and replace them in one pass, or build a single svg node in JavaScript.

install
npm i sketchyicons
One icon
450 B
Peers
none
Runtime dependencies
none
Shape
one per icon

In your code

createIcons walks the document and replaces every element you marked, and only the icons you handed it get drawn, so a page pays for what it uses. Attributes are written in SVG's own spelling here, stroke-width and not strokeWidth, because what comes back is a DOM node rather than a framework's idea of one.

Plain DOM
import { createIcons, House, Star } from "sketchyicons";

// Replaces every <i data-sketchy="house"></i> on the page.
createIcons({ icons: { House, Star } });
size
number defaults to 24
color
string defaults to currentColor
strokeWidth
number defaults to 2
absoluteStrokeWidth
boolean defaults to false
fill
string defaults to none

Coming from lucide

The geometry here is derived from Lucide, so the names match and the props match. The 247 names Lucide has renamed are exported next to the current ones, which means Home and HelpCircle keep resolving after the swap.

the whole migration
-import { House } from "lucide";
+import { House } from "sketchyicons";

Nothing else at the call site moves. Sizes, colours and stroke widths keep the values you already wrote.

1500+ glyphs, and a page for each of them

Every glyph in the set has its own page with the code for Plain DOM, the sizes it holds at, and the file. Here are twelve of the 1756, drawn by the same generator that built the package.

Search the whole set by name or by tag, or read the installation guide for the peer dependencies and the first icon on screen. Every glyph holds at 15 px, which is the size a real control uses.

The other targets

Why two of them package their icons differently is worked through in One component per icon, except when that is the wrong shape.