{
  "schemaVersion": 1,
  "type": "resource",
  "id": "webaim-contrast",
  "evaluation": {
    "reviewedOn": "2026-10-19",
    "status": "checked",
    "modes": [
      "http",
      "browser",
      "source-review"
    ],
    "summary": "Three synthetic foreground/background pairs produced the expected extremes and near-threshold classifications in the public calculator. This is a bounded calculator check, not a website accessibility audit.",
    "reportUrl": "/design-evaluations/resource-webaim-contrast.json",
    "identity": {
      "target": "https://webaim.org/resources/contrastchecker/",
      "version": "Unversioned public hosted page sampled on 2026-10-19; no installed package version attested.",
      "integrity": "Recorded document SHA-256 19069d55223e58b7caddca00d563fb9f251ebf159b16d76620f82e577bba2c9a. This is the HTML response only, not an integrity guarantee for scripts, dependencies or the whole service."
    },
    "environment": [
      "Fresh anonymous Chromium 155.0.8059.82 context on Windows; 1365 × 900 viewport; reduced motion requested.",
      "GET and HEAD only; non-GET methods and WebSockets blocked. No owner browser session, account, credentials, private fixtures, uploads or purchases.",
      "Only the named public controls and synthetic values were used. Screenshots and compact request observations were retained as review evidence."
    ],
    "tests": [
      {
        "name": "Public document response",
        "mode": "http",
        "method": "Navigate to the recorded public target in a fresh anonymous browser.",
        "result": "pass",
        "observation": "The sampled document returned HTTP 200 over HTTPS. Its response body SHA-256 was 19069d55223e58b7caddca00d563fb9f251ebf159b16d76620f82e577bba2c9a; this fingerprints only the recorded HTML response."
      },
      {
        "name": "Maximum-contrast pair",
        "mode": "browser",
        "method": "Enter #000000 foreground and #FFFFFF background in the public HEX fields.",
        "result": "pass",
        "observation": "The tool displayed 21:1 and passed the displayed normal-text, large-text and graphical-object thresholds."
      },
      {
        "name": "Near-threshold pair",
        "mode": "browser",
        "method": "Enter #777777 on #FFFFFF and inspect the displayed ratio and classifications.",
        "result": "pass",
        "observation": "The tool displayed 4.47:1: normal text failed AA and AAA; large text passed AA and failed AAA; graphical objects passed AA."
      },
      {
        "name": "Equal-color pair",
        "mode": "browser",
        "method": "Enter #FFFFFF foreground and background.",
        "result": "pass",
        "observation": "The tool displayed 1:1 and failed all displayed contrast thresholds."
      },
      {
        "name": "Primary-source scope review",
        "mode": "source-review",
        "method": "Read the official pages and relevant repository or standard references linked below.",
        "result": "pass",
        "observation": "Reviewed the calculator’s explanation and WebAIM’s institutional background. The three numeric cases were checked in the page, not inferred from documentation."
      },
      {
        "name": "Broader workflow and assurance coverage",
        "mode": "browser",
        "method": "Keep authenticated, installation, private-data and broader accessibility workflows outside this bounded pass.",
        "result": "not-run",
        "observation": "The API, bookmarklet, WAVE URL submission, alpha blending edge cases, every color combination and any paid audit were not tested."
      }
    ],
    "security": {
      "scope": "Passive observation of the sampled public pages, response headers and request destinations, plus the specific documented boundaries below. No intrusive scanning or security certification.",
      "findings": [
        {
          "level": "caution",
          "basis": "observed",
          "title": "Analytics and advertising requests",
          "detail": "The sample requested Google font, tag, analytics and advertising origins. Six POST requests to analytics/advertising endpoints were blocked by the test guard; this is not a local-only or zero-telemetry claim."
        },
        {
          "level": "info",
          "basis": "observed",
          "title": "Use pair values, not sensitive page content",
          "detail": "Only synthetic HEX values were entered. The separate website-audit URL field and bookmarklet were not used. Do not infer that testing a color pair authorizes submission of a private application URL."
        },
        {
          "level": "caution",
          "basis": "advice",
          "title": "Calculator output has a narrow boundary",
          "detail": "Use the result as evidence about a specific color pair. It does not assess an authenticated page, protect uploaded content or validate a complete accessibility claim."
        }
      ],
      "limits": [
        "No backend, authenticated authorization, session isolation, vulnerability exploitation, dependency scan or account-data retention assessment was performed.",
        "The GET/HEAD-only guard can change hosted behavior; blocked background traffic is reported rather than treated as a product defect. Request observations are a bounded sample, not proof of all data handling."
      ]
    },
    "practicalCaveats": [
      "Retain the actual ratio and the relevant text-size/state decision; do not round a failure into a pass.",
      "Check the final page after colors are mapped to tokens and combined with images, transparency or gradients."
    ],
    "limits": [
      "The API, bookmarklet, WAVE URL submission, alpha blending edge cases, every color combination and any paid audit were not tested.",
      "One browser, one viewport and a short observation window; no cross-browser, assistive-technology or complete accessibility audit.",
      "Proposed use-case examples in this review were not implemented as a production workflow."
    ],
    "sources": [
      {
        "label": "Contrast checker and threshold explanation",
        "url": "https://webaim.org/resources/contrastchecker/"
      },
      {
        "label": "WebAIM institutional background",
        "url": "https://webaim.org/about/"
      }
    ]
  }
}
