Icon Naming Convention
Standardize icon naming across your design system with a consistent, predictable naming scheme.
When to Use
- Setting up an icon library for the first time
- Cleaning up inconsistent icon names from multiple sources
- Onboarding a new icon set (e.g., migrating from FontAwesome to custom icons)
- Writing icon naming guidelines for contributors
The Prompt
Create icon naming conventions for a design system icon library.
Current icons (or describe the types):
[list your icon names, or describe categories like "navigation, actions, status, social, file types"]
Define:
1. **Naming format** — What pattern should all icon names follow? (e.g., category-object-modifier, object-action)
2. **Categories** — Group icons into logical categories with a prefix or folder.
3. **Modifiers** — Standard suffixes for variants: filled vs outlined, size variants, directional variants.
4. **Aliases** — Common alternative names that should resolve to the canonical name.
5. **Banned names** — Names to avoid (too generic, ambiguous, or conflicting with component names).
6. **Rename map** — For each of my current icons, suggest the corrected name.
Rules:
- Names must be unique and unambiguous
- Use kebab-case
- Avoid abbreviations (use "chevron-right" not "chev-r")
- Prefer the object-first pattern so icons sort together (e.g., "arrow-up", "arrow-down" not "up-arrow", "down-arrow")
Example Output
## Icon Naming Convention
### Format
[object]-[modifier]-[variant]
Examples: `arrow-right`, `arrow-right-circle`, `user-filled`
### Categories and Prefixes
| Category | Examples |
|-------------|----------------------------------------------|
| Navigation | arrow-up, arrow-down, chevron-left, menu |
| Action | edit, delete, copy, download, share, upload |
| Status | check, x, alert-triangle, info-circle |
| Content | file, image, video, link, document |
| User | user, users, user-plus, user-check |
| Commerce | cart, credit-card, receipt, tag |
| Communication | mail, message, phone, bell |
### Modifiers
| Modifier | Meaning | Example |
|-----------|----------------------|--------------------|
| -filled | Solid fill variant | heart-filled |
| -outline | Stroke-only variant | heart-outline |
| -circle | Inside a circle | check-circle |
| -square | Inside a square | arrow-up-square |
| -left/right/up/down | Direction | chevron-down |
| -sm/-md/-lg | Size variant | logo-sm |
### Rename Map (Current to Corrected)
| Current Name | Issue | Corrected Name |
|-----------------|--------------------------|---------------------|
| closeBtn | camelCase, abbreviation | x |
| trashcan | single word, ambiguous | delete |
| rightArrow | camelCase, modifier-first| arrow-right |
| notif_bell | snake_case, abbreviated | bell |
| user2 | numbered variant | users |
| hamburgerIcon | colloquial, suffix | menu |
### Banned Names
- "icon" (redundant suffix, it's already in the icon library)
- "btn" or "button" (component name, not an icon)
- "img" (abbreviation of image)
- "misc" or "other" (too vague for a category)