# Guide: Serving via web3://

ChainRender apps can be served through the **web3:// protocol** (ERC-5219 + ERC-4804) — an ownerless, on-chain
way to serve content addressable by a `web3://` URL, no HTTP server involved.

## What it is

ERC-4804 defines `web3://` URLs that resolve to on-chain contracts; ERC-5219 defines how a contract returns a web
response. Together they let a ChainRender app be fetched by a `web3://`-aware client (browser extension, gateway)
directly from the chain — the on-chain analog of an HTTP GET, with no server.

## Why it matters

It's the distribution side of "no hosting": not only is the app *stored* on-chain, it can be *served* on-chain too,
addressable by a stable `web3://` URL. Combined with content addressing, the URL points at immutable, verifiable
content.

## Using it

Your app's render output is exposed through the web3:// serving path; a `web3://`-capable client fetches it like a
normal resource. The app is unchanged — this is a serving/distribution wrapper over the same on-chain component.

## Related
- **[No Hosting: How It Works](../concepts/no-hosting.md)** · **[What You Can Build](../concepts/what-you-can-build.md)**
