A free, open-source dot-grid icon library. 215+ pixel-perfect icons rendered as portrait rectangles on a 7x7 grid, with frame-based animations.
Think Font Awesome, but with a bit-art aesthetic.
- 215+ icons — UI, arrows, communication, business, manufacturing, brands, and more
- Pixel-perfect — Every icon is hand-crafted on a 7x7 dot grid
- Zero dependencies — Pure SVG, CSS, or JS
- Customizable — Icons inherit
colorand scale withfont-size - Free forever — MIT licensed, free for personal and commercial use
<link rel="stylesheet" href="https://unpkg.com/bit-icons/dist/bit-icons.css">
<span class="bi bi-heart"></span>
<span class="bi bi-search"></span>
<span class="bi bi-settings"></span>npm install bit-icons// Import the CSS
import 'bit-icons/dist/bit-icons.css';<span class="bi bi-heart"></span><img src="https://unpkg.com/bit-icons/dist/svg/heart.svg" width="24" alt="heart">import icons from 'bit-icons';
// Access the raw 7x7 grid array
console.log(icons.heart);
// [[0,1,0,0,0,1,0], [1,1,1,0,1,1,1], ...]| Category | Examples |
|---|---|
| UI | heart, star, search, settings, bell, trash, edit, lock |
| Arrows | arrow-up, arrow-down, chevron-left, chevron-right |
| Communication | comment, chat, reply, mail, mention, broadcast |
| Business | invoice, contract, briefcase, dollar, target, handshake |
| Manufacturing | factory, warehouse, forklift, truck, conveyor, robot |
| Status | approved, pending, rejected, in-progress, complete |
| Data | chart, pie-chart, bar-chart, spreadsheet, analytics |
| People | user, users, team, role, assign, delegate |
| Operations | inventory, barcode, scanner, quality, maintenance |
| Brands | github, linkedin, slack, figma, youtube, discord |
| Navigation | chevrons, external-link, expand, collapse, sidebar |
| Media | play, pause, stop, mic, headphones, camera |
Every icon has a frame-based animation, inspired by old LED and dot-matrix displays. The dot grid stays fixed while individual dots flip between on (black) and off (grey) to create the illusion of movement.
- Arrows move across the grid in their direction
- Heart pulses by expanding its dots outward
- Bell bobs up and down
- Download arrow drops toward the line while the line stays still
- Lock/Unlock morph between each other
- Settings rotates around the grid
- Cheatsheet — Hover over any icon to see its animation
- Modal — Click an icon to open a detail view with a static/animated toggle
- Download — Export any animated icon as a GIF from the modal
Animations are defined as frame arrays in src/animations.js. Each frame is a 7x7 grid of 0s and 1s, just like the icon definitions. To animate an icon, cycle through the frames and update which dots are "on" at each step.
import icons from 'bit-icons';
// The base icon grid
const heart = icons.heart;
// heart[row][col] === 1 means that dot is filledFor the animation frame data, see src/animations.js which exports a getAnimation(name) function returning { frames, speed }.
Icons scale with font-size:
.bi { font-size: 1.5rem; } /* default */
.bi-lg { font-size: 2rem; }
.bi-sm { font-size: 0.875rem; }Icons inherit the current text color:
<span class="bi bi-heart" style="color: red;"></span>
<span class="bi bi-star" style="color: gold;"></span>Browse all icons with search, copy-to-clipboard, and SVG download:
Visit the live cheatsheet or open dist/cheatsheet.html locally.
# Install (no dependencies needed)
git clone https://github.com/bethandutton/bit-icons.git
cd bit-icons
# Build everything
npm run build:all
# Or build individually
npm run build # SVGs, CSS, JS
npm run build:cheatsheet # Interactive docsEach icon is a 7x7 grid in src/icons/index.js:
exports.myicon = [
[0,0,0,0,0,0,0],
[0,0,1,1,1,0,0],
[0,1,0,0,0,1,0],
[0,1,0,0,0,1,0],
[0,1,0,0,0,1,0],
[0,0,1,1,1,0,0],
[0,0,0,0,0,0,0],
];1= filled rectangle,0= empty (background dot at 15% opacity)- Corner positions
[0,0],[0,6],[6,0],[6,6]are excluded from rendering - Run
npm run build:allafter adding
Contributions welcome! To add an icon:
- Fork the repo
- Add your icon grid to
src/icons/index.js - Add an animation for it in
src/animations.js(see the existing cases for examples) - Run
npm run build:alland check the cheatsheet - Submit a PR
MIT — free for personal and commercial use. No attribution required.
See LICENSE for details.