docs/contribute/icons/metadata-conventions/index.md
Every Lucide icon has a matching JSON metadata file. Metadata credits contributors, groups icons, improves search, and explains where an icon is useful.
Use this guide when you add a new icon or review existing metadata.
Each icon metadata file must live next to its SVG file in the icons directory.
The JSON file must use the same base name as the SVG file:
home.svg -> home.jsonarrow-up.svg -> arrow-up.jsonsquare-parking.svg -> square-parking.jsonAll icon metadata files must pass icon.schema.json.
Every icon metadata file must include:
$schemacontributorsuse-casestagscategoriesA minimal metadata file looks like this:
{
"$schema": "../icon.schema.json",
"contributors": ["github-username", "another-github-username"],
"use-cases": ["Representing example items in an interface"],
"tags": ["foo", "bar"],
"categories": ["devices"]
}
The contributors field lists GitHub usernames for people who created or meaningfully changed the icon.
The use-cases field explains where and why someone would use the icon in an interface.
Use cases should be short phrases, not full sentences. Start with an -ing verb, such as:
The tags field is a list of search terms for the icon.
Tags should describe concepts, synonyms, related terms, and common contexts.
Check existing tags before adding new ones. This keeps search consistent and avoids duplicates.
magnifying glass.icon.For example, mail-search can use tags like email, message, letter, find, and filter, but not mail, search or mail search.
The categories field groups icons by broad use.
Categories must come from the allowed category list in icon.schema.json.
Choose categories based on what the icon represents and where people use it. Check similar icons first.
icon.schema.json.Related icons should have related metadata, but do not copy use cases blindly.
Write metadata for the specific variant:
battery-low -> Indicating a low battery charge levelbattery-full -> Indicating a full battery charge levelsquare-arrow-right-enter -> sign in, enter, or join contextssquare-arrow-right-exit -> sign out, exit, or export contextsWhen a request covers several icons, assign each use case only to the icon it describes. Do not copy metadata to icons it does not describe.
Some icons can include an optional aliases field for alternate names.
Only add aliases when an icon has been renamed from a non-compliant name.
Before submitting metadata changes, validate the icon JSON files:
pnpm run lint:json:icons
You can also format changed files with Prettier:
pnpm exec prettier "icons/*.json" --check
Before opening a pull request, confirm that:
icon.schema.json.pnpm run lint:json:icons passes.