FWC-1§1Informative

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.

  1. HTMLpayload · UTF-8
  2. deflate-rawif shorter
  3. AES-GCMoptional password
  4. FW header12 bytes
  5. RGBnoise or lsb
  6. PNGfavicon

Design goals

  • Exactness over cleverness. Every byte written into the image must come back bit-identical from getImageData on 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, DecompressionStream and 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.

SectionCoversStatus
§2 TerminologyVocabulary used throughoutNormative
§3 Container formatThe 12-byte header and bodyNormative
§4 Pixel carrierNoise and LSB byte-to-pixel mappingsNormative
§5 Compressiondeflate-raw and the compressed flagNormative
§6 EncryptionPBKDF2 + AES-256-GCM envelopeNormative
§7 DecodingReference algorithm and error taxonomyNormative
§8 Runtime loaderThe host page and bootstrap scriptNormative
§9 Hosting protocolURL layout, caching, subdomainsInformative
§10 ConformanceRequirement checklist and test vectorsNormative
§11 SecurityThreat model and considerationsInformative
§12 VersioningExtension rules and roadmapInformative