Overview
A web page whose only asset is its own favicon. This document specifies FWC-1, the Favicon Web Container, so that any encoder and any decoder can interoperate.
FWC-1 defines how an arbitrary byte payload — typically a complete HTML document — is packed into the pixel data of a PNG image small enough to serve as a browser favicon, and how a minimal runtime recovers that payload in the browser without any server participation. The favicon is the site. The HTML page that references it is a fixed, content-free shell.
- HTMLpayload · UTF-8
- deflate-rawif shorter
- AES-GCMoptional password
- FW header12 bytes
- RGBnoise or lsb
- PNGfavicon
Design goals
- Exactness over cleverness. Every byte written into the image must come back bit-identical from
getImageDataon every browser engine. The format therefore avoids the alpha channel entirely and never relies on lossy tricks. - Zero dependencies at decode time. The runtime uses only Canvas 2D,
DecompressionStreamand WebCrypto — all baseline web platform APIs. No library, no WASM, no network round-trip beyond the favicon itself. - Self-describing. A 12-byte header carries magic, version, flags, length and a CRC so a decoder can identify a container, reject damage, and fail loudly instead of rendering garbage.
- Two carriers, one container. The same byte stream can be painted as dense pixel noise (maximum capacity) or hidden in the low bits of a cover image (steganographic). Decoders auto-detect which was used.
Document structure
Sections marked normative define conformance requirements using the key words MUST, MUST NOT, SHOULD, SHOULD NOT and MAY as described in RFC 2119. Sections marked informative provide rationale, examples and implementation notes and do not add requirements.
| Section | Covers | Status |
|---|---|---|
| §2 Terminology | Vocabulary used throughout | Normative |
| §3 Container format | The 12-byte header and body | Normative |
| §4 Pixel carrier | Noise and LSB byte-to-pixel mappings | Normative |
| §5 Compression | deflate-raw and the compressed flag | Normative |
| §6 Encryption | PBKDF2 + AES-256-GCM envelope | Normative |
| §7 Decoding | Reference algorithm and error taxonomy | Normative |
| §8 Runtime loader | The host page and bootstrap script | Normative |
| §9 Hosting protocol | URL layout, caching, subdomains | Informative |
| §10 Conformance | Requirement checklist and test vectors | Normative |
| §11 Security | Threat model and considerations | Informative |
| §12 Versioning | Extension rules and roadmap | Informative |