# ERC-6220: Composable NFTs with Equippable Parts

Source: https://www.eipsfordesigners.com/standards/ERC-6220
Agent brief: https://www.eipsfordesigners.com/standards/ERC-6220/agent.md
Machine-readable JSON: https://www.eipsfordesigners.com/api/standards/ERC-6220
Last reviewed: 2026-04-05
Last updated: 2026-04-05

| Field | Value |
| --- | --- |
| Status | Final |
| Chain | both |
| Category | NFT Capabilities |
| Journey stages | Asset Management |
| Detailed guide | Yes |
| Official specification | https://eips.ethereum.org/EIPS/eip-6220 |
| Discussion search | https://ethereum-magicians.org/search?q=ERC-6220 |

## UX Impact

NFTs can equip other NFTs into defined slots using a Catalog system — true on-chain composability. Design implications: show equippable slots on NFTs (e.g., 'Weapon Slot: Empty'), design drag-drop equip interfaces, display composed NFT preview combining base + equipped assets, catalog browsing for compatible equipment. Design decisions: real-time vs on-save composition rendering, how to show slot compatibility constraints, inventory vs equipped views, handling unequip gas costs.

## Summary

ERC-6220 enables NFTs with slots where other NFTs can be equipped. Think of an avatar with a "weapon slot" where you can equip different sword NFTs, each changing the visual appearance. Parts can be fixed (built into the base) or equippable (swappable NFTs). When equipped, child NFTs visually compose with the parent, creating dynamic, customizable digital assets.

## For Designers

- You can design UI that delivers equip different items to change appearance dynamically.
- You can design UI that delivers equip sword to character.
- You can standard slots and equip interface across all platforms.

## Applicability

### When to Use

- Your product addresses: nFTs are static, can't customize appearance.
- Your product addresses: gaming items can't attach to characters.
- The flow should deliver: equip different items to change appearance dynamically.
- You are designing a equipment slot interface experience with visible states and recovery paths.

### When to Avoid

- Show compatibility before purchase, filter by what user owns.
- Always show preview of composed appearance before confirming.
- Clear "Equipped to X" label on items, confirm before listing.
- Assets are fungible tokens only with no unique-item semantics.

## Problems It Solves

### NFTs are static, can't customize appearance

Impact: critical

Old way: Buy different NFT for each look, no customization

New way: Equip different items to change appearance dynamically

### Gaming items can't attach to characters

Impact: critical

Old way: Character NFT shows default look, inventory separate

New way: Equip sword to character, sword appears on character image

### Wearables have no standard equipment system

Impact: high

Old way: Each game invents custom equip mechanics

New way: Standard slots and equip interface across all platforms

### Can't prove what's equipped to an NFT

Impact: medium

Old way: Off-chain metadata claims equipment, not verifiable

New way: Equipment is on-chain, queryable by anyone

## Anti-Patterns

### Unclear slot compatibility

Severity: critical

User buys item, discovers it doesn't fit their NFT

Instead: Show compatibility before purchase, filter by what user owns

### Not previewing equipment before equipping

Severity: high

User equips, doesn't like look, has to unequip (costs gas)

Instead: Always show preview of composed appearance before confirming

### No indication of equipped vs unequipped items

Severity: high

User sells item, didn't realize it was equipped to their character

Instead: Clear "Equipped to X" label on items, confirm before listing

### Hiding that equipment is on-chain

Severity: medium

Users don't realize equipping costs gas

Instead: Show "Equipping requires transaction" before action

### Not showing composed image on marketplaces

Severity: medium

Buyer sees only base NFT, misses equipped value

Instead: Always show composed view with option to see base

## UI Components

### EquipmentSlotGrid

Visual grid of equipment slots
States: viewing, editing, equipping
Props: slots, equipped, onSlotClick

### EquipModal

Select and preview equipment
States: browsing, previewing, confirming, equipping
Props: slot, compatibleItems, onEquip, onCancel

### ComposedNFTView

Renders base + all equipment as one image
States: loading, rendered, error
Props: baseNFT, equipment, renderMode

### CompatibilityChecker

Shows if item fits slot
States: compatible, incompatible, checking
Props: item, slot, baseNFT

## On Monad

### Equip/Unequip Speed

Ethereum: Each equip action takes 15+ seconds

Monad: Sub-second equipment changes

Design implication: Can rapidly try different combinations

### Gas Costs

Ethereum: Changing equipment costs $5-20 per action

Monad: Negligible costs for all equipment changes

Design implication: Encourage experimentation, frequent changes

### Batch Equipment

Ethereum: Equipping full loadout = many slow transactions

Monad: Equip all slots in one fast transaction

Design implication: Can have "Apply Loadout" for preset combinations

### Real-time Preview

Ethereum: Checking equipment state is slow

Monad: Instant equipment state queries

Design implication: Live updating character preview as you browse

## Key Takeaways

- ERC-6220 = NFTs with slots for equipping other NFTs
- Equipped items change the visual appearance
- Always preview composed look before equipping
- Show compatibility clearly before item purchase
- On Monad: rapid equipment experimentation is cheap

## UX Patterns

### Equipment Slot Interface

Visual slots showing equipped items

User flow:

- User views character NFT
- See slots for different body parts
- Some slots filled, some empty
- Tap empty slot to see compatible items
- Tap filled slot to unequip or swap
- Changes reflect in character appearance

Mockup registry key: `concept/nft-gallery` (React UI on the live standard page).

### Equip Item Flow

Drag-and-drop or select to equip

User flow:

- User taps empty or filled slot
- See compatible items from inventory
- Browse and select item
- Preview how it looks equipped
- Confirm equip
- On-chain state updated

Mockup registry key: `generic/list-selector` (React UI on the live standard page).

### Composed View

Show NFT with all equipment rendered

User flow:

- View NFT on marketplace or gallery
- See composed image with all equipment
- Equipment list shows what's attached
- Click items to see individual NFT details
- Owner can edit equipment
- Image updates when equipment changes

Mockup registry key: `concept/nft-gallery` (React UI on the live standard page).

### Slot Compatibility Guide

Help users understand what fits where

User flow:

- User wants to know what they can equip
- View slot compatibility guide
- See each slot and what it accepts
- See which collections are compatible
- Browse to find equipment to buy
- Purchase compatible items

Mockup registry key: `concept/nft-gallery` (React UI on the live standard page).

## Technical Notes

ERC-6220 defines slots as (slotId, partType, z-index, assetCatalog). Assets can be fixed (built-in) or equippable (swappable NFTs). equip(tokenId, slotId, childId) attaches child NFT to slot. The standard includes asset catalogs that define which collections are compatible with which slots. Rendering combines base + all equipped parts by z-index.
