Evetry Icon

Static vector icon REST API powered by Iconify. Zero server runtime, CDN edge delivery.

API: https://icon.evetry.com · NPM: @evetry/icon

Loading icons... Click icon to copy SVG

Static REST API Endpoints

Direct HTML Usage

<!-- Embed raw SVG directly from CDN -->
<img src="https://icon.evetry.com/api/lucide/heart.svg" width="24" height="24" alt="Heart" />

NPM Package (@evetry/icon)

A zero-runtime client SDK and SVG processing toolkit for frontend applications.

# Install with Bun
bun add @evetry/icon

# Install with NPM
npm install @evetry/icon

Quick Start (icon)

import { icon, processSvg } from '@evetry/icon';

// 1. Fetch standalone raw SVG directly
const rawSvg = await icon.getSvg('lucide', 'heart');

// 2. Fetch and transform SVG on the fly in the browser
const customSvg = await icon.getSvg('lucide', 'sparkles', {
  size: 32,             // 32x32 px
  stroke: '#2563eb',    // Custom stroke color
  fill: 'none',         // Custom fill color
  strokeWidth: 2,       // Stroke thickness
  rotate: 90,           // Rotate degrees
  flip: 'horizontal'    // Flip horizontal
});

// 3. List all collections
const collections = await icon.listCollections();

// 4. List all icons in a collection
const lucide = await icon.listIcons('lucide');
console.log(lucide.icons); // [{ name: "heart", svg: "https://icon.evetry.com/api/lucide/heart.svg" }]

// 5. Instant search across all collections or specific set
const results = await icon.search('camera', { set: 'lucide', limit: 20 });

Custom Subdomain / Self-Hosted Instance

import { Icon } from '@evetry/icon';

// Override default endpoint if you use a custom domain
const customIcon = new Icon({
  baseUrl: 'https://my-custom-icons.domain.com'
});

Client-Side SVG Processing Utilities

Transform any SVG string directly in the browser with zero server round-trips:

import { processSvg, svgToDataUri, svgToPngBlob, downloadSvg } from '@evetry/icon';

// Transform SVG attributes
const svg = processSvg(rawSvg, {
  size: 48,
  stroke: '#10b981',
  strokeWidth: 1.5,
});

// Convert to Data URI for <img src="..." /> or CSS background
const dataUri = svgToDataUri(svg);

// Convert to 512x512 PNG Blob in the browser
const pngBlob = await svgToPngBlob(svg, 512);

// Download SVG in browser
downloadSvg(svg, 'my-custom-icon.svg');

Standalone uFuzzy Search Engine

import { IconSearchEngine } from '@evetry/icon';

const search = new IconSearchEngine();
await search.loadIndex('https://icon.evetry.com/api/search-index.json');

const matches = search.search('heart', 'lucide', 25);

Build Static API CLI Parameters

# Default curated set (Lucide, Heroicons, Tabler, Remix Icon)
bun run build:icons

# Custom collections (see COLLECTIONS.md for all 238 available IDs)
bun scripts/build-icons.ts --sets=lucide,heroicons,ph,simple-icons

# Build all 238 collections (~200,000+ icons)
bun scripts/build-icons.ts --all