File: lucide-static.md | Updated: 11/15/2025
On this page
Lucide Static
=================================================================================
Static assets and utilities for Lucide icons that work without JavaScript frameworks. This package provides multiple formats including individual SVG files, SVG sprites, icon fonts, and Node.js utilities for server-side rendering and static site generation.
What you can accomplish:
This package includes the following implementations of Lucide icons:
Who is this for?
lucide-static is suitable for very specific use cases where you want to use Lucide icons without relying on a JavaScript framework or component system. It's ideal for:
DANGER
SVG sprites and icon fonts include all icons, which can significantly increase your app's bundle size and load time.
For production environments, we recommend using a bundler with tree-shaking support to include only the icons you actually use. Consider using:
Installation
pnpmyarnnpmbun
sh
pnpm add lucide-static
sh
yarn add lucide-static
sh
npm install lucide-static
sh
bun add lucide-static
SVG Files
You can use standalone SVG files or SVG sprites in several ways.
Check out our codesandbox example .
WebpackCDN
html
<!-- SVG file for a single icon -->
<img src="~lucide-static/icons/house.svg" />
html
<!-- SVG file for a single icon -->
<img src="https://unpkg.com/lucide-static@latest/icons/house.svg" />
WebpackCDN
css
.house-icon {
background-image: url(~lucide-static/icons/house.svg);
}
css
.house-icon {
background-image: url(https://unpkg.com/lucide-static@latest/icons/house.svg);
}
Make sure you have the correct Webpack loader configured, such as url-loader
.
To import an SVG as a string (e.g., for templating):
WebpackVite
js
import arrowRightIcon from 'lucide-static/icons/arrow-right';
js
import arrowRightIcon from 'lucide-static/icons/arrow-right.svg?raw';
You'll need an SVG loader like svg-inline-loader
.
DANGER
Not intended for production use.
You may also need an additional SVG loader to handle this.
html
<img src="lucide-static/sprite.svg#house" />
html
<svg
width="24"
height="24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<use href="#alert-triangle" />
</svg>
<!-- sprite SVG -->
<svg>...</svg>
If you'd prefer, you can use CSS to hold your base SVG properties:
css
.lucide-icon {
width: 24px;
height: 24px;
stroke: currentColor;
fill: none;
stroke-width: 2;
stroke-linecap: round;
stroke-linejoin: round;
}
...and update the SVG as follows:
xml
<svg
xmlns="http://www.w3.org/2000/svg"
class="lucide-icon"
>
<use href="#triangle-alert" />
</svg>
<!-- sprite SVG -->
<svg>...</svg>
Icon font
DANGER
Not intended for production use.
Lucide icons are also available as a web font. To use them, you first need to include the corresponding stylesheet:
ViteWebpackCDNStatic asset
css
@import 'lucide-static/font/lucide.css';
css
@import ('~lucide-static/font/lucide.css');
html
<link rel="stylesheet" href="https://unpkg.com/lucide-static@latest/font/lucide.css" />
html
<link rel="stylesheet" href="/your/path/to/lucide.css" />
Once included, use the format icon-{kebab-case-name}. You can copy icon names from the Lucide Icons page
.
html
<div class="icon-house"></div>
If you're not using a package manager, you can download the font files directly from the latest release .
Node.js
You can also import Lucide icons in Node.js projects:
ESMCommonJs
js
import {MessageSquare} from 'lucide-static';
js
const {MessageSquare} = require('lucide-static');
Note: Each icon name is in PascalCase.
js
import express from 'express';
import {MessageSquare} from 'lucide-static';
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send(`
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>Lucide Icons</h1>
<p>This is a Lucide icon ${MessageSquare}</p>
</body>
</html>
`);
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});