Vigil
Icons
Vigil Icons is a set of 111 stroke-first, rounded-corner icons for the things people actually accuse each other of — gaslighting, ghosting, red flag, situationship — drawn by Keno Vigil. All 111 are free — SVG, PNG, React, stickers, emoji. No email, no account.
I went looking for these. They didn’t exist.
Every icon set on earth has a house, a gear, a magnifying glass, a heart. Ten thousand ways to say “settings.” Zero ways to say gaslighting — the word half the internet used this week.
Icons are supposed to be the fastest way to say something. So why do they only say the boring things? The vocabulary people actually reach for is behavioral, judgmental, a little mean, and very funny. Nobody had drawn it.
So we drew it. Stroke-first and clean, because the joke should look like it belongs in a system. Slightly irreverent, because the phrases are. And free, because a punchline behind a paywall isn’t a punchline.
Would you send it to someone?
These are Vigil.
The first twenty.
Phrase people use → accusation or reaction → icon that tells the joke itself. Every one of these has all three. Yours, no email. Tap a card for the sheet; ↗ copies a link to send someone.
Download all 111 — freeSignature — the object does the joke unaided Spicy — no corporate pack would ship it Keno’s pick — the ones he’d put on a shirt
Stroke-first. Rounded by rule.
Grid, px. Every icon lives in 24 × 24 with a 2px safe area.
Stroke, px at 24. Thin enough that hearts stay hollow. Round caps, round joins, no fills.
Small size. Stroke stays, detail drops. If the joke dies at 16, redraw.
Words inside icons. The object has to behave like the concept.
Top 111, re-ranked.
Weighted 35% sendability, 25% visual metaphor, 20% durability, 10% distinctiveness, 10% survives-as-an-icon. Extra credit when the object itself behaves like the concept. Each entry carries its illustrator direction: recognizable noun → one abnormal behavior → punchline. Design at 48–64px; must read at 24.
Locked. In: MILF, DILF, Slay, Mid. Out: Bait and Switch, Quote-Tweet Dunk, Influencer, Sketchy. Then a cultural + tech pack, 102–111. Nineteen flagged Signature — the ones where the object does the joke with no caption. All 111 drawn, Simp among them redrawn.
Core library
21–40 — very strong productExpansion packs
41–80 — absolutely build theseBench
81–101 — worth owning, not before the aboveCultural + tech
102–111 — the words that arrived after the list didThe object is recognizable. Then it misbehaves.
People actually say it. Out loud, in a group chat, about someone. If it needs a caption, it isn’t a Vigil icon.
It describes a person or a moment and can be sent pointedly. “I need to send this to somebody” is the product.
A backwards flag. A house inside a head. A tipped container. Ordinary object, socially revealing violation. You notice it behaving in a way it absolutely should not.
Above 40, nearly every concept has all three. From 41 down, one of them starts needing help — and slang gets discounted hard. Generational plain labels (Boomer, Millennial, Gen Z, Gen X, Gen Alpha) are out entirely: taxonomy, not jokes. “Couch stuck on stairs” is a better icon than “glowing rectangle.”
Free. All 111 icons.
All 111. No email, no account, no license key. Use them in anything you make.
24 grid, one path per icon, currentColor. Figma, Sketch, Illustrator, Framer, Webflow, code.
SVG · 270 KB ↓256 black on white for docs and decks, 512 transparent for everything else.
PNG · 3.5 MB ↓iMessage, Telegram and WhatsApp packs, 512 transparent, WebP for WhatsApp.
Stickers · 3.3 MB ↓Slack and Discord, 128 transparent, named so :gaslighting: just works.
Emoji · 590 KB ↓License, plainly: use them in anything you make — apps, decks, merch, group chats, client work. Unlimited projects, no attribution required. Don’t resell or redistribute the files as your own, redrawn or not — and the name stays mine. That’s it. Full text.
In code.
npm, CDN, React, web component, plain SVG.npm install vigil-icons
import { Gaslighting } from "vigil-icons";
<Gaslighting size={32} />111 components, PascalCase by slug. Takes the text colour.
<script type="module"
src="https://www.vigilicons.com/icons/vigil-icon.js"></script>
<vigil-icon name="ghosting" size="20"></vigil-icon>One script tag, then a custom element anywhere. Same file ships in the npm package.
https://www.vigilicons.com/icons/svg/gaslighting.svg
<use href="/icons/sprite.svg#vi-gaslighting">Every file at /icons/svg/, one sprite at /icons/sprite.svg, every name and line in icons.json.
Free, but a pint helps.
Optional. Really.Jokes take rounds. Sketch rounds take coffee, and the occasional pint.
Buy a pint →Same button, any amount. Everything that isn’t a pint goes to the Vigil kids’ first business.
Chip in →Pairs with Vigil,
the free font.
Get Vigil — free
Set in Vigil. Same 24 grid, same 1.25 stroke as Vigil Regular at text size. Icons sit on the baseline and match the cap height at any weight.
Drops.
Every drop lands here, free, the day it ships.Signature eight: Gaslighting, Red flag, Narcissist, Mansplaining, Ghosting, Weaponized incompetence, Rent-free, Situationship.
People pleaser and Emotionally unavailable were the ones to watch.
Family pack, internet pack, work pack.
They earned it.
Clingy, Dope, 6/7, Buggin’, Fresh, AI girlfriend, House robot, AI agent, Robo taxi, Lock in.
Vote on what gets drawn next, or pitch a phrase — if it passes the rule, it gets sketched.
Questions, answered.
Is Vigil Icons free?
Yes. All 111 icons, every format, no email, no account. The font is free, and the icons only work when they get sent — a paywall was 91 jokes nobody would paste into a group chat. If they earn you something, buy Keno a pint.
Can I use Vigil Icons commercially?
Yes. Personal and commercial use are both fine: apps, sites, decks, stickers, merch, client work, unlimited projects, no attribution required. The only no is reselling or redistributing the icons themselves as your own product, as they are or redrawn. The Vigil name is reserved; the drawings are yours to use. Full terms: LICENSE.txt.
What formats do Vigil Icons come in?
SVG on a 24 grid in currentColor, one path per icon; PNG at 256 black on white and 512 transparent; 128px emoji for Slack and Discord; sticker packs for iMessage, Telegram and WhatsApp; an npm package with React components and a web component; and icons.json with every name and line.
How do I use Vigil Icons in code?
Run npm install vigil-icons and import one component per icon, or add the web component with a single script tag from vigilicons.com/icons/vigil-icon.js. Plain SVGs live at vigilicons.com/icons/svg/ and in the sprite at /icons/sprite.svg.
How do I add Vigil Icons to Slack, Discord, iMessage, WhatsApp or Telegram?
Download the emoji or sticker pack from the Downloads page. Slack: Customize workspace → Emoji → Add. Discord: Server settings → Emoji → Upload. iMessage: save the PNGs to Photos and send them from the photo picker. Telegram: send the PNGs to @Stickers. WhatsApp: import the WebP folder with a sticker-maker app.
Do I get future icons?
Yes. Every new Vigil icon lands on this page, in the zips and in the npm package the day it ships. Nothing to buy, nothing to renew.
Can I request an icon?
Yes — use the request form under Drops. Vote on what’s drawn next or pitch a phrase; new concepts welcome if they pass the rule: phrase → accusation → the object does the joke.
Who makes Vigil Icons, and where do I get support?
Keno Vigil, an artist and technologist in Cary, North Carolina, who drew all 111 by hand, made the free Vigil typeface they are set in, and wrote the code that ships them. Support is through thinkkeno.com/#contact; one person answers, usually within a day.