# ERC-4804: Web3 URL to EVM Call

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

| Field | Value |
| --- | --- |
| Status | Final |
| Chain | both |
| Category | Comprehension & Display |
| Journey stages | Specialized Interactions |
| Detailed guide | Yes |
| Official specification | https://eips.ethereum.org/EIPS/eip-4804 |
| Discussion search | https://ethereum-magicians.org/search?q=ERC-4804 |

## UX Impact

Access blockchain data via URLs like 'web3://uniswap.eth/swap' — browsers can render on-chain content directly. Design implications: support web3:// URL scheme in address bars, display on-chain HTML/SVG content natively, show ENS-based URLs alongside traditional links, handle cross-chain URLs with chainid syntax. Design decisions: security model for executing on-chain content, how to display web3:// URLs to users unfamiliar with the concept, fallback when content fails to load, gateway vs native resolution.

## Summary

ERC-4804 creates a standard URL format for accessing blockchain data directly from a browser. Type "web3://uniswap.eth/swap" and your browser fetches content from the blockchain instead of a web server. This enables truly decentralized frontends where the UI itself lives on-chain, eliminating server dependencies and censorship risks.

## For Designers

- You can design UI that delivers uI served from blockchain.
- You can design UI that delivers share web3://contract.eth/path like any normal URL.
- You can design UI that delivers click a link, browser handles the blockchain query.

## Applicability

### When to Use

- Your product addresses: dApp frontends are centralized and can be taken down.
- Your product addresses: no standard way to link to on-chain content.
- The flow should deliver: uI served from blockchain, censorship-resistant like the contracts.
- You are designing a web3 url bar experience with visible states and recovery paths.

### When to Avoid

- Always provide HTTPS gateway link as alternative.
- Show clear badge: "Served from Ethereum" or similar.
- Show loading progress with chain/contract info.
- Users never see addresses, amounts, or signing payloads in your UI.

## Problems It Solves

### dApp frontends are centralized and can be taken down

Impact: critical

Old way: Frontend hosted on AWS/Vercel, smart contract decentralized but UI isn't

New way: UI served from blockchain, censorship-resistant like the contracts

### No standard way to link to on-chain content

Impact: high

Old way: Share contract address + instructions to call specific functions

New way: Share web3://contract.eth/path like any normal URL

### Reading blockchain data requires developer knowledge

Impact: high

Old way: Use Etherscan, understand ABI, manually call functions

New way: Click a link, browser handles the blockchain query

### ENS names can't serve actual content

Impact: medium

Old way: ENS resolves to address, still need separate frontend

New way: web3://vitalik.eth serves actual webpage from blockchain

## Anti-Patterns

### Only supporting web3:// without gateway fallback

Severity: critical

Most users don't have web3:// capable browsers

Instead: Always provide HTTPS gateway link as alternative

### Not indicating content source

Severity: high

Users don't know if content is decentralized or traditional

Instead: Show clear badge: "Served from Ethereum" or similar

### Slow-loading on-chain content without progress

Severity: high

Users think page is broken

Instead: Show loading progress with chain/contract info

### Mixing centralized and decentralized content silently

Severity: medium

False sense of decentralization security

Instead: Clearly mark which parts are on-chain vs off-chain

### Using web3:// URLs without explaining the benefit

Severity: medium

Users don't understand why they should use unfamiliar URLs

Instead: Explain: "This link works forever, even if we disappear"

## UI Components

### Web3UrlInput

Input field for web3:// URLs with validation
States: empty, typing, valid, invalid, loading
Props: value, onChange, onNavigate, showChain

### DecentralizedBadge

Indicates content is served from blockchain
States: verified, gateway, hybrid
Props: chain, contract, contentType

### Web3ContentFrame

Renders content fetched from on-chain
States: loading, loaded, error, unsupported
Props: url, sandbox, onLoad, onError

### GatewayFallback

HTTPS gateway link for non-web3 browsers
States: available, generating, copied
Props: web3Url, gatewayDomain, onCopy

## On Monad

### Content Loading Speed

Ethereum: On-chain content can take 5-15 seconds to load

Monad: Sub-second content delivery

Design implication: Web3 URLs feel as fast as traditional websites

### Dynamic Content

Ethereum: Real-time data queries are slow and expensive

Monad: Live data updates feasible

Design implication: Can build more interactive on-chain UIs

### Storage Costs

Ethereum: Storing UI on-chain is very expensive

Monad: Lower costs make larger on-chain UIs practical

Design implication: More comprehensive dApps can go fully on-chain

### Contract Calls

Ethereum: Multiple calls to render page are slow

Monad: Parallel execution speeds multi-call pages

Design implication: Complex pages with many data sources still fast

## Key Takeaways

- ERC-4804 = URLs that fetch content from blockchain
- web3://name.eth/path like normal URLs but decentralized
- Always provide HTTPS gateway fallback for compatibility
- Show clear indicators when content is served from chain
- On Monad: fast enough for interactive on-chain UIs

## UX Patterns

### Web3 URL Bar

Browser or extension interprets web3:// URLs

User flow:

- User types or clicks web3:// URL
- Browser/extension parses URL
- Makes EVM call to specified contract
- Contract returns HTML/JSON/binary content
- Browser renders the response
- Shows decentralized origin badge

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

### Decentralized App Page

Full dApp UI served from smart contract

User flow:

- User visits web3:// URL
- Full HTML/CSS/JS loaded from contract
- Interactive UI rendered in browser
- User interacts with dApp
- Transactions submitted normally
- UI cannot be censored or modified

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

### On-Chain Resource Link

Share links to specific on-chain data

User flow:

- User wants to share on-chain content
- App generates web3:// URL
- Also provides HTTPS gateway fallback
- Recipient clicks link
- Content loads from blockchain
- Works even if original site is down

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

### ENS Content Resolution

ENS names that serve actual web content

User flow:

- User owns ENS name
- Configure content resolver
- Point to on-chain contract
- Contract implements web3:// interface
- web3://name.eth serves that content
- Visitors see decentralized website

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

## Technical Notes

ERC-4804 defines the web3:// URL scheme that maps to EVM calls. The URL format is web3://contract.eth/path?query. The browser translates this to a call to the contract's resolve(path, query) function which returns MIME type and content. Supports both human-readable (ENS) and hex addresses. Works with ERC-5219 for more complex contract resource serving.
