Open methods · downloadable evidence

Favicon Compatibility Lab

A transparent record of what Favicon.now generates, what has been measured programmatically, what platform specifications require, and what still needs manual browser or device observation.

Evidence labels

No compatibility claim without a method.

This lab separates deterministic package facts, standards or vendor requirements, and manual observations. A blank manual-observation cell is not silently presented as browser support.

A

Generated and inspected

Files are created from disclosed synthetic sources, reopened, inventoried, measured, and asserted in the automated test suite.

B

Specification-backed

A requirement comes from a linked browser, search, framework, or web-platform primary reference.

C

Manual observation

A named browser, operating system, version, date, and visible result are required before a UI behavior is marked observed.

Baseline dataset · 2026-07-31

Four deterministic sources, one controlled pipeline

Every source is a synthetic 512×512 RGBA image. Legacy standalone sizes are disabled; ordinary and maskable PWA output is enabled. Byte counts describe this exact build and are not universal compression benchmarks.

CaseZIPFilesICO48 PNGApple 180PWA 512Maskable 512
solid-square4,028 B141,902 B126 B418 B1,814 B1,814 B
transparent-mark41,419 B1414,284 B1,375 B4,295 B2,210 B7,529 B
two-color-letter42,539 B1414,127 B1,495 B3,987 B2,304 B8,835 B
wide-source-normalized32,469 B1411,062 B1,078 B3,313 B1,852 B5,971 B

ICO assertion: every case contains 16, 32, 48, 64, 128, and 256 pixel frames.

Manifest assertion: every case contains separate purpose: maskable declarations.

Archive assertion: every core package contains 14 files including documentation and markup.

Dated browser observations

This is a narrow, reproducible record—not a browser-support percentage. It names the exact browser, operating system, environment, method, and behaviors that were not tested.

Google Chrome 150.0.7871.187

macOS 26.5.1 (25F80) · tested 2026-07-31

Intended local build at http://localhost:6005

Observed method

Headless Chromium rendered the homepage; the rendered DOM exposed SVG, 48px PNG, ICO, Apple touch, and manifest declarations. Each declared local asset was then requested and its response type and decoded raster dimensions were checked.

Result: pass

Not asserted: Visible browser-tab selection, bookmark UI, Apple home-screen presentation, PWA install UI, Google Search display.

Surface test matrix

What is proven, specified, and still observable

SurfaceCandidateAutomated proofPrimary requirementManual observation status
Browser tabSVG, PNG, ICOFiles decode; MIME and dimensions checkedMDN rel=icon selectionNot asserted by this dataset
Google SearchSquare crawlable iconSquare candidate and public response checkerGoogle favicon guidanceSearch display remains Google-controlled
Apple home screen180×180 PNGDimensions and decoding checkedApple web content guideDevice observation not asserted
Chromium PWA192 and 512 PNGManifest entries and files checkedweb.dev manifest guideInstall UI not asserted
Adaptive app iconMaskable 192 and 512Purpose and safe-zone composition checkedMDN manifest iconsDevice crop not asserted
Reproduce the baseline

Methodology and limitations

  1. Download the fixture archive containing each named 512×512 RGBA source and its manifest.
  2. Regenerate the same geometry from app.lab.lab_fixture_images when auditing the repository itself.
  3. Run the current in-memory package builder with legacy sizes disabled and maskable output enabled.
  4. Open the ZIP and record compressed archive weight, file count, and selected uncompressed member sizes.
  5. Open favicon.ico through Pillow’s ICO directory and assert six square frames.
  6. Parse site.webmanifest and assert ordinary plus maskable purpose entries.
  7. Run the repository regression suite, which also checks SVG sanitization, routes, metadata, schema, links, and headers.
Limitations

The dataset does not measure visual preference, brand recognition, browser market share, search click-through rate, or any device behavior not named in the observation file. Results can change with artwork complexity, Pillow version, compression implementation, browser version, and generator code.