# 1.3 Asset Identification
Tokens and NFTs must be identifiable without relying solely on visual recognition.
## Success Criteria
### 1.3.1 Token Accessible Names (Level A)
**Requirement**: Tokens must have accessible names beyond just ticker symbols. The full token name must be programmatically available.
**Intent**: "WETH" or "UNI" aren't self-explanatory. "Wrapped Ether" and "Uniswap" provide context.
**Benefits**:
- **Blind users**: Can distinguish similar-sounding tickers
- **Cognitive disabilities**: Full names provide context
- **New users**: Understand what tokens represent
**Techniques**:
```tsx
<TokenDisplay>
<TokenLogo src={logoUrl} aria-hidden="true" />
<span className="token-symbol">WETH</span>
<span className="sr-only">Wrapped Ether</span>
{/* Or use aria-label */}
<span aria-label="Wrapped Ether (WETH)">WETH</span>
</TokenDisplay>
// In token lists
<TokenListItem
symbol="UNI"
name="Uniswap"
aria-label="Uniswap, ticker symbol UNI"
/>
```
**Failures**:
- Only showing ticker symbols
- Token identified only by logo
- No way to access full token name
---
### 1.3.2 NFT Image Alt Text (Level A)
**Requirement**: NFT images must have meaningful alternative text describing the visual content or artistic elements.
**Intent**: NFTs are visual assets, but their content should be describable for users who can't see them.
**Benefits**:
- **Blind users**: Understand what the NFT depicts
- **Low bandwidth situations**: Content is accessible without images
**Techniques**:
```tsx
// Use metadata description or generate alt text
<NFTDisplay>
<img
src={nft.imageUrl}
alt={nft.description || `${nft.name} from ${nft.collection}`}
/>
<NFTDetails>
<h3>{nft.name}</h3>
<p>Collection: {nft.collection}</p>
{nft.traits && (
<details>
<summary>Traits</summary>
<dl>
{nft.traits.map(trait => (
<div key={trait.type}>
<dt>{trait.type}</dt>
<dd>{trait.value}</dd>
</div>
))}
</dl>
</details>
)}
</NFTDetails>
</NFTDisplay>
```
**Failures**:
- `alt=""` or `alt="NFT"` on NFT images
- No description available for audio NFTs
- Video NFTs without captions/transcripts
---
### 1.3.3 Token Contract Verification (Level AA)
**Requirement**: Token contract verification status (verified/unverified) and contract address must be accessible through programmatic means, not just visual badges.
**Intent**: Fake tokens with similar names/logos are common. Users need accessible verification tools.
**Benefits**:
- **Blind users**: Can verify token authenticity
- **All users**: Protection from scam tokens
**Techniques**:
```tsx
<TokenVerification>
<VerifiedBadge
verified={token.verified}
aria-label={token.verified ? "Verified contract" : "Unverified contract - use caution"}
/>
<button
onClick={() => openExplorer(token.address)}
aria-label={`View ${token.name} contract on block explorer`}
>
View Contract
</button>
<AddressDisplay
address={token.address}
showCopyButton
/>
</TokenVerification>
```
**Failures**:
- Verification shown only as colored checkmark
- No way to access contract address
- Unverified status not communicated
---
### 1.3.4 Structured Asset Metadata (Level AAA)
**Requirement**: Asset metadata includes structured accessibility descriptions that can be parsed by assistive technology.
**Intent**: Rich metadata enables better accessibility tooling and alternative presentations.
**Benefits**:
- **Blind users**: Detailed descriptions of visual assets
- **Developers**: Standardized accessibility data
**Techniques**:
```json
{
"name": "Bored Ape #1234",
"description": "A cartoon ape with laser eyes and a crown",
"accessibility": {
"alt_text": "Illustrated ape character with purple fur, wearing a golden crown, with red laser beams emanating from its eyes, against a yellow background",
"audio_description": "https://ipfs.io/.../audio-description.mp3",
"traits_summary": "This ape has 5 rare traits including laser eyes and gold crown"
}
}
```
**Failures**:
- No structured accessibility metadata
- Generic or auto-generated descriptions
- No support for extended descriptions
---
## Testing Checklist
- [ ] All tokens show full name (not just ticker)
- [ ] NFT images have meaningful alt text
- [ ] Verification status is screen reader accessible
- [ ] Contract addresses can be accessed and copied
- [ ] Token list items announce name and symbol
## Related Components
- [TokenDisplay.tsx](../../components/TokenDisplay.tsx)
- [NFTCard.tsx](../../components/NFTCard.tsx)