{
  "version": "0.1.0",
  "scanTitle": "SCAN: https://www.w3.org/",
  "issueNumber": 45,
  "generatedAt": "2026-04-23T18:25:56.193Z",
  "requestedUrls": [
    "https://www.w3.org/",
    "https://www.w3.org/ja/",
    "https://www.w3.org/zh-hans/",
    "https://www.w3.org/standards/",
    "https://www.w3.org/standards/about/",
    "https://www.w3.org/TR/",
    "https://www.w3.org/standards/types/",
    "https://www.w3.org/groups/",
    "https://www.w3.org/translations/",
    "https://www.w3.org/standards/review/",
    "https://www.w3.org/get-involved/promote/",
    "https://www.w3.org/liaisons/",
    "https://www.w3.org/groups/other/tag/",
    "https://www.w3.org/get-involved/",
    "https://www.w3.org/ecosystems/",
    "https://www.w3.org/membership/",
    "https://www.w3.org/Member/",
    "https://www.w3.org/support-us/",
    "https://www.w3.org/email/",
    "https://www.w3.org/guide/",
    "https://www.w3.org/about/positive-work-environment/",
    "https://www.w3.org/invited-experts/",
    "https://www.w3.org/resources/",
    "https://www.w3.org/developers/",
    "https://www.w3.org/developers/tools/",
    "https://www.w3.org/WAI/fundamentals/",
    "https://www.w3.org/International/i18n-drafts/nav/about",
    "https://www.w3.org/policies/code-of-conduct/",
    "https://www.w3.org/reports/",
    "https://www.w3.org/news-events/",
    "https://www.w3.org/news/",
    "https://www.w3.org/blog/",
    "https://www.w3.org/press-releases/",
    "https://www.w3.org/about/press-media/",
    "https://www.w3.org/events/",
    "https://www.w3.org/news-events/w3c-tpac/",
    "https://www.w3.org/about/",
    "https://www.w3.org/mission/",
    "https://www.w3.org/about/leadership/",
    "https://www.w3.org/staff/",
    "https://www.w3.org/careers/",
    "https://www.w3.org/about/diversity/",
    "https://www.w3.org/evangelists/",
    "https://www.w3.org/about/corporation/",
    "https://www.w3.org/policies/",
    "https://www.w3.org/contact/",
    "https://www.w3.org/help/",
    "https://www.w3.org/help/search/",
    "https://www.w3.org/users/myprofile/",
    "https://www.w3.org/mission/accessibility/",
    "https://www.w3.org/mission/internationalization/",
    "https://www.w3.org/mission/privacy/",
    "https://www.w3.org/mission/security/",
    "https://www.w3.org/ecosystems/e-commerce/",
    "https://www.w3.org/ecosystems/media/",
    "https://www.w3.org/ecosystems/publishing/",
    "https://www.w3.org/2024/09/TPAC/w3c-30.html",
    "https://www.w3.org/membership/list/",
    "https://www.w3.org/news/2026/first-public-working-drafts-for-the-linked-web-storage-lws-1-0-authentication-suite/",
    "https://www.w3.org/news/2026/five-first-public-working-drafts-published-by-the-verifiable-credentials-working-group/",
    "https://www.w3.org/blog/2026/2026-breakouts-day-recap/",
    "https://www.w3.org/news/2026/first-public-working-draft-css-image-animation-module-level-1/",
    "https://www.w3.org/copyright/document-license/",
    "https://www.w3.org/ja/help/search/",
    "https://www.w3.org/ja/news/2026/w3c-invites-implementations-of-geolocation/",
    "https://www.w3.org/ja/news/2026/group-note-use-of-large-language-models-in-standards-work/",
    "https://www.w3.org/ja/news/2026/updated-w3c-recommendation-geolocation/",
    "https://www.w3.org/ja/blog/2026/past-present-and-future-an-update-on-w3cs-strategic-objectives-on-the-37th-anniversary-of-the-web-proposal/",
    "https://www.w3.org/ja/contact/",
    "https://www.w3.org/ja/help/",
    "https://www.w3.org/ja/support-us/",
    "https://www.w3.org/ja/policies/",
    "https://www.w3.org/ja/about/corporation/",
    "https://www.w3.org/zh-hans/standards/",
    "https://www.w3.org/zh-hans/standards/about/",
    "https://www.w3.org/zh-hans/standards/types/",
    "https://www.w3.org/zh-hans/groups/",
    "https://www.w3.org/zh-hans/standards/review/",
    "https://www.w3.org/zh-hans/get-involved/promote/",
    "https://www.w3.org/zh-hans/liaisons/",
    "https://www.w3.org/zh-hans/get-involved/",
    "https://www.w3.org/zh-hans/ecosystems/",
    "https://www.w3.org/zh-hans/membership/",
    "https://www.w3.org/zh-hans/support-us/",
    "https://www.w3.org/zh-hans/email/",
    "https://www.w3.org/zh-hans/about/positive-work-environment/",
    "https://www.w3.org/zh-hans/invited-experts/",
    "https://www.w3.org/zh-hans/resources/",
    "https://www.w3.org/zh-hans/developers/",
    "https://www.w3.org/zh-hans/developers/tools/",
    "https://www.w3.org/zh-hans/reports/",
    "https://www.w3.org/zh-hans/news-events/",
    "https://www.w3.org/zh-hans/news/",
    "https://www.w3.org/zh-hans/blog/",
    "https://www.w3.org/zh-hans/press-releases/",
    "https://www.w3.org/zh-hans/about/press-media/",
    "https://www.w3.org/zh-hans/events/",
    "https://www.w3.org/zh-hans/news-events/w3c-tpac/",
    "https://www.w3.org/zh-hans/about/",
    "https://www.w3.org/zh-hans/mission/"
  ],
  "summary": {
    "okCount": 100,
    "errorCount": 0,
    "averagePerformanceScore": 0.9537999999999995,
    "averageBestPracticesScore": 0.9589000000000003,
    "totalTransferBytes": 39444491,
    "totalCo2Grams": 15.110450834567398,
    "averageTransferBytes": 394444.91,
    "averageCo2GramsPerPage": 0.151104508345674,
    "averageRedundancyScore": 10.87,
    "highUrgencyRedundancyCount": 0,
    "averageModularizationScore": 9.1,
    "highUrgencyModularizationCount": 1,
    "averageDeadCodeScore": 3.11,
    "highUrgencyDeadCodeCount": 0,
    "averageNonCriticalResourcesScore": 7.12,
    "highUrgencyNonCriticalResourcesCount": 39,
    "averageFormValidationScore": 8.825,
    "highUrgencyFormValidationCount": 8,
    "averageMetadataScore": 11.2,
    "highUrgencyMetadataCount": 0,
    "averageLayoutAdaptationScore": 29.95,
    "highUrgencyLayoutAdaptationCount": 0,
    "averageSecurityLightScore": 15.13,
    "highUrgencySecurityLightCount": 0,
    "averageDependencyMaintenanceScore": 0.08,
    "highUrgencyDependencyMaintenanceCount": 0,
    "averageExpectedFilesScore": 45.1,
    "highUrgencyExpectedFilesCount": 0,
    "averageCompressionScore": 15.77,
    "highUrgencyCompressionCount": 8,
    "averageOptimizationScore": 97.7,
    "highUrgencyOptimizationCount": 97,
    "averageOfflineSupportScore": 100,
    "highUrgencyOfflineSupportCount": 100,
    "averageLanguageVersionScore": 0,
    "highUrgencyLanguageVersionCount": 0,
    "averageMediaHintsScore": 28.29,
    "highUrgencyMediaHintsCount": 0,
    "distinctSiteCount": 2,
    "singleSiteScan": false,
    "greenWeb": {
      "pageHostsChecked": 100,
      "pageHostsGreen": 100,
      "pageHostsNotGreen": 0,
      "pageHostsUnknown": 0,
      "externalOriginsChecked": 7,
      "externalOriginsGreen": 6,
      "externalOriginsNotGreen": 1,
      "externalOriginsUnknown": 0
    }
  },
  "budgetGuidance": {
    "wsgReference": {
      "id": "3.1",
      "title": "Set goals based on performance and energy impact",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact"
    },
    "benchmarkReference": {
      "name": "Sustainable Web Design Digital Carbon Ratings",
      "url": "https://sustainablewebdesign.org/digital-carbon-ratings/"
    },
    "current": {
      "averageTransferBytes": 394444.91,
      "averageCo2GramsPerPage": 0.151104508345674,
      "transferRating": "A",
      "co2Rating": "C"
    },
    "recommendedBudget": {
      "targetRating": "B",
      "maxTransferBytesPerPage": 999270.4,
      "maxCo2GramsPerPage": 0.145
    },
    "reductionsNeeded": {
      "transferBytesPerPage": {
        "absolute": 0,
        "percent": 0,
        "needsReduction": false
      },
      "co2GramsPerPage": {
        "absolute": 0.006104508345673998,
        "percent": 4.039924693516774,
        "needsReduction": true
      }
    },
    "stretchBudget": {
      "targetRating": "A",
      "maxTransferBytesPerPage": 543897.6,
      "maxCo2GramsPerPage": 0.079
    }
  },
  "thirdPartyJsSummary": {
    "wsgReference": {
      "title": "Give third parties the same priority as first parties during assessment",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
    },
    "averageScore": 8.91,
    "highUrgencyPages": 1,
    "assessedPages": 100,
    "providers": [
      {
        "hostname": "www.youtube.com",
        "pageCount": 14,
        "transferBytes": 5546403,
        "requestCount": 33,
        "status": "green",
        "hostedBy": "Google Cloud"
      },
      {
        "hostname": "www.google.com",
        "pageCount": 14,
        "transferBytes": 331660,
        "requestCount": 15,
        "status": "green",
        "hostedBy": "Google Cloud"
      },
      {
        "hostname": "www.youtube-nocookie.com",
        "pageCount": 12,
        "transferBytes": 5360432,
        "requestCount": 12,
        "status": "green",
        "hostedBy": "Google Cloud"
      },
      {
        "hostname": "f.vimeocdn.com",
        "pageCount": 2,
        "transferBytes": 624085,
        "requestCount": 4,
        "status": "not-green",
        "hostedBy": null
      },
      {
        "hostname": "www.gstatic.com",
        "pageCount": 2,
        "transferBytes": 55340,
        "requestCount": 6,
        "status": "green",
        "hostedBy": "Google Cloud"
      },
      {
        "hostname": "www.w3.org",
        "pageCount": 2,
        "transferBytes": 42904,
        "requestCount": 4,
        "status": "green",
        "hostedBy": "Cloudflare"
      },
      {
        "hostname": "static.doubleclick.net",
        "pageCount": 2,
        "transferBytes": 990,
        "requestCount": 3,
        "status": "green",
        "hostedBy": "Google Cloud"
      }
    ]
  },
  "externalProviderRiskSummary": {
    "recurringNonGreenProviders": [
      {
        "hostname": "f.vimeocdn.com",
        "status": "not-green",
        "hostedBy": null,
        "pageCount": 2,
        "requestCount": 6,
        "transferBytes": 672864,
        "resourceTypes": [
          "script",
          "stylesheet"
        ],
        "riskScore": 77
      }
    ],
    "nonGreenProviders": [
      {
        "hostname": "f.vimeocdn.com",
        "status": "not-green",
        "hostedBy": null,
        "pageCount": 2,
        "requestCount": 6,
        "transferBytes": 672864,
        "resourceTypes": [
          "script",
          "stylesheet"
        ],
        "riskScore": 77
      }
    ],
    "recurringUnknownProviders": []
  },
  "formValidationSummary": {
    "wsgReference": {
      "title": "Validate form errors and account for tooling requirements",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#validate-form-errors-and-account-for-tooling-requirements"
    },
    "uniqueElementSignaturesAssessed": 17,
    "totalOccurrences": 53,
    "reusedFromCacheCount": 10,
    "recurringElements": [
      {
        "signature": "search|get|self|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "search",
        "controlType": "search",
        "fieldName": "search",
        "score": 60,
        "urgency": "high",
        "pageCount": 4,
        "occurrenceCount": 4
      },
      {
        "signature": "form|post|/login|input|text|_username|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "text",
        "fieldName": "_username",
        "score": 60,
        "urgency": "high",
        "pageCount": 2,
        "occurrenceCount": 2
      },
      {
        "signature": "search|get|/help/search|input|search|q|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "search",
        "controlType": "search",
        "fieldName": "q",
        "score": 60,
        "urgency": "high",
        "pageCount": 2,
        "occurrenceCount": 2
      },
      {
        "signature": "form|post|/login|input|checkbox|_remember_me|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "checkbox",
        "fieldName": "_remember_me",
        "score": 50,
        "urgency": "medium",
        "pageCount": 2,
        "occurrenceCount": 2
      },
      {
        "signature": "form|get|self|select|select|type|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "select",
        "fieldName": "type",
        "score": 50,
        "urgency": "medium",
        "pageCount": 2,
        "occurrenceCount": 2
      },
      {
        "signature": "form|get|self|select|select|category|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "select",
        "fieldName": "category",
        "score": 50,
        "urgency": "medium",
        "pageCount": 2,
        "occurrenceCount": 2
      },
      {
        "signature": "form|get|self|select|select|initial|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "select",
        "fieldName": "initial",
        "score": 50,
        "urgency": "medium",
        "pageCount": 2,
        "occurrenceCount": 2
      },
      {
        "signature": "form|post|/login|input|password|_password|no-autocomplete|required|no-pattern|no-minlength",
        "role": "form",
        "controlType": "password",
        "fieldName": "_password",
        "score": 30,
        "urgency": "medium",
        "pageCount": 2,
        "occurrenceCount": 2
      }
    ],
    "recurringSearchElements": [
      {
        "signature": "search|get|self|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "search",
        "controlType": "search",
        "fieldName": "search",
        "score": 60,
        "urgency": "high",
        "pageCount": 4,
        "occurrenceCount": 4
      },
      {
        "signature": "search|get|/help/search|input|search|q|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "search",
        "controlType": "search",
        "fieldName": "q",
        "score": 60,
        "urgency": "high",
        "pageCount": 2,
        "occurrenceCount": 2
      }
    ]
  },
  "metadataSummary": {
    "wsgReference": {
      "title": "Structure metadata for machine readability",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#structure-metadata-for-machine-readability"
    },
    "assessedPages": 100,
    "averageScore": 11.2,
    "highUrgencyPages": 0,
    "missing": {
      "missingLang": 0,
      "missingDescription": 3,
      "missingCanonical": 99,
      "missingOpenGraphCore": 5,
      "missingTwitterCard": 4,
      "invalidStructuredData": 0
    }
  },
  "layoutSupportSummary": {
    "wsgReference": {
      "title": "Ensure layouts work for different devices and requirements",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-layouts-work-for-different-devices-and-requirements"
    },
    "assessedPages": 100,
    "averageScore": 29.95,
    "highUrgencyPages": 0,
    "mobileOverflowPages": 0,
    "tabletOverflowPages": 0,
    "totalMobileSmallTapTargets": 7926,
    "totalTabletSmallTapTargets": 9171,
    "totalFixedWidthOffenders": 0,
    "pagesWithGridOverflow": 8,
    "totalGridOverflowContainers": 8,
    "totalGridContainersDetected": 214
  },
  "securityLightSummary": {
    "wsgReference": {
      "title": "Ensure that your code is secure",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-your-code-is-secure"
    },
    "assessedPages": 100,
    "averageScore": 15.13,
    "highUrgencyPages": 0,
    "pagesWithoutCsp": 0,
    "pagesWithoutHsts": 7,
    "pagesWithVulnerableLibraries": 0,
    "totalExternalScriptsWithoutIntegrity": 4
  },
  "dependencyMaintenanceSummary": {
    "wsgReference": {
      "title": "Use dependencies appropriately and ensure maintenance",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
    },
    "assessedPages": 100,
    "averageScore": 0.08,
    "highUrgencyPages": 0,
    "pagesWithVulnerableDependencies": 0,
    "totalVulnerableDependencies": 0,
    "topRecurringLibraries": []
  },
  "expectedFilesSummary": {
    "wsgReference": {
      "title": "Include expected and beneficial files",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#include-expected-and-beneficial-files"
    },
    "assessedPages": 100,
    "averageScore": 45.1,
    "highUrgencyPages": 0,
    "missing": {
      "robotsTxt": 0,
      "sitemapXml": 100,
      "securityTxt": 100,
      "webManifest": 100,
      "favicon": 2
    }
  },
  "compressionSummary": {
    "wsgReference": {
      "title": "Reduce data transfer with compression",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
    },
    "assessedPages": 100,
    "averageScore": 15.77,
    "highUrgencyPages": 8,
    "pagesMissingTextCompression": 0,
    "totalEstimatedSavingsBytes": 7687790.199999999,
    "recurringOpportunities": [
      {
        "id": "unminified-javascript",
        "title": "Minify JavaScript before transfer",
        "urgency": "medium",
        "pageCount": 96,
        "totalEstimatedSavingsBytes": 622430
      },
      {
        "id": "unminified-css",
        "title": "Minify CSS before transfer",
        "urgency": "low",
        "pageCount": 51,
        "totalEstimatedSavingsBytes": 925259
      },
      {
        "id": "modern-image-formats",
        "title": "Use modern image compression formats",
        "urgency": "high",
        "pageCount": 23,
        "totalEstimatedSavingsBytes": 5704484.2
      },
      {
        "id": "uses-optimized-images",
        "title": "Improve image encoding quality/size",
        "urgency": "medium",
        "pageCount": 5,
        "totalEstimatedSavingsBytes": 435617
      }
    ]
  },
  "optimizationSummary": {
    "wsgReference": {
      "title": "Use the most efficient solution for your service",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
    },
    "assessedPages": 100,
    "averageScore": 97.7,
    "highUrgencyPages": 97,
    "totalEstimatedSavingsBytes": 13698151.199999997,
    "totalEstimatedBlockingMs": 57951,
    "recurringOpportunities": [
      {
        "id": "unminified-javascript",
        "title": "Minify JavaScript",
        "pageCount": 96,
        "totalEstimatedSavingsBytes": 622430,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "render-blocking-resources",
        "title": "Eliminate render-blocking resources",
        "pageCount": 57,
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 57951
      },
      {
        "id": "unused-css-rules",
        "title": "Remove unused CSS",
        "pageCount": 52,
        "totalEstimatedSavingsBytes": 1888911,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "unminified-css",
        "title": "Minify CSS",
        "pageCount": 51,
        "totalEstimatedSavingsBytes": 925259,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "modern-image-formats",
        "title": "Serve images in next-gen formats",
        "pageCount": 23,
        "totalEstimatedSavingsBytes": 5704484.2,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "uses-responsive-images",
        "title": "Right-size images for viewport",
        "pageCount": 23,
        "totalEstimatedSavingsBytes": 4021683,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "uses-optimized-images",
        "title": "Compress oversized image assets",
        "pageCount": 5,
        "totalEstimatedSavingsBytes": 435617,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "unused-javascript",
        "title": "Remove unused JavaScript",
        "pageCount": 3,
        "totalEstimatedSavingsBytes": 99767,
        "totalEstimatedBlockingMs": 0
      }
    ]
  },
  "offlineSupportSummary": {
    "wsgReference": {
      "title": "Optimize caching and support offline access",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
    },
    "assessedPages": 100,
    "averageScore": 100,
    "highUrgencyPages": 100,
    "pagesWithoutServiceWorker": 100,
    "pagesWithoutOfflineSupport": 100,
    "pagesWithWeakCacheTtl": 100,
    "recurringOpportunities": [
      {
        "id": "service-worker",
        "title": "Add service worker support",
        "urgency": "high",
        "pageCount": 100
      },
      {
        "id": "works-offline",
        "title": "Ensure critical routes work offline",
        "urgency": "high",
        "pageCount": 100
      },
      {
        "id": "installable-manifest",
        "title": "Improve web app manifest support",
        "urgency": "medium",
        "pageCount": 100
      },
      {
        "id": "uses-long-cache-ttl",
        "title": "Strengthen static asset cache TTL",
        "urgency": "medium",
        "pageCount": 100
      },
      {
        "id": "offline-start-url",
        "title": "Support offline start URL behavior",
        "urgency": "medium",
        "pageCount": 100
      }
    ]
  },
  "languageVersionSummary": {
    "wsgReference": {
      "title": "Use the latest stable language version",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
    },
    "assessedPages": 100,
    "averageScore": 0,
    "highUrgencyPages": 0,
    "pagesWithOutdatedRuntimeSignals": 0,
    "pagesWithVersionDisclosure": 0,
    "topOutdatedSignals": []
  },
  "mediaHintsSummary": {
    "wsgReference": {
      "title": "Optimize media to reduce resource use",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use"
    },
    "assessedPages": 100,
    "averageScore": 28.29,
    "highUrgencyPages": 0,
    "pagesWithAutoplay": 0,
    "pagesWithUnmutedAutoplay": 0,
    "pagesWithoutDarkMode": 99,
    "pagesWithLazyLoadingGap": 88
  },
  "gridAwareSummary": {
    "assessedPages": 100,
    "pagesWithDetection": 0,
    "detectedUrls": []
  },
  "wsgHighlightsSummary": {
    "assessedPages": 100,
    "averageScore": 84.55,
    "highlights": [
      {
        "guideline": "11.3",
        "title": "Incomplete media lazy loading",
        "urgency": "medium",
        "detail": "Only 11/14 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
        "wsid": "11.lazy loading",
        "assessor": "script",
        "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>",
        "pageCount": 100,
        "pages": {},
        "criteria": {
          "title": "Lazy loading",
          "description": "Incorporate lazy/deferred loading from the start: Consider which media elements are immediately required, and which would be better relegated to loading on specific user interaction. Load data-intensive media on the client side, including the media itself, behind a facade - a non-functional and static representational element.",
          "resources": [
            {
              "Avoid hotlinking images with Cross-Origin-Resource-Policy": "https://www.sjoerdlangkemper.nl/2024/11/27/avoid-hotlinking-images-with-corp-cross-origin-resource-policy/",
              "Fast load times: Optimize Your Images": "https://web.dev/explore/fast?hl=en#optimize-your-images",
              "GPF - General Policy Framework (PDF) - 4.1 - UX and UI (Autoplay)": "https://www.arcep.fr/uploads/tx_gspublication/general_policy_framework_for_the_ecodesign_of_digital_services_version_2024.pdf",
              "GR491 - 9-5071 - Autoplay": "https://gr491.isit-europe.org/en/crit.php?id=9-5071-frontend-active-content-uses-technical-resources-to-function.",
              "GR491 - 9-5068 - Lazy Loading": "https://gr491.isit-europe.org/en/crit.php?id=9-5068-frontend-when-loading-the-service-on-the-user",
              "GreenIT - 0051 - Use lazy loading": "https://rweb.greenit.fr/en/fiches/RWEB_0051-use-lazy-loading",
              "How to Defer Offscreen Images and Background Images": "https://www.debugbear.com/blog/defer-offscreen-images",
              "Lazy Load Background Images with the IntersectionObserver API": "https://www.debugbear.com/blog/lazy-load-background-images-intersection-observer",
              "Lazy load third-party resources with facades": "https://developer.chrome.com/docs/lighthouse/performance/third-party-facades?hl=en",
              "Lazy loading (Wikipedia)": "https://en.wikipedia.org/wiki/Lazy_loading",
              "Lazy loading (Performance)": "https://developer.mozilla.org/en-US/docs/Web/Performance/Guides/Lazy_loading",
              "Lazy Loading Images Based on Screen Size": "https://www.aaron-gustafson.com/notebook/lazy-loading-images-based-on-screen-size/",
              "Non-blocking cross-browser image rendering on the canvas": "https://calendar.perfplanet.com/2025/non-blocking-image-canvas/",
              "Web Almanac: Sustainability": "https://almanac.httparchive.org/en/2024/sustainability"
            }
          ],
          "guideline": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "benefits": [
            {
              "Economic": "Eliminating data-intensive media entirely and using alternatives such as transcripts reduce costs associated with hosting and data transfer.",
              "Environment": "Reducing the battery drain associated with loading data-intensive content by preventing auto-loading or delaying it until the moment it is required reduces energy emissions associated with data transfer and renering.",
              "Performance": "Tailoring user experience to the device, situation, and environment of the user by having different resolutions and quality formats available reduces wasted bandwidth. This can boost performance for users who make choices to reduce the data downloaded.",
              "Social Equity": "Providing alternatives to data-intensive media allows with limited bandwidth or older devices to access content."
            }
          ],
          "example": "<picture> \n  <source type=\"image/avif\" srcset=\"image.avif\">\n  <source type=\"image/webp\" srcset=\"image.webp\">\n  <img width=\"100px\" height=\"100px\" src=\"image.jpg\" alt=\"\" loading=\"lazy\"/>\n</picture>"
        }
      },
      {
        "guideline": "2.4",
        "title": "Review User Journey Efficiency",
        "urgency": "investigate",
        "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
        "wsid": "2.minimize non-essential content",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
        "assessor": "human",
        "pageCount": 100,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "2.6",
        "title": "Check for Engagement Traps",
        "urgency": "investigate",
        "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
        "wsid": "2.design to assist not distract",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
        "assessor": "human",
        "pageCount": 100,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "2.7",
        "title": "Audit for Deceptive Design Patterns",
        "urgency": "investigate",
        "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
        "wsid": "2.avoid manipulative deceptive",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
        "assessor": "human",
        "pageCount": 100,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "2.14",
        "title": "Verify Accessible Alternatives for All Media",
        "urgency": "investigate",
        "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
        "wsid": "2.offer suitable alternatives",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
        "assessor": "human",
        "pageCount": 100,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "2.18",
        "title": "Confirm User Research Was Conducted",
        "urgency": "investigate",
        "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
        "wsid": "2.involve users early",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
        "assessor": "human",
        "pageCount": 100,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "2.10",
        "title": "Review Content Conciseness",
        "urgency": "investigate",
        "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
        "wsid": "2.provide clear inclusive content",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
        "assessor": "ai",
        "pageCount": 100,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "4.4",
        "title": "Verify Error Pages and Redirects Are Configured",
        "urgency": "investigate",
        "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
        "wsid": "4.error pages redirection",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
        "assessor": "human",
        "pageCount": 100,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "4.10",
        "title": "Review CDN Usage and Geographic Distribution",
        "urgency": "investigate",
        "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
        "wsid": "4.content delivery networks",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
        "assessor": "human",
        "pageCount": 100,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "5.2",
        "title": "Confirm a Sustainability Advocate Is Assigned",
        "urgency": "investigate",
        "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
        "wsid": "5.assign sustainability advocate",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
        "assessor": "human",
        "pageCount": 100,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "5.8",
        "title": "Check for a Public Sustainability Statement",
        "urgency": "investigate",
        "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
        "wsid": "5.support mandatory disclosures",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
        "assessor": "human",
        "pageCount": 100,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "12.3",
        "title": "No reduced motion support",
        "urgency": "low",
        "detail": "Implement prefers-reduced-motion to allow users to disable animations, reducing compute and improving accessibility.",
        "wsid": "12.control animation",
        "assessor": "script",
        "example": "@media (prefers-reduced-motion: reduce) {\n  *, ::before, ::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n}",
        "pageCount": 5,
        "pages": {},
        "criteria": {
          "title": "Control animation",
          "description": "Allow users to start, stop, pause, or otherwise control animated content.",
          "resources": [
            {
              "Accessible Web Animation": "https://css-tricks.com/accessible-web-animation-the-wcag-on-animation-explained/",
              "Animated sites are unique, but not always accessible": "https://uxdesign.cc/animated-sites-are-unique-but-not-always-accessible-5af54fefa092",
              "Animation and motion": "https://web.dev/learn/accessibility/motion?hl=en-us",
              "Animation that fails safely": "https://adobe.design/stories/leading-design/animation-that-fails-safely-defensive-design-for-motion-sensitive-users",
              "GPF - General Policy Framework (PDF) - 4.1 - UX and UI (Autoplay)": "https://www.arcep.fr/uploads/tx_gspublication/general_policy_framework_for_the_ecodesign_of_digital_services_version_2024.pdf",
              "GPF - General Policy Framework (PDF) - 4.6 - UX and UI (Informational Media)": "https://www.arcep.fr/uploads/tx_gspublication/general_policy_framework_for_the_ecodesign_of_digital_services_version_2024.pdf",
              "GR491 - 7-5051 - Animation Frequency": "https://gr491.isit-europe.org/en/crit.php?id=7-5051-frontend-the-presentation-of-operations-on-the-front",
              "Let users pause/stop/hide animation": "https://marcom.wwu.edu/accessibility/guide/pause-stop-hide-animation",
              "prefers-reduced-motion: Sometimes less movement is more": "https://web.dev/articles/prefers-reduced-motion?hl=en",
              "Respecting Users' Motion Preferences": "https://www.smashingmagazine.com/2021/10/respecting-users-motion-preferences/"
            }
          ],
          "guideline": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "12",
            "title": "Ensure animation is proportionate and easy to control",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-animation-is-proportionate-and-easy-to-control",
            "subheading": "Ensure any animation deemed necessary is not overdone and that the user can control its ability to run."
          },
          "benefits": [
            {
              "Environment": "Disabling and reducing animation to the essential, with appropriate optimization and user control, reduces rendering impact and associated emissions.",
              "Performance": "Compressing, removing, or otherwise reducing animation files reduces complexity, improving performance.",
              "Social Equity": "Catering to different perspectives on and preferences in relation to animation can improve acceptance and access for individuals using different devices and from different backgrounds."
            }
          ],
          "example": "@media (prefers-reduced-motion: reduce) {\r\n\tbody *,\r\n\tbody *::before,\r\n\tbody *::after {\r\n\t\tanimation-delay: -1ms !important;\r\n\t\tanimation-duration: 1ms !important;\r\n\t\tanimation-iteration-count: 1 !important;\r\n\t\tbackground-attachment: initial !important;\r\n\t\ttransition-duration: 1ms !important;\r\n\t\ttransition-delay: -1ms !important;\r\n\t\tscroll-behavior: auto !important;\r\n\t}\r\n}"
        }
      },
      {
        "guideline": "3.7",
        "title": "Missing main content landmark",
        "urgency": "medium",
        "detail": "No <main> or role=\"main\" tags found. Semantic HTML reduces code bloat and allows both assistive technology and web crawlers to parse content more efficiently.",
        "wsid": "3.ensure code follows good semantic practices",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-code-follows-good-semantic-practices",
        "assessor": "script",
        "example": "<main>\n  <article>\n    <h1>Page Title</h1>\n    <p>Content goes here.</p>\n  </article>\n</main>",
        "pageCount": 2,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "17.1",
        "title": "Missing print style sheet",
        "urgency": "low",
        "detail": "Add a @media print stylesheet to ensure the page is optimized for paper-saving printing.",
        "wsid": "17.printed documents",
        "assessor": "script",
        "example": "@media print {\n  /* Hide non-critical navigation and backgrounds */\n  nav, .ads, header, footer { display: none; }\n  body { font-size: 12pt; color: #000; background: #fff; }\n  a::after { content: \" (\" attr(href) \") \"; } /* Show URLs */\n}",
        "pageCount": 1,
        "pages": {},
        "criteria": {
          "title": "Printed documents",
          "description": "Design your process to reduce the need for paper documents. Where the production of paper documents is essential, it should be designed to have the lowest impact possible. Include a CSS print style sheet and test it with different types of content. Encourage saving documents in digital formats over paper-based storage and archiving.",
          "resources": [
            {
              "A Guide To The State Of Print Stylesheets In 2018": "https://www.smashingmagazine.com/2018/05/print-stylesheets-in-2018/",
              "Changing Paper Consumption": "http://www.greenschools.net/article.php-id=75.html",
              "CSS Design: Going to Print": "https://alistapart.com/article/goingtoprint/",
              "GR491 - 6-3044 - Paper Printing": "https://gr491.isit-europe.org/en/crit.php?id=6-3044-uxui-the-flows-of-dematerialization-are-sometimes-broken",
              "GR491 - 9-5076 - Ink Saving": "https://gr491.isit-europe.org/en/crit.php?id=9-5076-frontend-the-flows-of-dematerialization-are-sometimes-broken",
              "GreenIT - 0031 - Provide a print CSS": "https://rweb.greenit.fr/en/fiches/RWEB_0031-provide-a-css-print",
              "How to Become an Eco Web Designer": "https://onextrapixel.com/how-to-become-an-eco-web-designer/",
              "OpQuast - 190 - The website offers styles dedicated to printing.": "https://checklists.opquast.com/en/digital-quality/the-site-provides-at-least-one-style-sheet-for-printing",
              "OpQuast - 191 - The content of each page can be printed without printing the navigation blocks.": "https://checklists.opquast.com/en/digital-quality/the-content-of-each-page-can-be-printed-without-navigation-blocks",
              "Printed - Print Friendly CSS Library": "https://printedcss.com/",
              "UI Tools": "https://designsustainably.eu/uitools/",
              "United Nations SDGS - Goal 11 - Human Habitats": "https://sdgs.un.org/goals/goal11#targets_and_indicators",
              "United Nations SDGS - Goal 12 - Consumption & Production": "https://sdgs.un.org/goals/goal12#targets_and_indicators",
              "Using UX Design to Build a Sustainable Future": "https://uxmag.com/articles/using-ux-design-to-build-a-sustainable-future",
              "Which Fonts Use The Least Ink & Toner?": "https://www.tonerbuzz.com/blog/which-fonts-use-the-least-ink-toner/"
            }
          ],
          "guideline": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "17",
            "title": "Reduce the impact of downloadable and physical documents",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-the-impact-of-downloadable-and-physical-documents",
            "subheading": "Reduce the need for physical documents as much as possible by allowing the saving of well-labeled, optimized digital downloads. Include a print style sheet to avoid resource waste."
          },
          "benefits": [
            {
              "Accessibility": "Providing a range of inclusively designed downloadable documents in a variety of formats benefits those with accessibility needs as they can choose the ideal format for their device and use case.",
              "Environment": "Reducing the need to print documents or providing a print friendly style sheet reduces emissions associated with paper, ink, and the act of printing.",
              "Performance": "Compressing or otherwise optimizing documents means they can be downloaded faster, avoiding users needing to wait to view documents prepared for offline viewing."
            }
          ],
          "example": null
        }
      }
    ]
  },
  "siteGuidance": {
    "siteCount": 2,
    "singleSiteScan": false,
    "sites": [
      {
        "origin": "https://www.w3.org",
        "pageCount": 98,
        "sharedRecommendations": [
          {
            "area": "expected-files",
            "urgency": "medium",
            "title": "Add sitemap.xml at site origin",
            "detail": "sitemap.xml is missing for all sampled pages on https://www.w3.org."
          },
          {
            "area": "expected-files",
            "urgency": "low",
            "title": "Publish .well-known/security.txt",
            "detail": ".well-known/security.txt is missing for all sampled pages on https://www.w3.org."
          },
          {
            "area": "offline-support",
            "urgency": "high",
            "title": "Introduce service worker support",
            "detail": "No sampled pages on https://www.w3.org indicate service worker support for offline resilience."
          },
          {
            "area": "offline-support",
            "urgency": "high",
            "title": "Support offline fallback behavior",
            "detail": "Offline page behavior was not detected across sampled pages on https://www.w3.org."
          },
          {
            "area": "optimization",
            "urgency": "medium",
            "title": "Fix recurring optimization bloat at shared layer",
            "detail": "Minify JavaScript recurs across 94 pages on https://www.w3.org (est. 595.87 KB aggregate savings)."
          },
          {
            "area": "compression",
            "urgency": "medium",
            "title": "Prioritize recurring compression fixes",
            "detail": "Minify JavaScript before transfer recurs across 94 pages on https://www.w3.org (est. 595.87 KB aggregate savings)."
          },
          {
            "area": "offline-support",
            "urgency": "high",
            "title": "Prioritize recurring offline/caching improvements",
            "detail": "Add service worker support is needed across 98 pages on https://www.w3.org."
          }
        ],
        "recurringCompression": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "pageCount": 94,
            "totalEstimatedSavingsBytes": 610171
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "pageCount": 49,
            "totalEstimatedSavingsBytes": 887352
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "pageCount": 23,
            "totalEstimatedSavingsBytes": 5704484.2
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "medium",
            "pageCount": 5,
            "totalEstimatedSavingsBytes": 435617
          }
        ],
        "recurringOptimization": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "pageCount": 94,
            "totalEstimatedSavingsBytes": 610171,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "pageCount": 55,
            "totalEstimatedSavingsBytes": 0,
            "totalEstimatedBlockingMs": 55818
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "pageCount": 50,
            "totalEstimatedSavingsBytes": 1816638,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "pageCount": 49,
            "totalEstimatedSavingsBytes": 887352,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "pageCount": 23,
            "totalEstimatedSavingsBytes": 5704484.2,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "pageCount": 23,
            "totalEstimatedSavingsBytes": 4021683,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "pageCount": 5,
            "totalEstimatedSavingsBytes": 435617,
            "totalEstimatedBlockingMs": 0
          }
        ],
        "recurringOfflineOpportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "pageCount": 98
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "pageCount": 98
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "pageCount": 98
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "pageCount": 98
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "pageCount": 98
          }
        ],
        "recurringDependencies": [],
        "recurringRuntimeSignals": [],
        "pageSpecific": [
          {
            "url": "https://www.w3.org/WAI/fundamentals/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 72,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 50,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 438.01 KB."
              },
              {
                "title": "Serve images in next-gen formats",
                "urgency": "high",
                "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 438.01 KB."
              },
              {
                "title": "Right-size images for viewport",
                "urgency": "high",
                "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 413.13 KB."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "low",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 15.19 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/careers/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 92,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 184.10 KB."
              },
              {
                "title": "Improve image encoding quality/size",
                "urgency": "medium",
                "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 143.98 KB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/developers/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 80,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 33,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 654.83 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Serve images in next-gen formats",
                "urgency": "high",
                "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 654.83 KB."
              },
              {
                "title": "Right-size images for viewport",
                "urgency": "high",
                "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 393.77 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/developers/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 78,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 33,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 654.83 KB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Serve images in next-gen formats",
                "urgency": "high",
                "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 654.83 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/about/leadership/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 78,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 33,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 253.85 KB."
              },
              {
                "title": "Improve image encoding quality/size",
                "urgency": "medium",
                "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 143.98 KB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ecosystems/e-commerce/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 78,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 23,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 524.83 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Serve images in next-gen formats",
                "urgency": "high",
                "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 524.83 KB."
              },
              {
                "title": "Right-size images for viewport",
                "urgency": "high",
                "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 282.05 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ecosystems/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 66,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 20,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 675.24 KB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Serve images in next-gen formats",
                "urgency": "high",
                "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 675.24 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/ecosystems/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 63,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 20,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 730.00 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Serve images in next-gen formats",
                "urgency": "high",
                "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 730.00 KB."
              },
              {
                "title": "Right-size images for viewport",
                "urgency": "high",
                "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 541.46 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/2024/09/TPAC/w3c-30.html",
            "securityScore": 29,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 15,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 50,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 359.38 KB."
              },
              {
                "title": "Improve image encoding quality/size",
                "urgency": "medium",
                "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 60.78 KB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 7.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 2.09 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/about/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 45,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 24,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 144.37 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Serve images in next-gen formats",
                "urgency": "medium",
                "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 144.37 KB."
              },
              {
                "title": "Right-size images for viewport",
                "urgency": "medium",
                "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 91.24 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/about/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 44,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 24,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 144.37 KB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Serve images in next-gen formats",
                "urgency": "medium",
                "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 144.37 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 47,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 20,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 272.28 KB."
              },
              {
                "title": "Improve image encoding quality/size",
                "urgency": "low",
                "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 38.33 KB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 46,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 20,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 259.15 KB."
              },
              {
                "title": "Improve image encoding quality/size",
                "urgency": "low",
                "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 38.33 KB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/events/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 16,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 41,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1193 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 33.83 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/guide/",
            "securityScore": 29,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 14,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1185 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.35 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/help/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 25,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "low",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 38.56 KB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1214 ms."
              }
            ]
          },
          {
            "url": "https://www.w3.org/policies/code-of-conduct/",
            "securityScore": 29,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 8,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 5.15 KB."
              },
              {
                "title": "Minify CSS",
                "urgency": "low",
                "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 5.15 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "low",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 101 ms."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ja/help/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 23,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "low",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 38.56 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Serve images in next-gen formats",
                "urgency": "low",
                "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 38.56 KB."
              },
              {
                "title": "Right-size images for viewport",
                "urgency": "low",
                "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 29.96 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/news-events/w3c-tpac/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 20,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "low",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 21.46 KB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1212 ms."
              }
            ]
          },
          {
            "url": "https://www.w3.org/support-us/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 14,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 33,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1043 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.58 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/news/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 16,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1191 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 33.81 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/blog/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 16,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1042 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 33.67 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/press-releases/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 16,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1206 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.56 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/policies/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 16,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1189 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.76 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/news/2026/first-public-working-drafts-for-the-linked-web-storage-lws-1-0-authentication-suite/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 16,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1202 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.05 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/news/2026/five-first-public-working-drafts-published-by-the-verifiable-credentials-working-group/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 16,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1198 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.18 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/news/2026/first-public-working-draft-css-image-animation-module-level-1/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 16,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1186 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.75 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/news-events/w3c-tpac/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 16,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "low",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 21.46 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Serve images in next-gen formats",
                "urgency": "low",
                "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 21.46 KB."
              },
              {
                "title": "Right-size images for viewport",
                "urgency": "low",
                "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 10.59 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/news-events/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 15,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1215 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.85 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/about/corporation/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 15,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1215 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.59 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/contact/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 14,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1182 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.63 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/get-involved/promote/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 13,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1189 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.98 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/groups/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 16,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1202 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.79 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/resources/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 12,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1207 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.82 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/reports/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 16,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1208 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.20 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/evangelists/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 16,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1216 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.78 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/help/search/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 16,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1201 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.22 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ja/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 15,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "low",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 15.29 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1152 ms."
              }
            ]
          },
          {
            "url": "https://www.w3.org/staff/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 11,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1112 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 68.65 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/events/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 35,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/email/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 14,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1177 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.90 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/about/positive-work-environment/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 14,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1157 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.92 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/copyright/document-license/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 14,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1217 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.00 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/standards/review/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 33,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "medium",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 409 ms."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              }
            ]
          },
          {
            "url": "https://www.w3.org/liaisons/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 13,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1153 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.92 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/standards/review/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 33,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ja/support-us/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 33,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/support-us/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 33,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ecosystems/media/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 17,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 20,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "low",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 22.38 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Serve images in next-gen formats",
                "urgency": "low",
                "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 22.38 KB."
              },
              {
                "title": "Right-size images for viewport",
                "urgency": "low",
                "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 22.26 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/membership/list/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 17,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 20,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 40.94 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "low",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 8.74 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1309 ms."
              },
              {
                "title": "Remove unused JavaScript",
                "urgency": "medium",
                "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 50.09 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/TR/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 10,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 68.46 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "medium",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 756 ms."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ja/news/2026/w3c-invites-implementations-of-geolocation/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ja/news/2026/group-note-use-of-large-language-models-in-standards-work/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ja/news/2026/updated-w3c-recommendation-geolocation/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ja/policies/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ja/about/corporation/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/news/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/blog/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/press-releases/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/get-involved/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/International/i18n-drafts/nav/about",
            "securityScore": 29,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 0,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 20,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 2.27 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "medium",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 564 ms."
              },
              {
                "title": "Right-size images for viewport",
                "urgency": "low",
                "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 15.56 KB."
              },
              {
                "title": "Minify CSS",
                "urgency": "low",
                "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 2.27 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/blog/2026/2026-breakouts-day-recap/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 15,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 20,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1224 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.50 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ja/contact/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/get-involved/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/news-events/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/standards/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 4,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.31 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "medium",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 321 ms."
              }
            ]
          },
          {
            "url": "https://www.w3.org/developers/tools/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 14,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 20,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1201 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.87 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/get-involved/promote/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 4,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/resources/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 4,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/standards/about/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "medium",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 589 ms."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              }
            ]
          },
          {
            "url": "https://www.w3.org/groups/other/tag/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 2,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 2067 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.38 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/about/press-media/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 2,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.22 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "medium",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 304 ms."
              }
            ]
          },
          {
            "url": "https://www.w3.org/mission/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 2,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.21 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "medium",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 463 ms."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ja/help/search/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/standards/about/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/groups/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/reports/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 6,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/standards/types/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "medium",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 558 ms."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              }
            ]
          },
          {
            "url": "https://www.w3.org/invited-experts/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/standards/types/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/liaisons/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/email/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/about/positive-work-environment/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/invited-experts/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/membership/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 24,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "low",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 38.99 KB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Right-size images for viewport",
                "urgency": "medium",
                "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 49.11 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/about/diversity/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 2,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.34 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "medium",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 300 ms."
              }
            ]
          },
          {
            "url": "https://www.w3.org/mission/accessibility/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 2,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.17 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "medium",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 300 ms."
              }
            ]
          },
          {
            "url": "https://www.w3.org/mission/internationalization/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 2,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.75 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "medium",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 463 ms."
              }
            ]
          },
          {
            "url": "https://www.w3.org/mission/privacy/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 2,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.46 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "medium",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 306 ms."
              }
            ]
          },
          {
            "url": "https://www.w3.org/mission/security/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 2,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.76 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "medium",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 300 ms."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/membership/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 4,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 24,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "low",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 38.99 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Right-size images for viewport",
                "urgency": "medium",
                "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 49.11 KB."
              },
              {
                "title": "Serve images in next-gen formats",
                "urgency": "low",
                "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 38.99 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/developers/tools/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 5,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 20,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ecosystems/publishing/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 3,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 20,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Use modern image compression formats",
                "urgency": "low",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 31.11 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 8.15 KB."
              },
              {
                "title": "Right-size images for viewport",
                "urgency": "low",
                "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 38.18 KB."
              },
              {
                "title": "Serve images in next-gen formats",
                "urgency": "low",
                "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 31.11 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/ja/blog/2026/past-present-and-future-an-update-on-w3cs-strategic-objectives-on-the-37th-anniversary-of-the-web-proposal/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 3,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 20,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Right-size images for viewport",
                "urgency": "medium",
                "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 45.75 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/standards/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 1,
            "optimizationScore": 84,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/about/press-media/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 1,
            "optimizationScore": 44,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/zh-hans/mission/",
            "securityScore": 14,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 1,
            "optimizationScore": 42,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 30,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Minify JavaScript",
                "urgency": "low",
                "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://www.w3.org/translations/",
            "securityScore": 29,
            "dependencyScore": 0,
            "expectedFilesScore": 45,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 50,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          }
        ]
      },
      {
        "origin": "https://auth.w3.org",
        "pageCount": 2,
        "sharedRecommendations": [
          {
            "area": "expected-files",
            "urgency": "medium",
            "title": "Add sitemap.xml at site origin",
            "detail": "sitemap.xml is missing for all sampled pages on https://auth.w3.org."
          },
          {
            "area": "expected-files",
            "urgency": "low",
            "title": "Publish .well-known/security.txt",
            "detail": ".well-known/security.txt is missing for all sampled pages on https://auth.w3.org."
          },
          {
            "area": "security-headers",
            "urgency": "medium",
            "title": "Enable Strict-Transport-Security site-wide",
            "detail": "HSTS is missing across all sampled HTTPS pages on https://auth.w3.org."
          },
          {
            "area": "offline-support",
            "urgency": "high",
            "title": "Introduce service worker support",
            "detail": "No sampled pages on https://auth.w3.org indicate service worker support for offline resilience."
          },
          {
            "area": "offline-support",
            "urgency": "high",
            "title": "Support offline fallback behavior",
            "detail": "Offline page behavior was not detected across sampled pages on https://auth.w3.org."
          },
          {
            "area": "optimization",
            "urgency": "medium",
            "title": "Fix recurring optimization bloat at shared layer",
            "detail": "Remove unused CSS recurs across 2 pages on https://auth.w3.org (est. 70.58 KB aggregate savings)."
          },
          {
            "area": "compression",
            "urgency": "low",
            "title": "Prioritize recurring compression fixes",
            "detail": "Minify CSS before transfer recurs across 2 pages on https://auth.w3.org (est. 37.02 KB aggregate savings)."
          },
          {
            "area": "offline-support",
            "urgency": "high",
            "title": "Prioritize recurring offline/caching improvements",
            "detail": "Add service worker support is needed across 2 pages on https://auth.w3.org."
          }
        ],
        "recurringCompression": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "pageCount": 2,
            "totalEstimatedSavingsBytes": 37907
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "pageCount": 2,
            "totalEstimatedSavingsBytes": 12259
          }
        ],
        "recurringOptimization": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "pageCount": 2,
            "totalEstimatedSavingsBytes": 72273,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "pageCount": 2,
            "totalEstimatedSavingsBytes": 48478,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "pageCount": 2,
            "totalEstimatedSavingsBytes": 37907,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "pageCount": 2,
            "totalEstimatedSavingsBytes": 12259,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "pageCount": 2,
            "totalEstimatedSavingsBytes": 0,
            "totalEstimatedBlockingMs": 2133
          }
        ],
        "recurringOfflineOpportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "pageCount": 2
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "pageCount": 2
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "pageCount": 2
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "pageCount": 2
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "pageCount": 2
          }
        ],
        "recurringDependencies": [],
        "recurringRuntimeSignals": [],
        "pageSpecific": [
          {
            "url": "https://www.w3.org/Member/",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 50,
            "compressionScore": 13,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1075 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.29 KB."
              }
            ]
          },
          {
            "url": "https://www.w3.org/users/myprofile/",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 50,
            "compressionScore": 13,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Minify CSS before transfer",
                "urgency": "low",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "low",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
              },
              {
                "title": "Eliminate render-blocking resources",
                "urgency": "high",
                "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1058 ms."
              },
              {
                "title": "Remove unused CSS",
                "urgency": "medium",
                "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.29 KB."
              }
            ]
          }
        ]
      }
    ]
  },
  "crossPagePatterns": {
    "heavyAssetPatterns": [
      {
        "key": "script|www.youtube.com|/s",
        "label": "script assets from www.youtube.com/s",
        "resourceType": "script",
        "domain": "www.youtube.com",
        "pageCount": 14,
        "totalTransferBytes": 5546403,
        "exampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb"
      },
      {
        "key": "stylesheet|www.youtube.com|/s",
        "label": "stylesheet assets from www.youtube.com/s",
        "resourceType": "stylesheet",
        "domain": "www.youtube.com",
        "pageCount": 14,
        "totalTransferBytes": 774736,
        "exampleUrl": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw"
      },
      {
        "key": "script|www.youtube-nocookie.com|/s",
        "label": "script assets from www.youtube-nocookie.com/s",
        "resourceType": "script",
        "domain": "www.youtube-nocookie.com",
        "pageCount": 12,
        "totalTransferBytes": 5360432,
        "exampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js"
      },
      {
        "key": "stylesheet|www.youtube-nocookie.com|/s",
        "label": "stylesheet assets from www.youtube-nocookie.com/s",
        "resourceType": "stylesheet",
        "domain": "www.youtube-nocookie.com",
        "pageCount": 12,
        "totalTransferBytes": 710260,
        "exampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css"
      },
      {
        "key": "image|www.w3.org|/cms-uploads",
        "label": "image assets from www.w3.org/cms-uploads",
        "resourceType": "image",
        "domain": "www.w3.org",
        "pageCount": 7,
        "totalTransferBytes": 3109038,
        "exampleUrl": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/w30c-pattern.jpeg"
      },
      {
        "key": "image|www.w3.org|/comm",
        "label": "image assets from www.w3.org/comm",
        "resourceType": "image",
        "domain": "www.w3.org",
        "pageCount": 4,
        "totalTransferBytes": 1977852,
        "exampleUrl": "https://www.w3.org/comm/assets/graphics/w3cx-accessibility-intro-twitter-only.png"
      },
      {
        "key": "script|f.vimeocdn.com|/p",
        "label": "script assets from f.vimeocdn.com/p",
        "resourceType": "script",
        "domain": "f.vimeocdn.com",
        "pageCount": 2,
        "totalTransferBytes": 624085,
        "exampleUrl": "https://f.vimeocdn.com/p/4.46.43/js/player.module.js"
      }
    ],
    "recurringTargets": [
      {
        "title": "Defer non-critical UI modules until after first render",
        "urgency": "high",
        "pageCount": 57,
        "totalEstimatedSavingsBytes": 0,
        "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later."
      },
      {
        "title": "Modularize heavy script asset from www.youtube.com",
        "urgency": "high",
        "pageCount": 14,
        "totalEstimatedSavingsBytes": 3159233,
        "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles."
      },
      {
        "title": "Modularize heavy image asset from www.w3.org",
        "urgency": "high",
        "pageCount": 13,
        "totalEstimatedSavingsBytes": 5027206,
        "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component."
      },
      {
        "title": "Modularize heavy script asset from www.youtube-nocookie.com",
        "urgency": "high",
        "pageCount": 12,
        "totalEstimatedSavingsBytes": 5360432,
        "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles."
      },
      {
        "title": "Modularize heavy script asset from f.vimeocdn.com",
        "urgency": "medium",
        "pageCount": 2,
        "totalEstimatedSavingsBytes": 432933,
        "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles."
      },
      {
        "title": "Modularize heavy font asset from www.w3.org",
        "urgency": "medium",
        "pageCount": 2,
        "totalEstimatedSavingsBytes": 376361,
        "strategy": "Subset or defer this font so full font payloads are only fetched when needed."
      }
    ],
    "recurringOrigins": [
      {
        "domain": "www.w3.org",
        "pageCount": 16,
        "totalTransferBytes": 7148939
      },
      {
        "domain": "www.youtube.com",
        "pageCount": 14,
        "totalTransferBytes": 6321139
      },
      {
        "domain": "www.youtube-nocookie.com",
        "pageCount": 12,
        "totalTransferBytes": 6070692
      },
      {
        "domain": "f.vimeocdn.com",
        "pageCount": 2,
        "totalTransferBytes": 624085
      }
    ],
    "designSystemGuidance": [
      "This same heavy image pattern appears on 13 pages. Fix it once in the shared template, CMS block, or design system component to reduce load across the whole site.",
      "These 3 script bundles are recurring modularization targets. Move the fix to the shared bundle or component boundary so every affected page gets lighter at once.",
      "These 3 modularization targets recur across multiple pages. Centralize the fix at the component or bundle level instead of treating each page separately.",
      "Heavy assets from www.w3.org recur across 16 pages. Review whether that dependency should be deferred, optimized, or loaded conditionally."
    ]
  },
  "results": [
    {
      "url": "https://www.w3.org/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/",
      "performanceScore": 0.97,
      "bestPracticesScore": 1,
      "transferBytes": 719585,
      "co2Grams": 0.275659629219,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The World Wide Web Consortium (W3C) develops standards and guidelines to help everyone build a web based on the principles of accessibility, internationalization, privacy and security.",
          "robots": "",
          "canonical": "",
          "ogTitle": "W3C",
          "ogDescription": "The World Wide Web Consortium (W3C) develops standards and guidelines to help everyone build a web based on the principles of accessibility, internationalization, privacy and security.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 20,
          "tabletSmallTapTargets": 21,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 4,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 20,
            "oversizedMedia": 0,
            "gridContainersDetected": 2,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 21,
            "oversizedMedia": 0,
            "gridContainersDetected": 2,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 20 small targets on mobile and 21 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58440",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed4058d06c956-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:11:00 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f09413d5edb46c7",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,newsArticles,pressReleases,members"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 20,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 8,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 14,
            "lazyImages": 11,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 11/14 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 46,
        "urgency": "medium",
        "totalEstimatedSavingsBytes": 329707.75,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 265366.75,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 39254,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18958,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 259.15 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 38.33 KB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 570193.75,
        "totalEstimatedBlockingMs": 998,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 265366.75,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 259 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 205146,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 200 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35340,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 998,
            "displayValue": "Est savings of 1,000 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 39254,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 38 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18958,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 259.15 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 200.34 KB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.51 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 998 ms."
          },
          {
            "title": "Compress oversized image assets",
            "urgency": "low",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss. Estimated byte savings: 38.33 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 699617.75
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 683.22 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 683.22 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 2,
        "urgency": "low",
        "transferBytes": 719585,
        "css": {
          "unusedBytes": 35340,
          "ratio": 0.049111640737369455,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35340,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 11,
        "urgency": "medium",
        "transferBytes": 719585,
        "estimatedDeferrableBytes": 35340,
        "renderBlockingMs": 998,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35340
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35340,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 998,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 174707,
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/w30c-pattern.jpeg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 10,
        "urgency": "low",
        "transferBytes": 719585,
        "estimatedRedundantBytes": 35340,
        "redundancyRatio": 0.049111640737369455,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35340,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35340,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 18,
        "urgency": "medium",
        "totalTransferBytes": 719585,
        "heavyRequestCount": 2,
        "heavyBytes": 285415,
        "heavyRatio": 0.39663834015439453,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/w30c-pattern.jpeg",
            "transferSize": 174707,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/ryan-quintal-US9Tc9pKNBU-unsplash.jpg",
            "transferSize": 110708,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "image",
            "count": 2,
            "transferBytes": 285415
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 2,
            "transferBytes": 285415
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from www.w3.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 174707,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/w30c-pattern.jpeg",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,000 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,000 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 259 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 259 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 38 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 38 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/ja/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ja/",
      "performanceScore": 0.97,
      "bestPracticesScore": 1,
      "transferBytes": 268057,
      "co2Grams": 0.10268765083980001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "W3C",
          "lang": "ja",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Homepage",
          "robots": "",
          "canonical": "",
          "ogTitle": "W3C",
          "ogDescription": "Homepage",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ja/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 14,
          "tabletSmallTapTargets": 14,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 4,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 14,
            "oversizedMedia": 0,
            "gridContainersDetected": 2,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 14,
            "oversizedMedia": 0,
            "gridContainersDetected": 2,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 14 small targets on mobile and 14 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58345",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed43b9950c956-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:11:08 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0943c62f46835d",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,newsArticles,pressReleases,members"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 11,
            "lazyImages": 8,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 8/11 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 15,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 40739.55,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "low",
            "estimatedSavingsBytes": 15657.55,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "low",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 15.29 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 81257.55,
        "totalEstimatedBlockingMs": 1152,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1152,
            "displayValue": "Est savings of 1,150 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35692,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 15657.55,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 15 KiB",
            "urgency": "low",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 4826,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 5 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1152 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.86 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "low",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 15.29 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "low",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 4.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 257267.91666666666
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 251.24 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 251.24 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 268057,
        "css": {
          "unusedBytes": 35692,
          "ratio": 0.13315078509421505,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35692,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 14,
        "urgency": "high",
        "transferBytes": 268057,
        "estimatedDeferrableBytes": 35692,
        "renderBlockingMs": 1152,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35692
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35692,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1152,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 15,
        "urgency": "low",
        "transferBytes": 268057,
        "estimatedRedundantBytes": 35692,
        "redundancyRatio": 0.13315078509421505,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35692,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35692,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 268057,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,150 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,150 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 15 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 15 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/zh-hans/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/",
      "performanceScore": 0.93,
      "bestPracticesScore": 1,
      "transferBytes": 735404,
      "co2Grams": 0.28171959388560003,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "万维网联盟（World Wide Web Consortium简称W3C）制定标准和指南，基于无障碍、国际化、隐私及安全的原则构建一个服务于所有人的web。",
          "robots": "",
          "canonical": "",
          "ogTitle": "W3C",
          "ogDescription": "万维网联盟（World Wide Web Consortium简称W3C）制定标准和指南，基于无障碍、国际化、隐私及安全的原则构建一个服务于所有人的web。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 27,
          "tabletSmallTapTargets": 29,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 4,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 27,
            "oversizedMedia": 0,
            "gridContainersDetected": 2,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 29,
            "oversizedMedia": 0,
            "gridContainersDetected": 2,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 27 small targets on mobile and 29 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58396",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed475bdf2c956-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:11:18 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0942bdca41835d",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,newsArticles,pressReleases,members"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 20,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 8,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 14,
            "lazyImages": 11,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 11/14 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 47,
        "urgency": "medium",
        "totalEstimatedSavingsBytes": 343152.9,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 278815.9,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 39254,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 272.28 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 38.33 KB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 583752.9,
        "totalEstimatedBlockingMs": 1014,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 278815.9,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 272 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 205267,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 200 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1014,
            "displayValue": "Est savings of 1,010 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35333,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 39254,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 38 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 272.28 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 200.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1014 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.50 KB."
          },
          {
            "title": "Compress oversized image assets",
            "urgency": "low",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss. Estimated byte savings: 38.33 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 714597.9333333332
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 697.85 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 697.85 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 2,
        "urgency": "low",
        "transferBytes": 735404,
        "css": {
          "unusedBytes": 35333,
          "ratio": 0.04804570005058444,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35333,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 11,
        "urgency": "high",
        "transferBytes": 735404,
        "estimatedDeferrableBytes": 35333,
        "renderBlockingMs": 1014,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35333
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35333,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1014,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 174678,
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/w30c-pattern.jpeg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 13,
        "urgency": "low",
        "transferBytes": 735404,
        "estimatedRedundantBytes": 35333,
        "redundancyRatio": 0.04804570005058444,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35333,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35333,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 18,
        "urgency": "medium",
        "totalTransferBytes": 735404,
        "heavyRequestCount": 2,
        "heavyBytes": 285366,
        "heavyRatio": 0.38803977133657147,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/w30c-pattern.jpeg",
            "transferSize": 174678,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/ryan-quintal-US9Tc9pKNBU-unsplash.jpg",
            "transferSize": 110688,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "image",
            "count": 2,
            "transferBytes": 285366
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 2,
            "transferBytes": 285366
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from www.w3.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 174678,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/w30c-pattern.jpeg",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,010 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,010 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.79,
          "displayValue": "3.0 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 3.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 272 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 272 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 38 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 38 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/standards/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/standards/",
      "performanceScore": 0.95,
      "bestPracticesScore": 0.79,
      "transferBytes": 637646,
      "co2Grams": 0.2442703223844,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "f.vimeocdn.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 312038,
            "sampleUrl": "https://f.vimeocdn.com/p/4.46.43/js/player.module.js",
            "greenCheck": {
              "hostname": "f.vimeocdn.com",
              "checked": true,
              "status": "not-green",
              "green": false,
              "hostedBy": null,
              "hostedByWebsite": null,
              "listedProvider": null,
              "partner": null,
              "modified": "2026-04-23T12:14:55.122102",
              "supportingDocuments": [],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/f.vimeocdn.com",
              "error": null
            }
          },
          {
            "hostname": "www.gstatic.com",
            "resourceType": "script",
            "requestCount": 3,
            "transferBytes": 27670,
            "sampleUrl": "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1",
            "greenCheck": {
              "hostname": "www.gstatic.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:50",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.gstatic.com",
              "error": null
            }
          },
          {
            "hostname": "f.vimeocdn.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 24363,
            "sampleUrl": "https://f.vimeocdn.com/p/4.46.43/css/player.css",
            "greenCheck": {
              "hostname": "f.vimeocdn.com",
              "checked": true,
              "status": "not-green",
              "green": false,
              "hostedBy": null,
              "hostedByWebsite": null,
              "listedProvider": null,
              "partner": null,
              "modified": "2026-04-23T12:14:55.122102",
              "supportingDocuments": [],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/f.vimeocdn.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 3,
          "greenCount": 2,
          "notGreenCount": 2,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Web Standards | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page introduces web standards at a high-level.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Web Standards",
          "ogDescription": "This page introduces web standards at a high-level.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/standards/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 16,
          "tabletSmallTapTargets": 15,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 16,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 15,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 16 small targets on mobile and 15 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142522",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed4b02a27c956-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:11:27 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013d1f1f62f0e7",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 4,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25082,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60216,
        "totalEstimatedBlockingMs": 321,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35134,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 321,
            "displayValue": "Est savings of 320 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.31 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 321 ms."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 278551.4593109869
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 272.02 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 272.02 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 2,
        "urgency": "low",
        "transferBytes": 637646,
        "css": {
          "unusedBytes": 35134,
          "ratio": 0.05509953798816271,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35134,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 4,
        "urgency": "medium",
        "transferBytes": 637646,
        "estimatedDeferrableBytes": 35134,
        "renderBlockingMs": 321,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35134
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35134,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 321,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from f.vimeocdn.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 216352,
            "url": "https://f.vimeocdn.com/p/4.46.43/js/player.module.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91573,
            "url": "https://www.w3.org/cms-uploads/globe.svg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 59,
        "urgency": "medium",
        "providerCount": 2,
        "requestCount": 5,
        "transferBytes": 339708,
        "notGreenCount": 1,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "f.vimeocdn.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 312038,
            "sampleUrl": "https://f.vimeocdn.com/p/4.46.43/js/player.module.js",
            "greenCheck": {
              "hostname": "f.vimeocdn.com",
              "checked": true,
              "status": "not-green",
              "green": false,
              "hostedBy": null,
              "hostedByWebsite": null,
              "listedProvider": null,
              "partner": null,
              "modified": "2026-04-23T12:14:55.122102",
              "supportingDocuments": [],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/f.vimeocdn.com",
              "error": null
            }
          },
          {
            "hostname": "www.gstatic.com",
            "resourceType": "script",
            "requestCount": 3,
            "transferBytes": 27670,
            "sampleUrl": "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1",
            "greenCheck": {
              "hostname": "www.gstatic.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:50",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.gstatic.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 2 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          },
          {
            "title": "Prioritize greener alternatives for third-party providers",
            "urgency": "high",
            "detail": "1 third-party script origin(s) are not confirmed green in the Green Web Foundation dataset."
          }
        ]
      },
      "redundancy": {
        "score": 11,
        "urgency": "low",
        "transferBytes": 637646,
        "estimatedRedundantBytes": 35134,
        "redundancyRatio": 0.05509953798816271,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35134,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35134,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 22,
        "urgency": "medium",
        "totalTransferBytes": 637646,
        "heavyRequestCount": 2,
        "heavyBytes": 312038,
        "heavyRatio": 0.48935929967411385,
        "heavyRequests": [
          {
            "url": "https://f.vimeocdn.com/p/4.46.43/js/player.module.js",
            "transferSize": 216352,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "f.vimeocdn.com"
          },
          {
            "url": "https://f.vimeocdn.com/p/4.46.43/js/vendor.module.js",
            "transferSize": 95686,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "f.vimeocdn.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 312038
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "f.vimeocdn.com",
            "count": 2,
            "transferBytes": 312038
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from f.vimeocdn.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 216352,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://f.vimeocdn.com/p/4.46.43/js/player.module.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 320 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 320 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.85,
          "displayValue": "2.7 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/standards/about/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/standards/about/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 101870,
      "co2Grams": 0.039024502218,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "About W3C web standards | Web Standards | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page explains more about W3C web standards, including the value of creating open web standards at the World Wide Web Consortium.",
          "robots": "",
          "canonical": "",
          "ogTitle": "About W3C web standards",
          "ogDescription": "This page explains more about W3C web standards, including the value of creating open web standards at the World Wide Web Consortium.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/standards/about/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 29,
          "tabletSmallTapTargets": 30,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 29,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 30,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 29 small targets on mobile and 30 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142481",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed5072ce1c956-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:11:41 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013e76eb25ae6d",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 589,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 589,
            "displayValue": "Est savings of 590 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 589 ms."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 93026
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 90.85 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 90.85 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 101870,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 6,
        "urgency": "medium",
        "transferBytes": 101870,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 589,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 589,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 101870,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 101870,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 590 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 590 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/TR/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/TR/",
      "performanceScore": 0.94,
      "bestPracticesScore": 1,
      "transferBytes": 251481,
      "co2Grams": 0.09633769355340002,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 46.666666666666664,
        "urgency": "medium",
        "pageElementOccurrences": 29,
        "uniqueElementsAssessed": 3,
        "reusedFromCacheCount": 0,
        "components": [
          {
            "signature": "search|get|self|input|search|filter-tr-name|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "search",
            "controlType": "search",
            "fieldName": "filter-tr-name",
            "formContext": "search|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": true,
            "toolingFriendly": false,
            "assessment": {
              "score": 40,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "search|get|self|input|checkbox|status[]|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "search",
            "controlType": "checkbox",
            "fieldName": "status[]",
            "formContext": "search|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "search|get|self|input|checkbox|tags[]|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "search",
            "controlType": "checkbox",
            "fieldName": "tags[]",
            "formContext": "search|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "3 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "W3C standards and drafts | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The World Wide Web Consortium (W3C) is an international community where Member organizations, a full-time staff, and the public work together to develop Web standards.",
          "robots": "",
          "canonical": "",
          "ogTitle": "W3C standards and drafts",
          "ogDescription": "The World Wide Web Consortium (W3C) is an international community where Member organizations, a full-time staff, and the public work together to develop Web standards.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/TR/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 3236,
          "tabletSmallTapTargets": 3963,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 3236,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 3963,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 3236 small targets on mobile and 3963 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "access-control-allow-origin": "*",
            "age": "3156",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "max-age=0, public, s-maxage=3600",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed5597ea3e5eb-IAD",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "date": "Thu, 23 Apr 2026 18:11:54 GMT",
            "etag": "W/\"e65e57e8ac317bb34d85538a28ed0a08\"",
            "last-modified": "Thu, 23 Apr 2026 16:53:26 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Accept-Encoding",
            "x-backend": "sf-main",
            "x-content-type-options": "nosniff",
            "x-request-id": "9f0e8846ed2275e5"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 10,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 95185,
        "totalEstimatedBlockingMs": 756,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 70102,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 68 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 756,
            "displayValue": "Est savings of 760 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 68.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 756 ms."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 149094
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 145.60 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 145.60 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 12,
        "urgency": "medium",
        "transferBytes": 251481,
        "css": {
          "unusedBytes": 70102,
          "ratio": 0.2787566456312803,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 70102,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 13,
        "urgency": "medium",
        "transferBytes": 251481,
        "estimatedDeferrableBytes": 70102,
        "renderBlockingMs": 756,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 70102
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 70102,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 756,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 33,
        "urgency": "medium",
        "transferBytes": 251481,
        "estimatedRedundantBytes": 70102,
        "redundancyRatio": 0.2787566456312803,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 70102,
            "displayValue": "Est savings of 68 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 70102,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 251481,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 68 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 68 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 760 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 760 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.85,
          "displayValue": "2.7 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "21,927 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 21,927 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/standards/types/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/standards/types/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 123227,
      "co2Grams": 0.0472059716778,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Types of documents W3C publishes | Web Standards | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Understand the differences between the various types of documents published at W3C and what each stage of maturity implies.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Types of documents W3C publishes",
          "ogDescription": "Understand the differences between the various types of documents published at W3C and what each stage of maturity implies.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/standards/types/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 43,
          "tabletSmallTapTargets": 43,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 1,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 1,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 625,
            "viewportHeight": 1353,
            "contentWidth": 625,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 43,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 1
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 43,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 43 small targets on mobile and 43 on tablet."
          },
          {
            "title": "Make grid layouts breakpoint-aware",
            "urgency": "medium",
            "detail": "1 grid container(s) overflowed across tested viewports (1 on mobile, 0 on tablet). Use intrinsic tracks (minmax(), fr), wrapping, and breakpoint-aware grid templates."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142424",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed59b8a08e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:12:05 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f01406949e5a29d",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 558,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 558,
            "displayValue": "Est savings of 560 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 558 ms."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 111775
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 109.16 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 109.16 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 123227,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 6,
        "urgency": "medium",
        "transferBytes": 123227,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 558,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 558,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 13,
        "urgency": "low",
        "transferBytes": 123227,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 123227,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 560 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 560 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "823 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 823 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/groups/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/groups/",
      "performanceScore": 0.97,
      "bestPracticesScore": 1,
      "transferBytes": 157451,
      "co2Grams": 0.0603165495114,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Discover W3C groups | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "A variety of W3C groups enable W3C to pursue its mission through the creation of Web standards, guidelines, and supporting materials. Community and Business Groups offer more ways for innovators to bring work to W3C.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Discover W3C groups",
          "ogDescription": "A variety of W3C groups enable W3C to pursue its mission through the creation of Web standards, guidelines, and supporting materials. Community and Business Groups offer more ways for innovators to bring work to W3C.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/groups/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 12,
          "tabletSmallTapTargets": 12,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 12,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 12,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 12 small targets on mobile and 12 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "51294",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed5cecc4ce5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:12:13 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f09f1801bfbe5ff",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 16,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60704,
        "totalEstimatedBlockingMs": 1202,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1202,
            "displayValue": "Est savings of 1,200 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35621,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1202 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.79 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 149095
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 145.60 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 145.60 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 157451,
        "css": {
          "unusedBytes": 35621,
          "ratio": 0.22623546373157363,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35621,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 17,
        "urgency": "high",
        "transferBytes": 157451,
        "estimatedDeferrableBytes": 35621,
        "renderBlockingMs": 1202,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35621
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35621,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1202,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 20,
        "urgency": "low",
        "transferBytes": 157451,
        "estimatedRedundantBytes": 35621,
        "redundancyRatio": 0.22623546373157363,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35621,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35621,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 157451,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,200 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,200 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/translations/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/Translations/",
      "performanceScore": 0.98,
      "bestPracticesScore": 0.96,
      "transferBytes": 78174,
      "co2Grams": 0.029947005363600003,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Translations of W3C standards and drafts",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1, initial-scale = 1.0, shrink-to-fit=no",
          "description": "",
          "robots": "",
          "canonical": "",
          "ogTitle": "Translations of W3C standards and drafts",
          "ogDescription": "List of translated W3C Recommendations (authorized and volunteer translations)",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "summary",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 930,
          "tabletSmallTapTargets": 1132,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 930,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 1132,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 930 small targets on mobile and 1132 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 29,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": false,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "access-control-allow-origin": "*",
            "age": "55",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "max-age=600, s-maxage=2592001",
            "cf-cache-status": "BYPASS",
            "cf-ray": "9f0ed5e06e08e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=utf-8",
            "date": "Thu, 23 Apr 2026 18:12:16 GMT",
            "expires": "Thu, 23 Apr 2026 17:48:16 GMT",
            "last-modified": "Mon, 20 Apr 2026 06:12:21 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "vary": "Accept-Encoding",
            "via": "1.1 varnish",
            "x-backend": "www-mirrors",
            "x-cache": "HIT",
            "x-cache-hits": "1",
            "x-content-type-options": "nosniff",
            "x-fastly-request-id": "7b6a5cf7c40f7c8568ce1e91778bd454a84c1672",
            "x-github-request-id": "72D8:1BD9:27B0182:2ACE09C:69EA5908",
            "x-proxy-cache": "MISS",
            "x-request-id": "9f0ed5e06e08e5eb",
            "x-served-by": "cache-iad-kcgs7200036-IAD",
            "x-timer": "S1776967936.119838,VS0,VE2"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Enable Strict-Transport-Security",
            "urgency": "medium",
            "detail": "Set a Strict-Transport-Security header to enforce HTTPS on repeat visits."
          },
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 50,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 2,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 2
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "2 of 2 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 70,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": false,
          "hasReducedMotion": false,
          "media": {
            "totalImages": 2,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Helvetica, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "17.1",
            "title": "Missing print style sheet",
            "urgency": "low",
            "detail": "Add a @media print stylesheet to ensure the page is optimized for paper-saving printing.",
            "wsid": "17.printed documents",
            "assessor": "script",
            "example": "@media print {\n  /* Hide non-critical navigation and backgrounds */\n  nav, .ads, header, footer { display: none; }\n  body { font-size: 12pt; color: #000; background: #fff; }\n  a::after { content: \" (\" attr(href) \") \"; } /* Show URLs */\n}"
          },
          {
            "guideline": "12.3",
            "title": "No reduced motion support",
            "urgency": "low",
            "detail": "Implement prefers-reduced-motion to allow users to disable animations, reducing compute and improving accessibility.",
            "wsid": "12.control animation",
            "assessor": "script",
            "example": "@media (prefers-reduced-motion: reduce) {\n  *, ::before, ::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n}"
          },
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 0/2 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 35172.119646182495
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 34.35 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 34.35 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 78174,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.25,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 78174,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 20,
        "urgency": "low",
        "transferBytes": 78174,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 78174,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0,
          "displayValue": "3,708 elements",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 3,708 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0.5,
          "displayValue": "Est savings of 0 ms",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 0 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/standards/review/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/standards/review/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 105774,
      "co2Grams": 0.040520052003599996,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Reviews and public feedback | Web Standards | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Public review and feedback on specifications, implementations, test suites, code.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Reviews and public feedback",
          "ogDescription": "Public review and feedback on specifications, implementations, test suites, code.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/standards/review/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 35,
          "tabletSmallTapTargets": 35,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 35,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 35,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 35 small targets on mobile and 35 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142268",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed63f7db5e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:12:31 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0144e52c351f27",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 7,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 5
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "5 of 7 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 7,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/7 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 409,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 409,
            "displayValue": "Est savings of 410 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 409 ms."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 93385.32402234637
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 91.20 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 91.20 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 105774,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 4,
        "urgency": "medium",
        "transferBytes": 105774,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 409,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 409,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 105774,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 105774,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 410 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 410 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/get-involved/promote/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/get-involved/promote/",
      "performanceScore": 0.96,
      "bestPracticesScore": 1,
      "transferBytes": 194794,
      "co2Grams": 0.07462195823160002,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Promote web standards | Get involved | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page describes the ways individuals and organizations can promote web standardization",
          "robots": "",
          "canonical": "",
          "ogTitle": "Promote web standards",
          "ogDescription": "This page describes the ways individuals and organizations can promote web standardization",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/get-involved/promote/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 24,
          "tabletSmallTapTargets": 25,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 24,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 25,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 24 small targets on mobile and 25 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142529",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed67399c0e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:12:39 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013eb93d62d262",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 13,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25084,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6130,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60905,
        "totalEstimatedBlockingMs": 1189,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1189,
            "displayValue": "Est savings of 1,190 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35821,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6130,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1189 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.98 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 186914
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 182.53 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 182.53 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 6,
        "urgency": "low",
        "transferBytes": 194794,
        "css": {
          "unusedBytes": 35821,
          "ratio": 0.1838917009764161,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35821,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 194794,
        "estimatedDeferrableBytes": 35821,
        "renderBlockingMs": 1189,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35821
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35821,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1189,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 18,
        "urgency": "low",
        "transferBytes": 194794,
        "estimatedRedundantBytes": 35821,
        "redundancyRatio": 0.1838917009764161,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35821,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35821,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 194794,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,190 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,190 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/liaisons/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/liaisons/",
      "performanceScore": 0.96,
      "bestPracticesScore": 1,
      "transferBytes": 186014,
      "co2Grams": 0.0712585035396,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Liaisons | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "W3C coordinates the development of standards for the Internet or the Web through liaisons with national, regional and international organizations.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Liaisons",
          "ogDescription": "W3C coordinates the development of standards for the Internet or the Web through liaisons with national, regional and international organizations.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/liaisons/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 249,
          "tabletSmallTapTargets": 259,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 1,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 1,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 708,
            "viewportHeight": 1533,
            "contentWidth": 708,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 249,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 1
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 259,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 249 small targets on mobile and 259 on tablet."
          },
          {
            "title": "Make grid layouts breakpoint-aware",
            "urgency": "medium",
            "detail": "1 grid container(s) overflowed across tested viewports (1 on mobile, 0 on tablet). Use intrinsic tracks (minmax(), fr), wrapping, and breakpoint-aware grid templates."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142284",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed6a9c8bde5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:12:48 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0144ea9f9d1f27",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 13,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25084,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6130,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60838,
        "totalEstimatedBlockingMs": 1153,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1153,
            "displayValue": "Est savings of 1,150 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35754,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6130,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1153 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.92 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 167852
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 163.92 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 163.92 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 9,
        "urgency": "low",
        "transferBytes": 186014,
        "css": {
          "unusedBytes": 35754,
          "ratio": 0.19221133893147826,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35754,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 15,
        "urgency": "high",
        "transferBytes": 186014,
        "estimatedDeferrableBytes": 35754,
        "renderBlockingMs": 1153,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35754
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35754,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1153,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 28,
        "urgency": "low",
        "transferBytes": 186014,
        "estimatedRedundantBytes": 35754,
        "redundancyRatio": 0.19221133893147826,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35754,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35754,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 186014,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,150 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,150 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "1,311 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 1,311 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/groups/other/tag/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/groups/other/tag/",
      "performanceScore": 0.86,
      "bestPracticesScore": 1,
      "transferBytes": 300777,
      "co2Grams": 0.11522207424780001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Technical Architecture Group | Discover W3C groups | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "<p>The TAG is a special working group within the W3C, chartered (under the <a href=\"https://www.w3.org/policies/process/#TAG\">W3C Process Document</a>) with stewardship of the web architecture.</p>\n\n<p>As outlined by the <a href=\"https://www.w3.org/policies/process/#tag-role\">Process Document</a>, there are three aspects to this mission:</p>\n<ul>\n<li>to document and build consensus around principles of web architecture and to interpret and clarify these principles when necessary;</li>\n<li>to resolve issues involving general web architecture brought to the TAG;</li>\n<li>to help coordinate cross-technology architecture developments inside and outside W3C.</li>\n</ul>",
          "robots": "",
          "canonical": "",
          "ogTitle": "Technical Architecture Group",
          "ogDescription": "<p>The TAG is a special working group within the W3C, chartered (under the <a href=\"https://www.w3.org/policies/process/#TAG\">W3C Process Document</a>) with stewardship of the web architecture.</p>\n\n<p>As outlined by the <a href=\"https://www.w3.org/policies/process/#tag-role\">Process Document</a>, there are three aspects to this mission:</p>\n<ul>\n<li>to document and build consensus around principles of web architecture and to interpret and clarify these principles when necessary;</li>\n<li>to resolve issues involving general web architecture brought to the TAG;</li>\n<li>to help coordinate cross-technology architecture developments inside and outside W3C.</li>\n</ul>",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/groups/other/tag/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 13,
          "tabletSmallTapTargets": 13,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 8,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 391,
            "viewportHeight": 847,
            "contentWidth": 391,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 13,
            "oversizedMedia": 0,
            "gridContainersDetected": 4,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 13,
            "oversizedMedia": 0,
            "gridContainersDetected": 4,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 13 small targets on mobile and 13 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "no-cache, private",
            "cf-cache-status": "BYPASS",
            "cf-ray": "9f0ed6e09b5ae5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:12:57 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Accept-Encoding",
            "x-backend": "sf-main",
            "x-content-type-options": "nosniff",
            "x-request-id": "9f0ed6e09b5ae5eb"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 2,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 41329,
        "totalEstimatedBlockingMs": 2067,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 2067,
            "displayValue": "Est savings of 2,070 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35200,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 2067 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.38 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 97137
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.86 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.86 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 4,
        "urgency": "low",
        "transferBytes": 300777,
        "css": {
          "unusedBytes": 35200,
          "ratio": 0.11703022505045266,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35200,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 17,
        "urgency": "high",
        "transferBytes": 300777,
        "estimatedDeferrableBytes": 35200,
        "renderBlockingMs": 2067,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35200
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35200,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 2067,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy font from www.w3.org",
            "area": "font",
            "urgency": "medium",
            "estimatedSavingsBytes": 156920,
            "url": "https://www.w3.org/_sf/build/fonts/fa-solid-900.fb8184ad.woff2",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 9,
        "urgency": "low",
        "transferBytes": 300777,
        "estimatedRedundantBytes": 35200,
        "redundancyRatio": 0.11703022505045266,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35200,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35200,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 22,
        "urgency": "low",
        "totalTransferBytes": 300777,
        "heavyRequestCount": 1,
        "heavyBytes": 156920,
        "heavyRatio": 0.5217154237192339,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/_sf/build/fonts/fa-solid-900.fb8184ad.woff2",
            "transferSize": 156920,
            "resourceType": "font",
            "mimeType": "font/woff2",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "font",
            "count": 1,
            "transferBytes": 156920
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 1,
            "transferBytes": 156920
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy font asset from www.w3.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 156920,
            "strategy": "Subset or defer this font so full font payloads are only fetched when needed.",
            "url": "https://www.w3.org/_sf/build/fonts/fa-solid-900.fb8184ad.woff2",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 2,070 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 2,070 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.71,
          "displayValue": "3.3 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 3.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/get-involved/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/get-involved/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 122107,
      "co2Grams": 0.04677692050980001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Get involved | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page describes the ways individuals and organizations can participate in the World Wide Web Consortium to advance web standardization.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Get involved",
          "ogDescription": "This page describes the ways individuals and organizations can participate in the World Wide Web Consortium to advance web standardization.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/get-involved/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 13,
          "tabletSmallTapTargets": 13,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 13,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 13,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 13 small targets on mobile and 13 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142301",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed716d800e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:13:05 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0144ee5de0b98f",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6130,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6130,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6130,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6130,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 111498.9
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 108.89 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 108.89 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 122107,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 122107,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 122107,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 122107,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/ecosystems/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ecosystems/",
      "performanceScore": 0.97,
      "bestPracticesScore": 1,
      "transferBytes": 1081714,
      "co2Grams": 0.41438451351960004,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Business Ecosystems | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Learn about the various business ecosystems that the web transforms and how W3C meets particular industry needs.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Business Ecosystems",
          "ogDescription": "Learn about the various business ecosystems that the web transforms and how W3C meets particular industry needs.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ecosystems/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 20,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 7,
          "tabletSmallTapTargets": 9,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 7,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 9,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 7 small targets on mobile and 9 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142309",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed74daaade5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:13:14 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0144f1ca081f27",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 20,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 13,
          "imagesWithLazy": 9,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 13,
            "lazyImages": 9,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 9/13 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 66,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 716523.9,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 691440.9,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6130,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 675.24 KB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 1213015.9,
        "totalEstimatedBlockingMs": 1198,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 691440.9,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 675 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 461019,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 450 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1198,
            "displayValue": "Est savings of 1,200 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35473,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6130,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 675.24 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 450.21 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1198 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.64 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1058246.6
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.01 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.01 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 1081714,
        "css": {
          "unusedBytes": 35473,
          "ratio": 0.03279332614720712,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35473,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 13,
        "urgency": "high",
        "transferBytes": 1081714,
        "estimatedDeferrableBytes": 35473,
        "renderBlockingMs": 1198,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35473
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35473,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1198,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 574717,
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/payments-shutterstock_605410205-1024.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 9,
        "urgency": "low",
        "transferBytes": 1081714,
        "estimatedRedundantBytes": 35473,
        "redundancyRatio": 0.03279332614720712,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35473,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35473,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 28,
        "urgency": "medium",
        "totalTransferBytes": 1081714,
        "heavyRequestCount": 2,
        "heavyBytes": 710860,
        "heavyRatio": 0.6571607652299961,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/payments-shutterstock_605410205-1024.png",
            "transferSize": 574717,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/data-head-shutterstock_728178127.jpg",
            "transferSize": 136143,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "image",
            "count": 2,
            "transferBytes": 710860
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 2,
            "transferBytes": 710860
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from www.w3.org",
            "urgency": "high",
            "estimatedSavingsBytes": 574717,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/payments-shutterstock_605410205-1024.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,200 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,200 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 675 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 675 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/membership/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/membership/",
      "performanceScore": 0.94,
      "bestPracticesScore": 0.96,
      "transferBytes": 1306704,
      "co2Grams": 0.5005739977056001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446953,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332605,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 59436,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 47238,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 5,
          "greenCount": 6,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Why join W3C | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Discover the value of joining the Web Consortium.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Why join W3C",
          "ogDescription": "Discover the value of joining the Web Consortium.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/membership/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 15,
          "tabletSmallTapTargets": 16,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 15,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 16,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 15 small targets on mobile and 16 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142318",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed789c841e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:13:24 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0144f59db91f27",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 24,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 7,
          "imagesWithLazy": 3,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 7 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 7,
            "lazyImages": 3,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 3/7 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 65007.25,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "low",
            "estimatedSavingsBytes": 39925.25,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "low",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 38.99 KB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 150274.25,
        "totalEstimatedBlockingMs": 306,
        "opportunities": [
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 50291,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 49 KiB",
            "urgency": "medium",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 34976,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 306,
            "displayValue": "Est savings of 310 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 39925.25,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 39 KiB",
            "urgency": "low",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Right-size images for viewport",
            "urgency": "medium",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 49.11 KB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.16 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 306 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "low",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 38.99 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 289390.3333333333
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 282.61 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 282.61 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 1306704,
        "css": {
          "unusedBytes": 34976,
          "ratio": 0.026766582179284674,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 34976,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 4,
        "urgency": "medium",
        "transferBytes": 1306704,
        "estimatedDeferrableBytes": 34976,
        "renderBlockingMs": 306,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 34976
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 34976,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 306,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube-nocookie.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446953,
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 188926,
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 100796,
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/marvin-meyer-SYTO3xs06fU-unsplash.jpg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 53,
        "urgency": "medium",
        "providerCount": 3,
        "requestCount": 4,
        "transferBytes": 803248,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446953,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332605,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 6,
        "urgency": "low",
        "transferBytes": 1306704,
        "estimatedRedundantBytes": 34976,
        "redundancyRatio": 0.026766582179284674,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 34976,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 34976,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 32,
        "urgency": "medium",
        "totalTransferBytes": 1306704,
        "heavyRequestCount": 5,
        "heavyBytes": 886232,
        "heavyRatio": 0.6782193978131237,
        "heavyRequests": [
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446953,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188926,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143679,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "transferSize": 59436,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 47238,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 779558
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106674
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.youtube-nocookie.com",
            "count": 2,
            "transferBytes": 506389
          },
          {
            "domain": "www.youtube.com",
            "count": 3,
            "transferBytes": 379843
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube-nocookie.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446953,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 188926,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 310 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 310 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.86,
          "displayValue": "2.7 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 39 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 39 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/Member/",
      "status": "ok",
      "finalUrl": "https://auth.w3.org/login",
      "performanceScore": 0.86,
      "bestPracticesScore": 1,
      "transferBytes": 193066,
      "co2Grams": 0.0739599935724,
      "greenWeb": {
        "page": {
          "hostname": "auth.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-04-30T08:55:47",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/auth.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.w3.org",
            "resourceType": "stylesheet",
            "requestCount": 3,
            "transferBytes": 57077,
            "sampleUrl": "https://www.w3.org/assets/website-2021/styles/core.css?ver=1.5",
            "greenCheck": {
              "hostname": "www.w3.org",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-24T08:50:00",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
              "error": null
            }
          },
          {
            "hostname": "www.w3.org",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 21450,
            "sampleUrl": "https://www.w3.org/assets/website-2021/js/libraries/fontfaceobserver.js",
            "greenCheck": {
              "hostname": "www.w3.org",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-24T08:50:00",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 2,
          "greenCount": 3,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 46.666666666666664,
        "urgency": "medium",
        "pageElementOccurrences": 3,
        "uniqueElementsAssessed": 3,
        "reusedFromCacheCount": 0,
        "components": [
          {
            "signature": "form|post|/login|input|text|_username|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "_username",
            "formContext": "form|post|/login",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|post|/login|input|password|_password|no-autocomplete|required|no-pattern|no-minlength",
            "role": "form",
            "controlType": "password",
            "fieldName": "_password",
            "formContext": "form|post|/login",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 30,
              "urgency": "medium",
              "issues": [
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|post|/login|input|checkbox|_remember_me|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "_remember_me",
            "formContext": "form|post|/login",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "3 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "W3C Authentication Platform | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The World Wide Web Consortium (W3C) is an international community where Member organizations, a full-time staff, and the public work together to develop Web standards.",
          "robots": "",
          "canonical": "",
          "ogTitle": "W3C Authentication Platform",
          "ogDescription": "The World Wide Web Consortium (W3C) is an international community where Member organizations, a full-time staff, and the public work together to develop Web standards.",
          "ogType": "website",
          "ogUrl": "https://auth.w3.org/login",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 10,
          "tabletSmallTapTargets": 10,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 10,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 10,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 10 small targets on mobile and 10 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": false,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "no-cache",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9f0ed7bf9f21e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'none'; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:13:32 GMT",
            "expires": "Thu, 23 Apr 2026 18:13:32 GMT",
            "priority": "u=0,i",
            "request-id": "9bf31ab7-43ea-40b1-89a1-b53e3ffad88a",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-request-id": "9f0ed7bf9f21e5eb"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Enable Strict-Transport-Security",
            "urgency": "medium",
            "detail": "Set a Strict-Transport-Security header to enforce HTTPS on repeat visits."
          },
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 50,
        "urgency": "medium",
        "origin": "https://auth.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://auth.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://auth.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://auth.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://auth.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://auth.w3.org/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 80,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": false,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "12.3",
            "title": "No reduced motion support",
            "urgency": "low",
            "detail": "Implement prefers-reduced-motion to allow users to disable animations, reducing compute and improving accessibility.",
            "wsid": "12.control animation",
            "assessor": "script",
            "example": "@media (prefers-reduced-motion: reduce) {\n  *, ::before, ::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n}"
          },
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 13,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 85460,
        "totalEstimatedBlockingMs": 1075,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1075,
            "displayValue": "Est savings of 1,080 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 36138,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 24239,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 24 KiB",
            "urgency": "low",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1075 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.29 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "low",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 23.67 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 150875
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 147.34 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 147.34 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 12,
        "urgency": "low",
        "transferBytes": 193066,
        "css": {
          "unusedBytes": 36138,
          "ratio": 0.18717951374141487,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 24239,
          "duplicatedBytes": 0,
          "ratio": 0.12554774015103642,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 36138,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "medium",
            "estimatedSavingsBytes": 24239,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 18,
        "urgency": "high",
        "transferBytes": 193066,
        "estimatedDeferrableBytes": 60377,
        "renderBlockingMs": 1075,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 24239,
          "unusedCssSavings": 36138
        },
        "candidates": [
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "medium",
            "estimatedSavingsBytes": 24239,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 36138,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1075,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 8,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 21450,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.w3.org",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 21450,
            "sampleUrl": "https://www.w3.org/assets/website-2021/js/libraries/fontfaceobserver.js",
            "greenCheck": {
              "hostname": "www.w3.org",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-24T08:50:00",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 25,
        "urgency": "low",
        "transferBytes": 193066,
        "estimatedRedundantBytes": 60377,
        "redundancyRatio": 0.31272725389245126,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 36138,
            "displayValue": "Est savings of 35 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 24239,
            "displayValue": "Est savings of 24 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 36138,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "medium",
            "estimatedSavingsBytes": 24239,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 3,
        "urgency": "low",
        "totalTransferBytes": 193066,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,080 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,080 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.64,
          "displayValue": "3.5 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 3.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0.5,
          "displayValue": "Est savings of 24 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 24 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/support-us/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/support-us/",
      "performanceScore": 0.96,
      "bestPracticesScore": 0.79,
      "transferBytes": 183438,
      "co2Grams": 0.0702716858532,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Support us | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Find out how you can make a huge difference to our operations as a public-interest non-profit, and help us to achieve our vision.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Support us",
          "ogDescription": "Find out how you can make a huge difference to our operations as a public-interest non-profit, and help us to achieve our vision.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/support-us/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 21,
          "tabletSmallTapTargets": 19,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 21,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 19,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 21 small targets on mobile and 19 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142601",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed7f62840e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:13:41 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013e771ed9137e",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 7,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 5
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "5 of 7 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 7,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/7 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 14,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60494,
        "totalEstimatedBlockingMs": 1043,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1043,
            "displayValue": "Est savings of 1,040 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35411,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1043 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.58 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 167566.9
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 163.64 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 163.64 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 7,
        "urgency": "low",
        "transferBytes": 183438,
        "css": {
          "unusedBytes": 35411,
          "ratio": 0.19304070040013518,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35411,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 14,
        "urgency": "high",
        "transferBytes": 183438,
        "estimatedDeferrableBytes": 35411,
        "renderBlockingMs": 1043,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35411
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35411,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1043,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 18,
        "urgency": "low",
        "transferBytes": 183438,
        "estimatedRedundantBytes": 35411,
        "redundancyRatio": 0.19304070040013518,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35411,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35411,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 183438,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,040 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,040 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/email/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/email/",
      "performanceScore": 0.97,
      "bestPracticesScore": 1,
      "transferBytes": 176820,
      "co2Grams": 0.06773645314800002,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Mailing lists | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Mailing lists",
          "robots": "",
          "canonical": "",
          "ogTitle": "Mailing lists",
          "ogDescription": "Mailing lists",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/email/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 41,
          "tabletSmallTapTargets": 41,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 1,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 1,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 430,
            "viewportHeight": 931,
            "contentWidth": 430,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 41,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 1
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 41,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 41 small targets on mobile and 41 on tablet."
          },
          {
            "title": "Make grid layouts breakpoint-aware",
            "urgency": "medium",
            "detail": "1 grid container(s) overflowed across tested viewports (1 on mobile, 0 on tablet). Use intrinsic tracks (minmax(), fr), wrapping, and breakpoint-aware grid templates."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "51156",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed826db59e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:13:49 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f09f733f9d86908",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 14,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60822,
        "totalEstimatedBlockingMs": 1177,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1177,
            "displayValue": "Est savings of 1,180 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35739,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1177 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.90 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 167841
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 163.91 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 163.91 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 7,
        "urgency": "low",
        "transferBytes": 176820,
        "css": {
          "unusedBytes": 35739,
          "ratio": 0.20212080081438752,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35739,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 176820,
        "estimatedDeferrableBytes": 35739,
        "renderBlockingMs": 1177,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35739
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35739,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1177,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 19,
        "urgency": "low",
        "transferBytes": 176820,
        "estimatedRedundantBytes": 35739,
        "redundancyRatio": 0.20212080081438752,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35739,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35739,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 176820,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,180 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,180 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/guide/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/guide/",
      "performanceScore": 0.96,
      "bestPracticesScore": 1,
      "transferBytes": 177287,
      "co2Grams": 0.0679153521618,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 40,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "The Art of Consensus (Guidebook)",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 122,
          "tabletSmallTapTargets": 122,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 122,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 122,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 122 small targets on mobile and 122 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 29,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": false,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "access-control-allow-origin": "*",
            "age": "185",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "max-age=600",
            "cf-cache-status": "BYPASS",
            "cf-ray": "9f0ed8389ed1e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=utf-8",
            "date": "Thu, 23 Apr 2026 18:13:52 GMT",
            "expires": "Thu, 23 Apr 2026 17:51:24 GMT",
            "last-modified": "Sun, 19 Apr 2026 07:00:47 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "vary": "Accept-Encoding",
            "via": "1.1 varnish",
            "x-backend": "github-pages",
            "x-cache": "HIT",
            "x-cache-hits": "1",
            "x-content-type-options": "nosniff",
            "x-fastly-request-id": "f9aa296f25e747de8d6c6e2b4d9d1ad9e6a1da5d",
            "x-github-request-id": "CA54:24C8E:36092D8:3BD0ADD:69EA59C4",
            "x-proxy-cache": "MISS",
            "x-request-id": "9f0ed8389ed1e5eb",
            "x-served-by": "cache-iad-kcgs7200096-IAD",
            "x-timer": "S1776968032.109707,VS0,VE2"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Enable Strict-Transport-Security",
            "urgency": "medium",
            "detail": "Set a Strict-Transport-Security header to enforce HTTPS on repeat visits."
          },
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 14,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25082,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 61278,
        "totalEstimatedBlockingMs": 1185,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1185,
            "displayValue": "Est savings of 1,190 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 36196,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1185 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.35 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 166235
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 162.34 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 162.34 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 7,
        "urgency": "low",
        "transferBytes": 177287,
        "css": {
          "unusedBytes": 36196,
          "ratio": 0.20416612611189766,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 36196,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 177287,
        "estimatedDeferrableBytes": 36196,
        "renderBlockingMs": 1185,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 36196
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 36196,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1185,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 19,
        "urgency": "low",
        "transferBytes": 177287,
        "estimatedRedundantBytes": 36196,
        "redundancyRatio": 0.20416612611189766,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 36196,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 36196,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 177287,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,190 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,190 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/about/positive-work-environment/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/about/positive-work-environment/",
      "performanceScore": 0.97,
      "bestPracticesScore": 1,
      "transferBytes": 178848,
      "co2Grams": 0.06851334222720001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Positive Work Environment | About us | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page introduces W3C's Positive Work Environment",
          "robots": "",
          "canonical": "",
          "ogTitle": "Positive Work Environment",
          "ogDescription": "This page introduces W3C's Positive Work Environment",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/about/positive-work-environment/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 22,
          "tabletSmallTapTargets": 24,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 22,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 24,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 22 small targets on mobile and 24 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142625",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed88cfae9e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:14:05 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013e7738944aff",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 14,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25082,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60844,
        "totalEstimatedBlockingMs": 1157,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1157,
            "displayValue": "Est savings of 1,160 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35762,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1157 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.92 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 170733
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 166.73 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 166.73 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 7,
        "urgency": "low",
        "transferBytes": 178848,
        "css": {
          "unusedBytes": 35762,
          "ratio": 0.19995750581499375,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35762,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 178848,
        "estimatedDeferrableBytes": 35762,
        "renderBlockingMs": 1157,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35762
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35762,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1157,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 18,
        "urgency": "low",
        "transferBytes": 178848,
        "estimatedRedundantBytes": 35762,
        "redundancyRatio": 0.19995750581499375,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35762,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35762,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 178848,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,160 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,160 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/invited-experts/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/invited-experts/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 123899,
      "co2Grams": 0.04746340237859999,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Invited Experts | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Home page of the W3C Invited Experts, who are non-Member group participants invited by work groups for their expertise.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Invited Experts",
          "ogDescription": "Home page of the W3C Invited Experts, who are non-Member group participants invited by work groups for their expertise.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/invited-experts/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 31,
          "tabletSmallTapTargets": 36,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 31,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 36,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 31 small targets on mobile and 36 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "50988",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed8c1da04e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:14:14 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f09fbebf9380bd2",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 113373
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 110.72 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 110.72 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 123899,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 123899,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 123899,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 123899,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/resources/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/resources/",
      "performanceScore": 0.96,
      "bestPracticesScore": 1,
      "transferBytes": 208321,
      "co2Grams": 0.07980390032939999,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Resources | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page lists the various resources to help W3C Members, web developers or the public, such as mailing lists, blogs and microblogs, news, training, tutorials, tools, videos, translations, etc.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Resources",
          "ogDescription": "This page lists the various resources to help W3C Members, web developers or the public, such as mailing lists, blogs and microblogs, news, training, tutorials, tools, videos, translations, etc.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/resources/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 10,
          "tabletSmallTapTargets": 10,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 10,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 10,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 10 small targets on mobile and 10 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142651",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed8f57d41e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:14:22 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013e407f532fc1",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 12,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60734,
        "totalEstimatedBlockingMs": 1207,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1207,
            "displayValue": "Est savings of 1,210 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35651,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1207 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.82 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 197683.4
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 193.05 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 193.05 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 6,
        "urgency": "low",
        "transferBytes": 208321,
        "css": {
          "unusedBytes": 35651,
          "ratio": 0.17113493118792633,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35651,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 15,
        "urgency": "high",
        "transferBytes": 208321,
        "estimatedDeferrableBytes": 35651,
        "renderBlockingMs": 1207,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35651
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35651,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1207,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 17,
        "urgency": "low",
        "transferBytes": 208321,
        "estimatedRedundantBytes": 35651,
        "redundancyRatio": 0.17113493118792633,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35651,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35651,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 208321,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,210 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,210 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/developers/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/developers/",
      "performanceScore": 0.78,
      "bestPracticesScore": 1,
      "transferBytes": 896714,
      "co2Grams": 0.34351445451960005,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Developers | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The one-stop place to find the information and tools you need to help you learn, build, and move the Web forward.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Developers",
          "ogDescription": "The one-stop place to find the information and tools you need to help you learn, build, and move the Web forward.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/developers/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 15,
          "tabletSmallTapTargets": 16,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 15,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 16,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 15 small targets on mobile and 16 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142659",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed929fab1e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:14:30 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013e4328a4ca5e",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 7,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 5
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "5 of 7 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 7,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/7 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 78,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 695632.4,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 670549.4,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6130,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 654.83 KB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 1134337.4,
        "totalEstimatedBlockingMs": 1212,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 670549.4,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 655 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 403219,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 394 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1212,
            "displayValue": "Est savings of 1,210 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35486,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6130,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 654.83 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 393.77 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1212 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.65 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 274517.7237430167
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 268.08 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 268.08 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 896714,
        "css": {
          "unusedBytes": 35486,
          "ratio": 0.039573375680540285,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35486,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 13,
        "urgency": "high",
        "transferBytes": 896714,
        "estimatedDeferrableBytes": 35486,
        "renderBlockingMs": 1212,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35486
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35486,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1212,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 673620,
            "url": "https://www.w3.org/comm/assets/graphics/w3cx-accessibility-intro-twitter-only.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 10,
        "urgency": "low",
        "transferBytes": 896714,
        "estimatedRedundantBytes": 35486,
        "redundancyRatio": 0.039573375680540285,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35486,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35486,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 31,
        "urgency": "medium",
        "totalTransferBytes": 896714,
        "heavyRequestCount": 1,
        "heavyBytes": 673620,
        "heavyRatio": 0.7512094157111409,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/comm/assets/graphics/w3cx-accessibility-intro-twitter-only.png",
            "transferSize": 673620,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 673620
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 1,
            "transferBytes": 673620
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from www.w3.org",
            "urgency": "high",
            "estimatedSavingsBytes": 673620,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://www.w3.org/comm/assets/graphics/w3cx-accessibility-intro-twitter-only.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.17,
          "displayValue": "5.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 5.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0,
          "displayValue": "Est savings of 655 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 655 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,210 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,210 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/developers/tools/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/developers/tools/",
      "performanceScore": 0.97,
      "bestPracticesScore": 1,
      "transferBytes": 176868,
      "co2Grams": 0.06775484105520001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Validators and tools | Developers | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page lists the validators and web developer tools.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Validators and tools",
          "ogDescription": "This page lists the validators and web developer tools.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/developers/tools/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 25,
          "tabletSmallTapTargets": 25,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 25,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 25,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 25 small targets on mobile and 25 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "44558",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed95de96ae5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:14:39 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0a997d4e3c5309",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 20,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 3,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 3,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 3/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 14,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60791,
        "totalEstimatedBlockingMs": 1201,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1201,
            "displayValue": "Est savings of 1,200 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35708,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1201 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.87 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 166359.33333333334
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 162.46 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 162.46 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 7,
        "urgency": "low",
        "transferBytes": 176868,
        "css": {
          "unusedBytes": 35708,
          "ratio": 0.20189067553203519,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35708,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 176868,
        "estimatedDeferrableBytes": 35708,
        "renderBlockingMs": 1201,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35708
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35708,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1201,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 19,
        "urgency": "low",
        "transferBytes": 176868,
        "estimatedRedundantBytes": 35708,
        "redundancyRatio": 0.20189067553203519,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35708,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35708,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 176868,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,200 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,200 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/WAI/fundamentals/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/WAI/fundamentals/",
      "performanceScore": 0.83,
      "bestPracticesScore": 1,
      "transferBytes": 621760,
      "co2Grams": 0.23818469126400005,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 0,
        "components": [
          {
            "signature": "search|get|/wai/search/|input|search|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "search",
            "controlType": "search",
            "fieldName": "q",
            "formContext": "search|get|/wai/search/",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Accessibility Fundamentals Overview | Web Accessibility Initiative (WAI) | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1, viewport-fit=cover",
          "description": "Accessibility resources free online from the international standards organization: W3C Web Accessibility Initiative (WAI).",
          "robots": "",
          "canonical": "https://www.w3.org/WAI/fundamentals/",
          "ogTitle": "Accessibility Fundamentals Overview",
          "ogDescription": "Accessibility resources free online from the international standards organization: W3C Web Accessibility Initiative (WAI).",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/WAI/fundamentals/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Metadata structure looks healthy",
            "urgency": "low",
            "detail": "Core machine-readable metadata is present and no structural issues were detected."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 46,
          "tabletSmallTapTargets": 49,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 46,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 49,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 46 small targets on mobile and 49 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "access-control-allow-origin": "*",
            "age": "191012",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "max-age=600, s-maxage=2592001",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed98f3d04e5eb-IAD",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "date": "Thu, 23 Apr 2026 18:14:46 GMT",
            "etag": "W/\"69e776f2-a464\"",
            "expires": "Tue, 21 Apr 2026 13:21:14 GMT",
            "last-modified": "Tue, 21 Apr 2026 13:09:06 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Accept-Encoding",
            "via": "1.1 varnish",
            "x-backend": "www-mirrors",
            "x-cache": "MISS",
            "x-cache-hits": "0",
            "x-content-type-options": "nosniff",
            "x-fastly-request-id": "8a86e1eae963825102e8a2aa713112c0b3787572",
            "x-github-request-id": "A23A:1C4A:6D0D68:734FE9:69E77771",
            "x-origin-cache": "HIT",
            "x-proxy-cache": "MISS",
            "x-request-id": "9efca2287913bba2",
            "x-served-by": "cache-iad-kcgs7200105-IAD",
            "x-timer": "S1776777074.080491,VS0,VE12"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 50,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 8,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 8
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "8 of 8 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 80,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": false,
          "media": {
            "totalImages": 8,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", \"Helvetica Neue\", Arial, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "12.3",
            "title": "No reduced motion support",
            "urgency": "low",
            "detail": "Implement prefers-reduced-motion to allow users to disable animations, reducing compute and improving accessibility.",
            "wsid": "12.control animation",
            "assessor": "script",
            "example": "@media (prefers-reduced-motion: reduce) {\n  *, ::before, ::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n}"
          },
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 0/8 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 72,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 448520.1,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 448520.1,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 438.01 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 887119.1,
        "totalEstimatedBlockingMs": 92,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 448520.1,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 438 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 423042,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 413 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 15557,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 15 KiB",
            "urgency": "low",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 92,
            "displayValue": "Est savings of 90 ms",
            "urgency": "low",
            "sourceAuditId": "render-blocking-resources"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 438.01 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 413.13 KB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "low",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 15.19 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "low",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 92 ms."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 537820.3333333335
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 525.22 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 525.22 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 621760,
        "css": {
          "unusedBytes": 15557,
          "ratio": 0.025020908389089037,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 15557,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 621760,
        "estimatedDeferrableBytes": 15557,
        "renderBlockingMs": 92,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 15557
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 15557,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 92,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 488097,
            "url": "https://www.w3.org/WAI/content-images/fundamentals/banner-with-blur.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 621760,
        "estimatedRedundantBytes": 15557,
        "redundancyRatio": 0.025020908389089037,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 15557,
            "displayValue": "Est savings of 15 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 15557,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 32,
        "urgency": "medium",
        "totalTransferBytes": 621760,
        "heavyRequestCount": 1,
        "heavyBytes": 488097,
        "heavyRatio": 0.7850247683993824,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/WAI/content-images/fundamentals/banner-with-blur.png",
            "transferSize": 488097,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 488097
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 1,
            "transferBytes": 488097
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from www.w3.org",
            "urgency": "high",
            "estimatedSavingsBytes": 488097,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://www.w3.org/WAI/content-images/fundamentals/banner-with-blur.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.36,
          "displayValue": "4.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 4.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 15 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 15 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0,
          "displayValue": "Est savings of 438 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 438 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 90 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 90 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/International/i18n-drafts/nav/about",
      "status": "ok",
      "finalUrl": "https://www.w3.org/International/i18n-drafts/nav/about",
      "performanceScore": 0.97,
      "bestPracticesScore": 0.96,
      "transferBytes": 1257839,
      "co2Grams": 0.48185472509460003,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 3,
            "transferBytes": 779037,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 2,
            "transferBytes": 106001,
            "sampleUrl": "https://www.youtube.com/s/player/8456c9de/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          },
          {
            "hostname": "static.doubleclick.net",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 495,
            "sampleUrl": "https://static.doubleclick.net/instream/ad_status.js",
            "greenCheck": {
              "hostname": "static.doubleclick.net",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:51:23",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/static.doubleclick.net",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 4,
          "greenCount": 5,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 0,
        "components": [
          {
            "signature": "search|get|/international/site-search.php|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "search",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "search|get|/international/site-search.php",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "About W3C Internationalization (i18n)",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "The W3C Internationalization Activity works with W3C working groups and liaises with other organizations to make it possible to use Web technologies with different languages, scripts, and cultures.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 183,
          "tabletSmallTapTargets": 194,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 394,
            "viewportHeight": 853,
            "contentWidth": 394,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 183,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 826,
            "viewportHeight": 1189,
            "contentWidth": 826,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 194,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 183 small targets on mobile and 194 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 29,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": false,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "access-control-allow-origin": "*",
            "age": "205",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "max-age=600",
            "cf-cache-status": "BYPASS",
            "cf-ray": "9f0ed9a0d932e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=utf-8",
            "date": "Thu, 23 Apr 2026 18:14:49 GMT",
            "expires": "Thu, 23 Apr 2026 17:47:53 GMT",
            "last-modified": "Wed, 22 Apr 2026 09:29:16 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "vary": "Accept-Encoding",
            "via": "1.1 varnish",
            "x-backend": "github-pages",
            "x-cache": "HIT",
            "x-cache-hits": "0",
            "x-content-type-options": "nosniff",
            "x-fastly-request-id": "0b7447b6ecd940f562e31c50096da2e2d862a5fc",
            "x-github-request-id": "224E:2A68BA:34074DC:39CD5F1:69EA58F0",
            "x-proxy-cache": "MISS",
            "x-request-id": "9f0ed9a0d932e5eb",
            "x-served-by": "cache-iad-kcgs7200158-IAD",
            "x-timer": "S1776968090.758956,VS0,VE2"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Enable Strict-Transport-Security",
            "urgency": "medium",
            "detail": "Set a Strict-Transport-Security header to enforce HTTPS on repeat visits."
          },
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 20,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 4,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 2
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          }
        ]
      },
      "wsgCustom": {
        "score": 75,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": false,
          "media": {
            "totalImages": 4,
            "lazyImages": 2,
            "totalIframes": 2,
            "lazyIframes": 2
          },
          "typography": {
            "primaryFont": "RalewayWF, Helvetica, \"Helvetica Neue\", Arial, \"Segoe UI\", sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": false
          }
        },
        "recommendations": [
          {
            "guideline": "12.3",
            "title": "No reduced motion support",
            "urgency": "low",
            "detail": "Implement prefers-reduced-motion to allow users to disable animations, reducing compute and improving accessibility.",
            "wsid": "12.control animation",
            "assessor": "script",
            "example": "@media (prefers-reduced-motion: reduce) {\n  *, ::before, ::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n}"
          },
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/4 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "3.7",
            "title": "Missing main content landmark",
            "urgency": "medium",
            "detail": "No <main> or role=\"main\" tags found. Semantic HTML reduces code bloat and allows both assistive technology and web crawlers to parse content more efficiently.",
            "wsid": "3.ensure code follows good semantic practices",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-code-follows-good-semantic-practices",
            "assessor": "script",
            "example": "<main>\n  <article>\n    <h1>Page Title</h1>\n    <p>Content goes here.</p>\n  </article>\n</main>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 2321,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 2321,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 2.27 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 18251,
        "totalEstimatedBlockingMs": 564,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 564,
            "displayValue": "Est savings of 560 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 15930,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 16 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 2321,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 2 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 564 ms."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "low",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 15.56 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 2.27 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 218248.62291666665
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 213.13 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 213.13 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 1257839,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 6,
        "urgency": "medium",
        "transferBytes": 1257839,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 564,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 564,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446727,
            "url": "https://www.youtube.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 56,
        "urgency": "medium",
        "providerCount": 3,
        "requestCount": 5,
        "transferBytes": 803222,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 3,
            "transferBytes": 779037,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          },
          {
            "hostname": "static.doubleclick.net",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 495,
            "sampleUrl": "https://static.doubleclick.net/instream/ad_status.js",
            "greenCheck": {
              "hostname": "static.doubleclick.net",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:51:23",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/static.doubleclick.net",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 1257839,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 39,
        "urgency": "medium",
        "totalTransferBytes": 1257839,
        "heavyRequestCount": 7,
        "heavyBytes": 992123,
        "heavyRatio": 0.7887519785918548,
        "heavyRequests": [
          {
            "url": "https://www.youtube.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446727,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188794,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143516,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/player/8456c9de/www-player.css",
            "transferSize": 59155,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.w3.org/International/i18n-drafts/style/fonts/raleway-regular-webfont.woff2",
            "transferSize": 53581,
            "resourceType": "font",
            "mimeType": "font/woff2",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.w3.org/International/i18n-drafts/style/fonts/raleway-bold-webfont.woff2",
            "transferSize": 53504,
            "resourceType": "font",
            "mimeType": "font/woff2",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 46846,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 779037
          },
          {
            "resourceType": "font",
            "count": 2,
            "transferBytes": 107085
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106001
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.youtube.com",
            "count": 5,
            "transferBytes": 885038
          },
          {
            "domain": "www.w3.org",
            "count": 2,
            "transferBytes": 107085
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446727,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 560 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 560 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.89,
          "displayValue": "2.5 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/policies/code-of-conduct/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/policies/code-of-conduct/",
      "performanceScore": 1,
      "bestPracticesScore": 1,
      "transferBytes": 63152,
      "co2Grams": 0.0241923565728,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Positive Work Environment at W3C: Code of Conduct",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1, shrink-to-fit=no",
          "description": "W3C's Code of Conduct defines\n        expected and unacceptable behaviors and promotes high standards of\n        professional practice. The goals of this Code are to:",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 203,
          "tabletSmallTapTargets": 203,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 203,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 203,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 203 small targets on mobile and 203 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 29,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": false,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "550957",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=2592001",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ed9e11aabe5eb-IAD",
            "content-encoding": "br",
            "content-location": "20240318/Overview.html",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=utf-8",
            "date": "Thu, 23 Apr 2026 18:15:00 GMT",
            "last-modified": "Mon, 26 Jan 2026 04:19:56 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "vary": "Accept-Encoding",
            "x-backend": "www-mirrors",
            "x-content-type-options": "nosniff",
            "x-request-id": "9eda4ec51ac0177b"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Enable Strict-Transport-Security",
            "urgency": "medium",
            "detail": "Set a Strict-Transport-Security header to enforce HTTPS on repeat visits."
          },
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 1,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "1 of 1 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 80,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 1,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": false
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 0/1 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "3.7",
            "title": "Missing main content landmark",
            "urgency": "medium",
            "detail": "No <main> or role=\"main\" tags found. Semantic HTML reduces code bloat and allows both assistive technology and web crawlers to parse content more efficiently.",
            "wsid": "3.ensure code follows good semantic practices",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-code-follows-good-semantic-practices",
            "assessor": "script",
            "example": "<main>\n  <article>\n    <h1>Page Title</h1>\n    <p>Content goes here.</p>\n  </article>\n</main>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 8,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 5272,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 5272,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 5.15 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 5272,
        "totalEstimatedBlockingMs": 101,
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 5272,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 5 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 101,
            "displayValue": "Est savings of 100 ms",
            "urgency": "low",
            "sourceAuditId": "render-blocking-resources"
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 5.15 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "low",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 101 ms."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 7991.060893854747
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 7.80 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 7.80 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 63152,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 63152,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 101,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 101,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 13,
        "urgency": "low",
        "transferBytes": 63152,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 63152,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 100 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 100 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "1,015 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 1,015 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/reports/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/reports/",
      "performanceScore": 0.97,
      "bestPracticesScore": 1,
      "transferBytes": 159281,
      "co2Grams": 0.06101758847340001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Reports | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page lists reports by the W3C Team.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Reports",
          "ogDescription": "This page lists reports by the W3C Team.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/reports/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 13,
          "tabletSmallTapTargets": 14,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 13,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 14,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 13 small targets on mobile and 14 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142685",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0eda37ac4ee5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:15:13 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013ead2811f3e8",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 16,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25082,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 61131,
        "totalEstimatedBlockingMs": 1208,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1208,
            "displayValue": "Est savings of 1,210 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 36049,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1208 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.20 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 151981
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 148.42 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 148.42 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 159281,
        "css": {
          "unusedBytes": 36049,
          "ratio": 0.22632329028572146,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 36049,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 17,
        "urgency": "high",
        "transferBytes": 159281,
        "estimatedDeferrableBytes": 36049,
        "renderBlockingMs": 1208,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 36049
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 36049,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1208,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 20,
        "urgency": "low",
        "transferBytes": 159281,
        "estimatedRedundantBytes": 36049,
        "redundancyRatio": 0.22632329028572146,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 36049,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 36049,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 159281,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,210 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,210 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/news-events/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/news-events/",
      "performanceScore": 0.93,
      "bestPracticesScore": 1,
      "transferBytes": 171239,
      "co2Grams": 0.0655984758546,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "News and events | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Get to fresh content across news, blog, press releases, and events.",
          "robots": "",
          "canonical": "",
          "ogTitle": "News and events",
          "ogDescription": "Get to fresh content across news, blog, press releases, and events.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/news-events/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 10,
          "tabletSmallTapTargets": 10,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 10,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 10,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 10 small targets on mobile and 10 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142429",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0eda683ed4e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:15:21 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f01451e8d641f27",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 15,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25082,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60770,
        "totalEstimatedBlockingMs": 1215,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1215,
            "displayValue": "Est savings of 1,220 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35688,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1215 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.85 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 162465.26666666666
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 158.66 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 158.66 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 7,
        "urgency": "low",
        "transferBytes": 171239,
        "css": {
          "unusedBytes": 35688,
          "ratio": 0.20841046724169143,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35688,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 171239,
        "estimatedDeferrableBytes": 35688,
        "renderBlockingMs": 1215,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35688
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35688,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1215,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 19,
        "urgency": "low",
        "transferBytes": 171239,
        "estimatedRedundantBytes": 35688,
        "redundancyRatio": 0.20841046724169143,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35688,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35688,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 171239,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,220 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,220 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/news/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/news/",
      "performanceScore": 0.96,
      "bestPracticesScore": 1,
      "transferBytes": 159181,
      "co2Grams": 0.06097928033340001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 0,
        "components": [
          {
            "signature": "search|get|self|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "search",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "search|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "News | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "W3C News",
          "robots": "",
          "canonical": "",
          "ogTitle": "News",
          "ogDescription": "W3C News",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/news/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 24,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 9,
          "tabletSmallTapTargets": 10,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 391,
            "viewportHeight": 847,
            "contentWidth": 391,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 9,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 10,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 9 small targets on mobile and 10 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58691",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0eda9cd8b8e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:15:30 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0941ad7fad434e",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,newsArticles"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 16,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25082,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 59705,
        "totalEstimatedBlockingMs": 1191,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1191,
            "displayValue": "Est savings of 1,190 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 34623,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1191 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 33.81 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 150302
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 146.78 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 146.78 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 159181,
        "css": {
          "unusedBytes": 34623,
          "ratio": 0.21750711454256474,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 34623,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 159181,
        "estimatedDeferrableBytes": 34623,
        "renderBlockingMs": 1191,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 34623
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 34623,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1191,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 19,
        "urgency": "low",
        "transferBytes": 159181,
        "estimatedRedundantBytes": 34623,
        "redundancyRatio": 0.21750711454256474,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 34623,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 34623,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 159181,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,190 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,190 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/blog/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/blog/",
      "performanceScore": 0.97,
      "bestPracticesScore": 1,
      "transferBytes": 160397,
      "co2Grams": 0.06144510731580001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "search|get|self|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "search",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "search|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Blog | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The W3C blog is for in-depth Web standards topics and educational materials.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Blog",
          "ogDescription": "The W3C blog is for in-depth Web standards topics and educational materials.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/blog/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 12,
          "tabletSmallTapTargets": 16,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 391,
            "viewportHeight": 847,
            "contentWidth": 391,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 12,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 16,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 12 small targets on mobile and 16 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "51433",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edad2298ce5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:15:38 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f09f31f0b42e5e9",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 16,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25082,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 59560,
        "totalEstimatedBlockingMs": 1042,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1042,
            "displayValue": "Est savings of 1,040 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 34478,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1042 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 33.67 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 150307
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 146.78 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 146.78 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 160397,
        "css": {
          "unusedBytes": 34478,
          "ratio": 0.21495414502765015,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 34478,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 15,
        "urgency": "high",
        "transferBytes": 160397,
        "estimatedDeferrableBytes": 34478,
        "renderBlockingMs": 1042,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 34478
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 34478,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1042,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 19,
        "urgency": "low",
        "transferBytes": 160397,
        "estimatedRedundantBytes": 34478,
        "redundancyRatio": 0.21495414502765015,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 34478,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 34478,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 160397,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,040 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,040 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/press-releases/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/press-releases/",
      "performanceScore": 0.96,
      "bestPracticesScore": 1,
      "transferBytes": 159218,
      "co2Grams": 0.0609934543452,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Press releases | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Press releases about W3C work.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Press releases",
          "ogDescription": "Press releases about W3C work.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/press-releases/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 28,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 10,
          "tabletSmallTapTargets": 12,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 391,
            "viewportHeight": 847,
            "contentWidth": 391,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 10,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 12,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 10 small targets on mobile and 12 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "810846",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edb066e23e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:15:46 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9ec186f64f77b11e",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,pressReleases"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 16,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25082,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60469,
        "totalEstimatedBlockingMs": 1206,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1206,
            "displayValue": "Est savings of 1,210 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35387,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1206 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.56 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 150303
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 146.78 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 146.78 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 159218,
        "css": {
          "unusedBytes": 35387,
          "ratio": 0.22225502141717646,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35387,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 17,
        "urgency": "high",
        "transferBytes": 159218,
        "estimatedDeferrableBytes": 35387,
        "renderBlockingMs": 1206,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35387
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35387,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1206,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 20,
        "urgency": "low",
        "transferBytes": 159218,
        "estimatedRedundantBytes": 35387,
        "redundancyRatio": 0.22225502141717646,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35387,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35387,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 159218,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,210 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,210 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/about/press-media/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/about/press-media/",
      "performanceScore": 0.94,
      "bestPracticesScore": 0.79,
      "transferBytes": 1194363,
      "co2Grams": 0.4575382501482,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446515,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332319,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 59159,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/bcd88ad3/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 46851,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 5,
          "greenCount": 6,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Media kit | About us | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page contains information for reporters and the public, and makes it easy to learn about W3C and its work, get W3C news and contact us.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Media kit",
          "ogDescription": "This page contains information for reporters and the public, and makes it easy to learn about W3C and its work, get W3C news and contact us.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/about/press-media/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 52,
          "tabletSmallTapTargets": 56,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 1,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 1,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 509,
            "viewportHeight": 1100,
            "contentWidth": 509,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 52,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 1
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 56,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 52 small targets on mobile and 56 on tablet."
          },
          {
            "title": "Make grid layouts breakpoint-aware",
            "urgency": "medium",
            "detail": "1 grid container(s) overflowed across tested viewports (1 on mobile, 0 on tablet). Use intrinsic tracks (minmax(), fr), wrapping, and breakpoint-aware grid templates."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142736",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edb450d9fe5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:15:56 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013e782edda8a7",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 2,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25084,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6130,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60121,
        "totalEstimatedBlockingMs": 304,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35037,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 304,
            "displayValue": "Est savings of 300 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6130,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.22 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 304 ms."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 180353
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 176.13 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 176.13 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 1194363,
        "css": {
          "unusedBytes": 35037,
          "ratio": 0.029335302583887814,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35037,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 4,
        "urgency": "medium",
        "transferBytes": 1194363,
        "estimatedDeferrableBytes": 35037,
        "renderBlockingMs": 304,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35037
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35037,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 304,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube-nocookie.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446515,
            "url": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 188796,
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 53,
        "urgency": "medium",
        "providerCount": 3,
        "requestCount": 4,
        "transferBytes": 802524,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446515,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332319,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 7,
        "urgency": "low",
        "transferBytes": 1194363,
        "estimatedRedundantBytes": 35037,
        "redundancyRatio": 0.029335302583887814,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35037,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35037,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 35,
        "urgency": "medium",
        "totalTransferBytes": 1194363,
        "heavyRequestCount": 5,
        "heavyBytes": 884844,
        "heavyRatio": 0.740850143549323,
        "heavyRequests": [
          {
            "url": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446515,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188796,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143523,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube-nocookie.com/s/player/bcd88ad3/www-player.css",
            "transferSize": 59159,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 46851,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 778834
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106010
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.youtube-nocookie.com",
            "count": 2,
            "transferBytes": 505674
          },
          {
            "domain": "www.youtube.com",
            "count": 3,
            "transferBytes": 379170
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube-nocookie.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446515,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 188796,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 300 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 300 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.86,
          "displayValue": "2.7 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/events/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/events/",
      "performanceScore": 0.97,
      "bestPracticesScore": 1,
      "transferBytes": 160969,
      "co2Grams": 0.06166422987660001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 50,
        "urgency": "medium",
        "pageElementOccurrences": 2,
        "uniqueElementsAssessed": 2,
        "reusedFromCacheCount": 0,
        "components": [
          {
            "signature": "form|get|self|select|select|type|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "select",
            "fieldName": "type",
            "formContext": "form|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|self|select|select|category|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "select",
            "fieldName": "category",
            "formContext": "form|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Events | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "W3C engages with the community in a number of events. Find upcoming both inside and outside W3C.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Events",
          "ogDescription": "W3C engages with the community in a number of events. Find upcoming both inside and outside W3C.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/events/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 14,
          "tabletSmallTapTargets": 17,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 391,
            "viewportHeight": 847,
            "contentWidth": 391,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 14,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 17,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 14 small targets on mobile and 17 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "62140",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edb79dcf0e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:16:05 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f08ee5d6866da52",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,events"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 41,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 14,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 12
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "12 of 14 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 14,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/14 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 16,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 59720,
        "totalEstimatedBlockingMs": 1193,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1193,
            "displayValue": "Est savings of 1,190 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 34637,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1193 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 33.83 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 151245
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 147.70 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 147.70 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 160969,
        "css": {
          "unusedBytes": 34637,
          "ratio": 0.21517807776652648,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 34637,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 160969,
        "estimatedDeferrableBytes": 34637,
        "renderBlockingMs": 1193,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 34637
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 34637,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1193,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 19,
        "urgency": "low",
        "transferBytes": 160969,
        "estimatedRedundantBytes": 34637,
        "redundancyRatio": 0.21517807776652648,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 34637,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 34637,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 160969,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,190 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,190 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/news-events/w3c-tpac/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/news-events/w3c-tpac/",
      "performanceScore": 0.95,
      "bestPracticesScore": 1,
      "transferBytes": 236236,
      "co2Grams": 0.09049761761040001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "W3C TPAC | News and events | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The W3C annual conference aims to coordinate solutions to technical issues by gathering in a single event several meetings between the W3C Members and Boards, W3C Working and Interest Groups, as well as a series of breakout sessions determined by the attendees.",
          "robots": "",
          "canonical": "",
          "ogTitle": "W3C TPAC",
          "ogDescription": "The W3C annual conference aims to coordinate solutions to technical issues by gathering in a single event several meetings between the W3C Members and Boards, W3C Working and Interest Groups, as well as a series of breakout sessions determined by the attendees.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/news-events/w3c-tpac/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 50,
          "tabletSmallTapTargets": 47,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 50,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 47,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 50 small targets on mobile and 47 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "50623",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edbaf5961e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:16:13 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0a07c4297d3e6c",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 20,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 47060.85,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "low",
            "estimatedSavingsBytes": 21978.85,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "low",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 21.46 KB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 93646.85,
        "totalEstimatedBlockingMs": 1212,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1212,
            "displayValue": "Est savings of 1,210 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35742,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 21978.85,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 21 KiB",
            "urgency": "low",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 10844,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 11 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1212 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.90 KB."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "low",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 21.46 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "low",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 10.59 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 173289.45810055867
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 169.23 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 169.23 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 236236,
        "css": {
          "unusedBytes": 35742,
          "ratio": 0.1512978546876852,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35742,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 15,
        "urgency": "high",
        "transferBytes": 236236,
        "estimatedDeferrableBytes": 35742,
        "renderBlockingMs": 1212,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35742
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35742,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1212,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 16,
        "urgency": "low",
        "transferBytes": 236236,
        "estimatedRedundantBytes": 35742,
        "redundancyRatio": 0.1512978546876852,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35742,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35742,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 236236,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0,
          "displayValue": "Est savings of 21 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 21 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,210 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,210 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.88,
          "displayValue": "2.6 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/about/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/about/",
      "performanceScore": 0.96,
      "bestPracticesScore": 1,
      "transferBytes": 394724,
      "co2Grams": 0.1512114225336,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "About us | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page introduces the World Wide Web Consortium, a multi-stakeholder member-organization which develops web standards in the open.",
          "robots": "",
          "canonical": "",
          "ogTitle": "About us",
          "ogDescription": "This page introduces the World Wide Web Consortium, a multi-stakeholder member-organization which develops web standards in the open.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/about/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 38,
          "tabletSmallTapTargets": 44,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 38,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 44,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 38 small targets on mobile and 44 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "50842",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edbe5ae79e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:16:22 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0a02a0aecb541b",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 24,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 7,
          "imagesWithLazy": 3,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 7 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 7,
            "lazyImages": 3,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 3/7 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 44,
        "urgency": "medium",
        "totalEstimatedSavingsBytes": 172918.75,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 147836.75,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 144.37 KB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 301254.75,
        "totalEstimatedBlockingMs": 990,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 147836.75,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 144 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 93433,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 91 KiB",
            "urgency": "medium",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 34903,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 990,
            "displayValue": "Est savings of 990 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 144.37 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "medium",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 91.24 KB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.08 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 990 ms."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 378519.35
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 369.65 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 369.65 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 394724,
        "css": {
          "unusedBytes": 34903,
          "ratio": 0.08842381005462044,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 34903,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 12,
        "urgency": "medium",
        "transferBytes": 394724,
        "estimatedDeferrableBytes": 34903,
        "renderBlockingMs": 990,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 34903
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 34903,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 990,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 186840,
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/w3c-composition.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 12,
        "urgency": "low",
        "transferBytes": 394724,
        "estimatedRedundantBytes": 34903,
        "redundancyRatio": 0.08842381005462044,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 34903,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 34903,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 20,
        "urgency": "low",
        "totalTransferBytes": 394724,
        "heavyRequestCount": 1,
        "heavyBytes": 186840,
        "heavyRatio": 0.47334339943859505,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/w3c-composition.png",
            "transferSize": 186840,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 186840
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 1,
            "transferBytes": 186840
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from www.w3.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 186840,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/w3c-composition.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 990 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 990 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 144 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 144 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/mission/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/mission/",
      "performanceScore": 0.94,
      "bestPracticesScore": 0.79,
      "transferBytes": 1212468,
      "co2Grams": 0.46447393889520006,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446734,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332325,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 59161,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 46856,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 5,
          "greenCount": 6,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Our mission | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Learn who W3C is, our values and the principles upon which we conduct our mission to make the web work — for everyone.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Our mission",
          "ogDescription": "Learn who W3C is, our values and the principles upon which we conduct our mission to make the web work — for everyone.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/mission/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 18,
          "tabletSmallTapTargets": 18,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 18,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 18,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 18 small targets on mobile and 18 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142497",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edc20ea11e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:16:32 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f01452a6c0a1f27",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 2,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60112,
        "totalEstimatedBlockingMs": 463,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35029,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 463,
            "displayValue": "Est savings of 460 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.21 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 463 ms."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 202283.16666666666
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 197.54 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 197.54 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 1212468,
        "css": {
          "unusedBytes": 35029,
          "ratio": 0.02889065938235071,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35029,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 5,
        "urgency": "medium",
        "transferBytes": 1212468,
        "estimatedDeferrableBytes": 35029,
        "renderBlockingMs": 463,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35029
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35029,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 463,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube-nocookie.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446734,
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 188799,
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 53,
        "urgency": "medium",
        "providerCount": 3,
        "requestCount": 4,
        "transferBytes": 802749,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446734,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332325,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 7,
        "urgency": "low",
        "transferBytes": 1212468,
        "estimatedRedundantBytes": 35029,
        "redundancyRatio": 0.02889065938235071,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35029,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35029,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 34,
        "urgency": "medium",
        "totalTransferBytes": 1212468,
        "heavyRequestCount": 5,
        "heavyBytes": 885076,
        "heavyRatio": 0.7299788530501423,
        "heavyRequests": [
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446734,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188799,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143526,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "transferSize": 59161,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 46856,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 779059
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106017
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.youtube-nocookie.com",
            "count": 2,
            "transferBytes": 505895
          },
          {
            "domain": "www.youtube.com",
            "count": 3,
            "transferBytes": 379181
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube-nocookie.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446734,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 188799,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 460 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 460 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.85,
          "displayValue": "2.7 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/about/leadership/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/about/leadership/",
      "performanceScore": 0.83,
      "bestPracticesScore": 1,
      "transferBytes": 555936,
      "co2Grams": 0.21296874119040005,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Leadership | About us | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page describes how the World Wide Web Consortium is governed.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Leadership",
          "ogDescription": "This page describes how the World Wide Web Consortium is governed.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/about/leadership/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 25,
          "tabletSmallTapTargets": 31,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 25,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 31,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 25 small targets on mobile and 31 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142780",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edc56afa7e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:16:40 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013e7878bf8e9c",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 7,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 5
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "5 of 7 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 7,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/7 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 78,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 432466.05,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 259946.05,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "medium",
            "estimatedSavingsBytes": 147437,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 253.85 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "medium",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 143.98 KB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 615173.05,
        "totalEstimatedBlockingMs": 1220,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 259946.05,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 254 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1220,
            "displayValue": "Est savings of 1,220 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 147437,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 144 KiB",
            "urgency": "medium",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 146910,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 143 KiB",
            "urgency": "medium",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35797,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 253.85 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1220 ms."
          },
          {
            "title": "Compress oversized image assets",
            "urgency": "medium",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss. Estimated byte savings: 143.98 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "medium",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 143.47 KB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.96 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 186382.33100558657
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 182.01 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 182.01 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 2,
        "urgency": "low",
        "transferBytes": 555936,
        "css": {
          "unusedBytes": 35797,
          "ratio": 0.06439050538191446,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35797,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 13,
        "urgency": "high",
        "transferBytes": 555936,
        "estimatedDeferrableBytes": 35797,
        "renderBlockingMs": 1220,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35797
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35797,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1220,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 232152,
            "url": "https://www.w3.org/comm/assets/graphics/team-collage/team-collage-med.jpeg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 11,
        "urgency": "low",
        "transferBytes": 555936,
        "estimatedRedundantBytes": 35797,
        "redundancyRatio": 0.06439050538191446,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35797,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35797,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 31,
        "urgency": "medium",
        "totalTransferBytes": 555936,
        "heavyRequestCount": 2,
        "heavyBytes": 398527,
        "heavyRatio": 0.716857695849882,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/comm/assets/graphics/team-collage/team-collage-med.jpeg",
            "transferSize": 232152,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.w3.org/comm/assets/graphics/w3c-le-governance.png",
            "transferSize": 166375,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "image",
            "count": 2,
            "transferBytes": 398527
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 2,
            "transferBytes": 398527
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from www.w3.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 232152,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://www.w3.org/comm/assets/graphics/team-collage/team-collage-med.jpeg",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.39,
          "displayValue": "4.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 4.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0,
          "displayValue": "Est savings of 254 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 254 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0,
          "displayValue": "Est savings of 144 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 144 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,220 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,220 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/staff/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/staff/",
      "performanceScore": 0.95,
      "bestPracticesScore": 1,
      "transferBytes": 227363,
      "co2Grams": 0.08709853634820001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 50,
        "urgency": "medium",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 0,
        "components": [
          {
            "signature": "form|get|self|select|select|initial|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "select",
            "fieldName": "initial",
            "formContext": "form|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Staff | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The World Wide Web Consortium (W3C) is an international community where Member organizations, a full-time staff, and the public work together to develop Web standards.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Staff",
          "ogDescription": "The World Wide Web Consortium (W3C) is an international community where Member organizations, a full-time staff, and the public work together to develop Web standards.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/staff/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 143,
          "tabletSmallTapTargets": 170,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 143,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 170,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 143 small targets on mobile and 170 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "283",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=3600",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edc997dd6e5eb-IAD",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "date": "Thu, 23 Apr 2026 18:16:51 GMT",
            "last-modified": "Thu, 23 Apr 2026 18:12:07 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Accept-Encoding",
            "x-backend": "sf-main",
            "x-content-type-options": "nosniff",
            "x-request-id": "9f0ed5ac9f07d005"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 162,
          "imagesWithLazy": 55,
          "imagesWithoutLazy": 107
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "107 of 162 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 162,
            "lazyImages": 55,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 55/162 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 11,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25082,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 95381,
        "totalEstimatedBlockingMs": 1112,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1112,
            "displayValue": "Est savings of 1,110 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 70299,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 69 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1112 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 68.65 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 158601
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 154.88 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 154.88 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 13,
        "urgency": "medium",
        "transferBytes": 227363,
        "css": {
          "unusedBytes": 70299,
          "ratio": 0.3091927886243584,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 70299,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 17,
        "urgency": "high",
        "transferBytes": 227363,
        "estimatedDeferrableBytes": 70299,
        "renderBlockingMs": 1112,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 70299
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 70299,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1112,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 35,
        "urgency": "medium",
        "transferBytes": 227363,
        "estimatedRedundantBytes": 70299,
        "redundancyRatio": 0.3091927886243584,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 70299,
            "displayValue": "Est savings of 69 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 70299,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 227363,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 69 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 69 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,110 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,110 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.87,
          "displayValue": "2.6 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "1,600 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 1,600 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/careers/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/careers/",
      "performanceScore": 0.89,
      "bestPracticesScore": 1,
      "transferBytes": 391585,
      "co2Grams": 0.150008930019,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Careers | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Jobs and fellowships at W3C.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Careers",
          "ogDescription": "Jobs and fellowships at W3C.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/careers/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 15,
          "tabletSmallTapTargets": 15,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 15,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 15,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 15 small targets on mobile and 15 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "35960",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edccdd8cee5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:16:59 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0b6edd4fb1979b",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 92,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 361039.35,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 188520.35,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "medium",
            "estimatedSavingsBytes": 147437,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 184.10 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "medium",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 143.98 KB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 397091.35,
        "totalEstimatedBlockingMs": 1171,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1171,
            "displayValue": "Est savings of 1,170 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 188520.35,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 184 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 147437,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 144 KiB",
            "urgency": "medium",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 36052,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1171 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 184.10 KB."
          },
          {
            "title": "Compress oversized image assets",
            "urgency": "medium",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss. Estimated byte savings: 143.98 KB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.21 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 173700.97206703908
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 169.63 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 169.63 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 391585,
        "css": {
          "unusedBytes": 36052,
          "ratio": 0.09206685649348162,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 36052,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 14,
        "urgency": "high",
        "transferBytes": 391585,
        "estimatedDeferrableBytes": 36052,
        "renderBlockingMs": 1171,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 36052
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 36052,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1171,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 232144,
            "url": "https://www.w3.org/comm/assets/graphics/team-collage/team-collage-med.jpeg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 13,
        "urgency": "low",
        "transferBytes": 391585,
        "estimatedRedundantBytes": 36052,
        "redundancyRatio": 0.09206685649348162,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 36052,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 36052,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 25,
        "urgency": "low",
        "totalTransferBytes": 391585,
        "heavyRequestCount": 1,
        "heavyBytes": 232144,
        "heavyRatio": 0.5928316968218905,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/comm/assets/graphics/team-collage/team-collage-med.jpeg",
            "transferSize": 232144,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 232144
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 1,
            "transferBytes": 232144
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from www.w3.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 232144,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://www.w3.org/comm/assets/graphics/team-collage/team-collage-med.jpeg",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0,
          "displayValue": "Est savings of 184 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 184 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0,
          "displayValue": "Est savings of 144 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 144 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,170 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.62,
          "displayValue": "3.6 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 3.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/about/diversity/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/about/diversity/",
      "performanceScore": 0.96,
      "bestPracticesScore": 0.79,
      "transferBytes": 1204630,
      "co2Grams": 0.4614713468820001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446734,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332325,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 59161,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 46856,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 5,
          "greenCount": 6,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Diversity | About us | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "As part of our commitment and continued focus on diversity and inclusion, we report gender and geographic diversity of W3C's governance bodies.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Diversity",
          "ogDescription": "As part of our commitment and continued focus on diversity and inclusion, we report gender and geographic diversity of W3C's governance bodies.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/about/diversity/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 35,
          "tabletSmallTapTargets": 35,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 35,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 35,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 35 small targets on mobile and 35 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142808",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edd09fc92e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:17:09 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013e7889446cb2",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 2,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6130,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60245,
        "totalEstimatedBlockingMs": 300,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35162,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 300,
            "displayValue": "Est savings of 300 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6130,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.34 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 300 ms."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 189503
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 185.06 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 185.06 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 1204630,
        "css": {
          "unusedBytes": 35162,
          "ratio": 0.02918904559906361,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35162,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 4,
        "urgency": "medium",
        "transferBytes": 1204630,
        "estimatedDeferrableBytes": 35162,
        "renderBlockingMs": 300,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35162
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35162,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 300,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube-nocookie.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446734,
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 188799,
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 53,
        "urgency": "medium",
        "providerCount": 3,
        "requestCount": 4,
        "transferBytes": 802749,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446734,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332325,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 9,
        "urgency": "low",
        "transferBytes": 1204630,
        "estimatedRedundantBytes": 35162,
        "redundancyRatio": 0.02918904559906361,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35162,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35162,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 34,
        "urgency": "medium",
        "totalTransferBytes": 1204630,
        "heavyRequestCount": 5,
        "heavyBytes": 885076,
        "heavyRatio": 0.7347285058482688,
        "heavyRequests": [
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446734,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188799,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143526,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "transferSize": 59161,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 46856,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 779059
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106017
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.youtube-nocookie.com",
            "count": 2,
            "transferBytes": 505895
          },
          {
            "domain": "www.youtube.com",
            "count": 3,
            "transferBytes": 379181
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube-nocookie.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446734,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 188799,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 300 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 300 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/evangelists/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/evangelists/",
      "performanceScore": 0.97,
      "bestPracticesScore": 1,
      "transferBytes": 159996,
      "co2Grams": 0.06129149167440001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Evangelists | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page describes the role of W3C Evangelists.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Evangelists",
          "ogDescription": "This page describes the role of W3C Evangelists.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/evangelists/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 26,
          "tabletSmallTapTargets": 26,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 26,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 26,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 26 small targets on mobile and 26 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142541",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edd3d3e89e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:17:17 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0145372c0e1f27",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 16,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25084,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6130,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60694,
        "totalEstimatedBlockingMs": 1216,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1216,
            "displayValue": "Est savings of 1,220 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35610,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6130,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1216 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.78 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 151988
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 148.43 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 148.43 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 159996,
        "css": {
          "unusedBytes": 35610,
          "ratio": 0.22256806420160505,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35610,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 17,
        "urgency": "high",
        "transferBytes": 159996,
        "estimatedDeferrableBytes": 35610,
        "renderBlockingMs": 1216,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35610
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35610,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1216,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 20,
        "urgency": "low",
        "transferBytes": 159996,
        "estimatedRedundantBytes": 35610,
        "redundancyRatio": 0.22256806420160505,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35610,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35610,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 159996,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,220 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,220 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/about/corporation/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/about/corporation/",
      "performanceScore": 0.97,
      "bestPracticesScore": 0.79,
      "transferBytes": 162699,
      "co2Grams": 0.06232696069860001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Corporation | About us | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page focuses on Corporation governance and makes available required information (such as corporation documents, financials).",
          "robots": "",
          "canonical": "",
          "ogTitle": "Corporation",
          "ogDescription": "This page focuses on Corporation governance and makes available required information (such as corporation documents, financials).",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/about/corporation/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 34,
          "tabletSmallTapTargets": 34,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 34,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 34,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 34 small targets on mobile and 34 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142825",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edd715827e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:17:25 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013e78b91c0265",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 15,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25082,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60505,
        "totalEstimatedBlockingMs": 1215,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1215,
            "displayValue": "Est savings of 1,220 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35423,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1215 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.59 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 149086
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 145.59 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 145.59 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 162699,
        "css": {
          "unusedBytes": 35423,
          "ratio": 0.21772106773858474,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35423,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 17,
        "urgency": "high",
        "transferBytes": 162699,
        "estimatedDeferrableBytes": 35423,
        "renderBlockingMs": 1215,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35423
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35423,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1215,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 19,
        "urgency": "low",
        "transferBytes": 162699,
        "estimatedRedundantBytes": 35423,
        "redundancyRatio": 0.21772106773858474,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35423,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35423,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 162699,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,220 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,220 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/policies/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/policies/",
      "performanceScore": 0.97,
      "bestPracticesScore": 1,
      "transferBytes": 161203,
      "co2Grams": 0.06175387092420001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Policies & legal information | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This pages lists the framework of policies, licences, copyright, trademarks, terms and conditions that govern every aspect of making standards and doing work at W3C.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Policies & legal information",
          "ogDescription": "This pages lists the framework of policies, licences, copyright, trademarks, terms and conditions that govern every aspect of making standards and doing work at W3C.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/policies/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 34,
          "tabletSmallTapTargets": 62,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 34,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 62,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 34 small targets on mobile and 62 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "50841",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edda3d9b4e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:17:34 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0a04636f8845fd",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 16,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25082,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60672,
        "totalEstimatedBlockingMs": 1189,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1189,
            "displayValue": "Est savings of 1,190 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35590,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1189 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.76 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 150770.55
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 147.24 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 147.24 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 161203,
        "css": {
          "unusedBytes": 35590,
          "ratio": 0.2207775289541758,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35590,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 161203,
        "estimatedDeferrableBytes": 35590,
        "renderBlockingMs": 1189,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35590
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35590,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1189,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 20,
        "urgency": "low",
        "transferBytes": 161203,
        "estimatedRedundantBytes": 35590,
        "redundancyRatio": 0.2207775289541758,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35590,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35590,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 161203,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,190 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,190 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/contact/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/contact/",
      "performanceScore": 0.96,
      "bestPracticesScore": 1,
      "transferBytes": 184579,
      "co2Grams": 0.07070878173060001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Contact | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page describes the various ways to contact W3C based on several needs.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Contact",
          "ogDescription": "This page describes the various ways to contact W3C based on several needs.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/contact/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 27,
          "tabletSmallTapTargets": 28,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 27,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 28,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 27 small targets on mobile and 28 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142842",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0eddd6f85ce5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:17:42 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013e78be309f05",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 14,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60543,
        "totalEstimatedBlockingMs": 1182,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1182,
            "displayValue": "Est savings of 1,180 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35460,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1182 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.63 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 175772.76666666666
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 171.65 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 171.65 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 7,
        "urgency": "low",
        "transferBytes": 184579,
        "css": {
          "unusedBytes": 35460,
          "ratio": 0.19211286224326712,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35460,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 184579,
        "estimatedDeferrableBytes": 35460,
        "renderBlockingMs": 1182,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35460
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35460,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1182,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 18,
        "urgency": "low",
        "transferBytes": 184579,
        "estimatedRedundantBytes": 35460,
        "redundancyRatio": 0.19211286224326712,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35460,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35460,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 184579,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,180 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,180 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/help/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/help/",
      "performanceScore": 0.94,
      "bestPracticesScore": 1,
      "transferBytes": 254894,
      "co2Grams": 0.09764515037159999,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Help | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Help page",
          "robots": "",
          "canonical": "",
          "ogTitle": "Help",
          "ogDescription": "Help page",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/help/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 59,
          "tabletSmallTapTargets": 72,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 1,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 1,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 518,
            "viewportHeight": 1122,
            "contentWidth": 518,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 59,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 1
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 72,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 59 small targets on mobile and 72 on tablet."
          },
          {
            "title": "Make grid layouts breakpoint-aware",
            "urgency": "medium",
            "detail": "1 grid container(s) overflowed across tested viewports (1 on mobile, 0 on tablet). Use intrinsic tracks (minmax(), fr), wrapping, and breakpoint-aware grid templates."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142885",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ede0c3b4be5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:17:50 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013da28bfd5792",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 25,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 64564.35,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "low",
            "estimatedSavingsBytes": 39482.35,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "low",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 38.56 KB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 131005.35,
        "totalEstimatedBlockingMs": 1214,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1214,
            "displayValue": "Est savings of 1,210 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35757,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 39482.35,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 39 KiB",
            "urgency": "low",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 30684,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 30 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1214 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.92 KB."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "low",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 38.56 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "low",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 29.96 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 175000.36173184356
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 170.90 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 170.90 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 254894,
        "css": {
          "unusedBytes": 35757,
          "ratio": 0.14028184264831656,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35757,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 15,
        "urgency": "high",
        "transferBytes": 254894,
        "estimatedDeferrableBytes": 35757,
        "renderBlockingMs": 1214,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35757
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35757,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1214,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 76509,
            "url": "https://www.w3.org/20/img/event/0O4A8746_large.jpg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 15,
        "urgency": "low",
        "transferBytes": 254894,
        "estimatedRedundantBytes": 35757,
        "redundancyRatio": 0.14028184264831656,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35757,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35757,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 254894,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0,
          "displayValue": "Est savings of 39 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 39 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,210 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,210 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.83,
          "displayValue": "2.8 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/help/search/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/help/search/",
      "performanceScore": 0.96,
      "bestPracticesScore": 1,
      "transferBytes": 158886,
      "co2Grams": 0.06086627132040001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 0,
        "components": [
          {
            "signature": "search|get|/help/search|input|search|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "search",
            "controlType": "search",
            "fieldName": "q",
            "formContext": "search|get|/help/search",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Search | Help | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Information on searching the W3C website",
          "robots": "",
          "canonical": "",
          "ogTitle": "Search",
          "ogDescription": "Information on searching the W3C website",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/help/search/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 11,
          "tabletSmallTapTargets": 9,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 11,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 9,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 11 small targets on mobile and 9 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "120831",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ede3e987be5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:17:58 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f03584229597f47",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 16,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60120,
        "totalEstimatedBlockingMs": 1201,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1201,
            "displayValue": "Est savings of 1,200 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35037,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1201 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.22 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 151982
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 148.42 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 148.42 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 158886,
        "css": {
          "unusedBytes": 35037,
          "ratio": 0.2205165968052566,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35037,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 158886,
        "estimatedDeferrableBytes": 35037,
        "renderBlockingMs": 1201,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35037
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35037,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1201,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 20,
        "urgency": "low",
        "transferBytes": 158886,
        "estimatedRedundantBytes": 35037,
        "redundancyRatio": 0.2205165968052566,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35037,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35037,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 158886,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,200 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,200 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/users/myprofile/",
      "status": "ok",
      "finalUrl": "https://auth.w3.org/login",
      "performanceScore": 0.85,
      "bestPracticesScore": 1,
      "transferBytes": 193002,
      "co2Grams": 0.07393547636280001,
      "greenWeb": {
        "page": {
          "hostname": "auth.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-04-30T08:55:47",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/auth.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.w3.org",
            "resourceType": "stylesheet",
            "requestCount": 3,
            "transferBytes": 57074,
            "sampleUrl": "https://www.w3.org/assets/website-2021/styles/core.css?ver=1.5",
            "greenCheck": {
              "hostname": "www.w3.org",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-24T08:50:00",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
              "error": null
            }
          },
          {
            "hostname": "www.w3.org",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 21454,
            "sampleUrl": "https://www.w3.org/assets/website-2021/js/libraries/fontfaceobserver.js",
            "greenCheck": {
              "hostname": "www.w3.org",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-24T08:50:00",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 2,
          "greenCount": 3,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 46.666666666666664,
        "urgency": "medium",
        "pageElementOccurrences": 3,
        "uniqueElementsAssessed": 3,
        "reusedFromCacheCount": 3,
        "components": [
          {
            "signature": "form|post|/login|input|text|_username|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "_username",
            "formContext": "form|post|/login",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|post|/login|input|password|_password|no-autocomplete|required|no-pattern|no-minlength",
            "role": "form",
            "controlType": "password",
            "fieldName": "_password",
            "formContext": "form|post|/login",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 30,
              "urgency": "medium",
              "issues": [
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|post|/login|input|checkbox|_remember_me|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "_remember_me",
            "formContext": "form|post|/login",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "3 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "W3C Authentication Platform | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The World Wide Web Consortium (W3C) is an international community where Member organizations, a full-time staff, and the public work together to develop Web standards.",
          "robots": "",
          "canonical": "",
          "ogTitle": "W3C Authentication Platform",
          "ogDescription": "The World Wide Web Consortium (W3C) is an international community where Member organizations, a full-time staff, and the public work together to develop Web standards.",
          "ogType": "website",
          "ogUrl": "https://auth.w3.org/login",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 10,
          "tabletSmallTapTargets": 10,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 10,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 10,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 10 small targets on mobile and 10 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": false,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "no-cache",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9f0ede73bb70e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'none'; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:18:07 GMT",
            "expires": "Thu, 23 Apr 2026 18:18:07 GMT",
            "priority": "u=0,i",
            "request-id": "a3465ba9-dff5-48b2-984a-7fabdead767a",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-request-id": "9f0ede73bb70e5eb"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Enable Strict-Transport-Security",
            "urgency": "medium",
            "detail": "Set a Strict-Transport-Security header to enforce HTTPS on repeat visits."
          },
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 50,
        "urgency": "medium",
        "origin": "https://auth.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://auth.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://auth.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://auth.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://auth.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://auth.w3.org/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 80,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": false,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "12.3",
            "title": "No reduced motion support",
            "urgency": "low",
            "detail": "Implement prefers-reduced-motion to allow users to disable animations, reducing compute and improving accessibility.",
            "wsid": "12.control animation",
            "assessor": "script",
            "example": "@media (prefers-reduced-motion: reduce) {\n  *, ::before, ::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n}"
          },
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 13,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6130,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 85457,
        "totalEstimatedBlockingMs": 1058,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1058,
            "displayValue": "Est savings of 1,060 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 36135,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 24239,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 24 KiB",
            "urgency": "low",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6130,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1058 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.29 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "low",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 23.67 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 150882
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 147.35 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 147.35 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 12,
        "urgency": "low",
        "transferBytes": 193002,
        "css": {
          "unusedBytes": 36135,
          "ratio": 0.18722603910840302,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 24239,
          "duplicatedBytes": 0,
          "ratio": 0.12558937213085875,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 36135,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "medium",
            "estimatedSavingsBytes": 24239,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 18,
        "urgency": "high",
        "transferBytes": 193002,
        "estimatedDeferrableBytes": 60374,
        "renderBlockingMs": 1058,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 24239,
          "unusedCssSavings": 36135
        },
        "candidates": [
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "medium",
            "estimatedSavingsBytes": 24239,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 36135,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1058,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 8,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 21454,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.w3.org",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 21454,
            "sampleUrl": "https://www.w3.org/assets/website-2021/js/libraries/fontfaceobserver.js",
            "greenCheck": {
              "hostname": "www.w3.org",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-24T08:50:00",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 25,
        "urgency": "low",
        "transferBytes": 193002,
        "estimatedRedundantBytes": 60374,
        "redundancyRatio": 0.31281541123926176,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 36135,
            "displayValue": "Est savings of 35 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 24239,
            "displayValue": "Est savings of 24 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 36135,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "medium",
            "estimatedSavingsBytes": 24239,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 3,
        "urgency": "low",
        "totalTransferBytes": 193002,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 24 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 24 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,060 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,060 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.59,
          "displayValue": "3.7 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 3.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/mission/accessibility/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/mission/accessibility/",
      "performanceScore": 0.95,
      "bestPracticesScore": 0.79,
      "transferBytes": 1196449,
      "co2Grams": 0.4583373579486001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446739,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332331,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 59166,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 46859,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 5,
          "greenCount": 6,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Accessibility | Our mission | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page gives a high-level introduction to web accessibility and what the W3C Web Accessibility Initiative (WAI) does.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Accessibility",
          "ogDescription": "This page gives a high-level introduction to web accessibility and what the W3C Web Accessibility Initiative (WAI) does.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/mission/accessibility/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 26,
          "tabletSmallTapTargets": 27,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 26,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 27,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 26 small targets on mobile and 27 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142513",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edeae3950e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:18:16 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0147578d83191b",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 2,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25084,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6130,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60074,
        "totalEstimatedBlockingMs": 300,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 34990,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 300,
            "displayValue": "Est savings of 300 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6130,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.17 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 300 ms."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 179742.75
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 175.53 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 175.53 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 1196449,
        "css": {
          "unusedBytes": 34990,
          "ratio": 0.029244873789020676,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 34990,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 4,
        "urgency": "medium",
        "transferBytes": 1196449,
        "estimatedDeferrableBytes": 34990,
        "renderBlockingMs": 300,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 34990
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 34990,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 300,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube-nocookie.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446739,
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 188802,
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 53,
        "urgency": "medium",
        "providerCount": 3,
        "requestCount": 4,
        "transferBytes": 802760,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446739,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332331,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 12,
        "urgency": "low",
        "transferBytes": 1196449,
        "estimatedRedundantBytes": 34990,
        "redundancyRatio": 0.029244873789020676,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 34990,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 34990,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 35,
        "urgency": "medium",
        "totalTransferBytes": 1196449,
        "heavyRequestCount": 5,
        "heavyBytes": 885095,
        "heavyRatio": 0.7397682642553088,
        "heavyRequests": [
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446739,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188802,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143529,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "transferSize": 59166,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 46859,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 779070
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106025
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.youtube-nocookie.com",
            "count": 2,
            "transferBytes": 505905
          },
          {
            "domain": "www.youtube.com",
            "count": 3,
            "transferBytes": 379190
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube-nocookie.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446739,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 188802,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 300 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 300 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.88,
          "displayValue": "2.6 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/mission/internationalization/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/mission/internationalization/",
      "performanceScore": 0.95,
      "bestPracticesScore": 0.79,
      "transferBytes": 1181236,
      "co2Grams": 0.45250954061040005,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446527,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332345,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 59170,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/bcd88ad3/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 46864,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 5,
          "greenCount": 6,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Internationalization | Our mission | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page gives a high-level introduction to Internationalization.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Internationalization",
          "ogDescription": "This page gives a high-level introduction to Internationalization.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/mission/internationalization/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 20,
          "tabletSmallTapTargets": 23,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 20,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 23,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 20 small targets on mobile and 23 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142522",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edee9bdb6e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:18:26 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f01475d4e2e191b",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 2,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60672,
        "totalEstimatedBlockingMs": 463,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35589,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 463,
            "displayValue": "Est savings of 460 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.75 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 463 ms."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 169407.75
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 165.44 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 165.44 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 1181236,
        "css": {
          "unusedBytes": 35589,
          "ratio": 0.030128611048088613,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35589,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 5,
        "urgency": "medium",
        "transferBytes": 1181236,
        "estimatedDeferrableBytes": 35589,
        "renderBlockingMs": 463,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35589
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35589,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 463,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube-nocookie.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446527,
            "url": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 188809,
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 53,
        "urgency": "medium",
        "providerCount": 3,
        "requestCount": 4,
        "transferBytes": 802562,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446527,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332345,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 7,
        "urgency": "low",
        "transferBytes": 1181236,
        "estimatedRedundantBytes": 35589,
        "redundancyRatio": 0.030128611048088613,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35589,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35589,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 35,
        "urgency": "medium",
        "totalTransferBytes": 1181236,
        "heavyRequestCount": 5,
        "heavyBytes": 884906,
        "heavyRatio": 0.7491356511315267,
        "heavyRequests": [
          {
            "url": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446527,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188809,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143536,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube-nocookie.com/s/player/bcd88ad3/www-player.css",
            "transferSize": 59170,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 46864,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 778872
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106034
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.youtube-nocookie.com",
            "count": 2,
            "transferBytes": 505697
          },
          {
            "domain": "www.youtube.com",
            "count": 3,
            "transferBytes": 379209
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube-nocookie.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446527,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 188809,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 460 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 460 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.89,
          "displayValue": "2.5 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/mission/privacy/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/mission/privacy/",
      "performanceScore": 0.95,
      "bestPracticesScore": 0.79,
      "transferBytes": 1189893,
      "co2Grams": 0.45582587629020005,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446746,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332347,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 59172,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 46865,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 5,
          "greenCount": 6,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Privacy | Our mission | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page gives a high-level introduction to Privacy.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Privacy",
          "ogDescription": "This page gives a high-level introduction to Privacy.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/mission/privacy/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 29,
          "tabletSmallTapTargets": 34,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 29,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 34,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 29 small targets on mobile and 34 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142935",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edf26a809e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:18:35 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013d7f0c8fd9ca",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 2,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25082,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18953,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60365,
        "totalEstimatedBlockingMs": 306,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35283,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 306,
            "displayValue": "Est savings of 310 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18953,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 306 ms."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 174258.5
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 170.17 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 170.17 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 1189893,
        "css": {
          "unusedBytes": 35283,
          "ratio": 0.0296522460422912,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35283,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 4,
        "urgency": "medium",
        "transferBytes": 1189893,
        "estimatedDeferrableBytes": 35283,
        "renderBlockingMs": 306,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35283
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35283,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 306,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube-nocookie.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446746,
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 188810,
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 53,
        "urgency": "medium",
        "providerCount": 3,
        "requestCount": 4,
        "transferBytes": 802783,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446746,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332347,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 12,
        "urgency": "low",
        "transferBytes": 1189893,
        "estimatedRedundantBytes": 35283,
        "redundancyRatio": 0.0296522460422912,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35283,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35283,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 35,
        "urgency": "medium",
        "totalTransferBytes": 1189893,
        "heavyRequestCount": 5,
        "heavyBytes": 885130,
        "heavyRatio": 0.7438736088034806,
        "heavyRequests": [
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446746,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188810,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143537,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "transferSize": 59172,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 46865,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 779093
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106037
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.youtube-nocookie.com",
            "count": 2,
            "transferBytes": 505918
          },
          {
            "domain": "www.youtube.com",
            "count": 3,
            "transferBytes": 379212
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube-nocookie.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446746,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 188810,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 310 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 310 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.88,
          "displayValue": "2.6 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/mission/security/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/mission/security/",
      "performanceScore": 0.95,
      "bestPracticesScore": 0.79,
      "transferBytes": 1184867,
      "co2Grams": 0.4539005091738001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446747,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332353,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 59173,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 46870,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 5,
          "greenCount": 6,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Web Security | Our mission | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This page gives a high-level introduction to web security.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Web Security",
          "ogDescription": "This page gives a high-level introduction to web security.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/mission/security/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 25,
          "tabletSmallTapTargets": 36,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 25,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 36,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 25 small targets on mobile and 36 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142540",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edf63ee21e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:18:45 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f014764ed6d191b",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 2,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60675,
        "totalEstimatedBlockingMs": 300,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35592,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 300,
            "displayValue": "Est savings of 300 ms",
            "urgency": "medium",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.76 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "medium",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 300 ms."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 170820.5
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 166.82 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 166.82 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 1,
        "urgency": "low",
        "transferBytes": 1184867,
        "css": {
          "unusedBytes": 35592,
          "ratio": 0.030038814482975726,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35592,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 4,
        "urgency": "medium",
        "transferBytes": 1184867,
        "estimatedDeferrableBytes": 35592,
        "renderBlockingMs": 300,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35592
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35592,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 300,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube-nocookie.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446747,
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 188813,
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 53,
        "urgency": "medium",
        "providerCount": 3,
        "requestCount": 4,
        "transferBytes": 802790,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446747,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332353,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 9,
        "urgency": "low",
        "transferBytes": 1184867,
        "estimatedRedundantBytes": 35592,
        "redundancyRatio": 0.030038814482975726,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35592,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35592,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 35,
        "urgency": "medium",
        "totalTransferBytes": 1184867,
        "heavyRequestCount": 5,
        "heavyBytes": 885143,
        "heavyRatio": 0.7470399631351029,
        "heavyRequests": [
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446747,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188813,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143540,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "transferSize": 59173,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 46870,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 779100
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106043
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.youtube-nocookie.com",
            "count": 2,
            "transferBytes": 505920
          },
          {
            "domain": "www.youtube.com",
            "count": 3,
            "transferBytes": 379223
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube-nocookie.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446747,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 188813,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 300 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 300 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/ecosystems/e-commerce/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ecosystems/e-commerce/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 701325,
      "co2Grams": 0.26866456285500007,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "E-commerce | Business Ecosystems | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The page introduces the concept of payments and commerce applied to the web, and what is done for them at the Web Consortium.",
          "robots": "",
          "canonical": "",
          "ogTitle": "E-commerce",
          "ogDescription": "The page introduces the concept of payments and commerce applied to the web, and what is done for them at the Web Consortium.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ecosystems/e-commerce/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 13,
          "tabletSmallTapTargets": 16,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 4,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 13,
            "oversizedMedia": 0,
            "gridContainersDetected": 2,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 16,
            "oversizedMedia": 0,
            "gridContainersDetected": 2,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 13 small targets on mobile and 16 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58846",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edf9c1acce5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:18:54 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0942ebb801cab0",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,ecosystems,blogPosts,newsArticles,pressReleases,testimonial"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 23,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 9,
          "imagesWithLazy": 4,
          "imagesWithoutLazy": 5
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "5 of 9 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 12,
            "lazyImages": 7,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 7/12 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 78,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 543550.8,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 537421.8,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 524.83 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 832370.8,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 537421.8,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 525 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 288820,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 282 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 524.83 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 282.05 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 679805.95
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 663.87 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 663.87 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 701325,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 701325,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 574717,
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/payments-shutterstock_605410205-1024.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 701325,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 34,
        "urgency": "medium",
        "totalTransferBytes": 701325,
        "heavyRequestCount": 1,
        "heavyBytes": 574717,
        "heavyRatio": 0.8194731401276156,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/payments-shutterstock_605410205-1024.png",
            "transferSize": 574717,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 574717
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 1,
            "transferBytes": 574717
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy image asset from www.w3.org",
            "urgency": "high",
            "estimatedSavingsBytes": 574717,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/payments-shutterstock_605410205-1024.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 525 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 525 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/ecosystems/media/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ecosystems/media/",
      "performanceScore": 0.93,
      "bestPracticesScore": 1,
      "transferBytes": 171931,
      "co2Grams": 0.06586356818340001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Media & Entertainment | Business Ecosystems | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The page introduces the concept of Media and Entertainment applied to the web, and what is done for them at the Web Consortium.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Media & Entertainment",
          "ogDescription": "The page introduces the concept of Media and Entertainment applied to the web, and what is done for them at the Web Consortium.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ecosystems/media/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 16,
          "tabletSmallTapTargets": 26,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 4,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 16,
            "oversizedMedia": 0,
            "gridContainersDetected": 2,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 26,
            "oversizedMedia": 0,
            "gridContainersDetected": 2,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 16 small targets on mobile and 26 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58166",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0edfd40f13e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:19:03 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0953bacb5f2d36",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,ecosystems,blogPosts,newsArticles,pressReleases,testimonial"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 20,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 10,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 5
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 12,
            "lazyImages": 7,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 7/12 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 17,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 29046.7,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "low",
            "estimatedSavingsBytes": 22917.7,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "low",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 22.38 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 51845.7,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 22917.7,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 22 KiB",
            "urgency": "low",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 22799,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 22 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "low",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 22.38 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "low",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 22.26 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 156770.01666666666
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 153.10 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 153.10 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 171931,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 171931,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 171931,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 171931,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 22 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 22 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/ecosystems/publishing/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ecosystems/publishing/",
      "performanceScore": 0.96,
      "bestPracticesScore": 0.79,
      "transferBytes": 1233719,
      "co2Grams": 0.4726148017266001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446747,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332353,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 59173,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 46870,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 5,
          "greenCount": 6,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Publishing | Business Ecosystems | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The page introduces the concept of Publishing applied to the web, and what is done in that space at the Web Consortium.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Publishing",
          "ogDescription": "The page introduces the concept of Publishing applied to the web, and what is done in that space at the Web Consortium.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ecosystems/publishing/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 36,
          "tabletSmallTapTargets": 40,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 4,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 36,
            "oversizedMedia": 0,
            "gridContainersDetected": 2,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 40,
            "oversizedMedia": 0,
            "gridContainersDetected": 2,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 36 small targets on mobile and 40 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58746",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee0123bcee5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:19:13 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0945d33acb2549",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,ecosystems,blogPosts,newsArticles,pressReleases,testimonial"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 20,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 16,
          "imagesWithLazy": 11,
          "imagesWithoutLazy": 5
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 14,
            "lazyImages": 9,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 9/14 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 3,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 40202.6,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "low",
            "estimatedSavingsBytes": 31852.6,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 8350,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "low",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 31.11 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 8.15 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 79297.6,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 39095,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 38 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 31852.6,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 31 KiB",
            "urgency": "low",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 8350,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 8 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Right-size images for viewport",
            "urgency": "low",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 38.18 KB."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "low",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 31.11 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 8.15 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 213294.81666666665
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 208.30 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 208.30 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 1233719,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 1233719,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube-nocookie.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446747,
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 188813,
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 78395,
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/spencer-DXobXpIa9_4-unsplash.jpg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 53,
        "urgency": "medium",
        "providerCount": 3,
        "requestCount": 4,
        "transferBytes": 802790,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446747,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332353,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 1233719,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 34,
        "urgency": "medium",
        "totalTransferBytes": 1233719,
        "heavyRequestCount": 5,
        "heavyBytes": 885143,
        "heavyRatio": 0.7174591620944477,
        "heavyRequests": [
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446747,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188813,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143540,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "transferSize": 59173,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 46870,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 779100
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106043
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.youtube-nocookie.com",
            "count": 2,
            "transferBytes": 505920
          },
          {
            "domain": "www.youtube.com",
            "count": 3,
            "transferBytes": 379223
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy script asset from www.youtube-nocookie.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446747,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 188813,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 31 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 31 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/2024/09/TPAC/w3c-30.html",
      "status": "ok",
      "finalUrl": "https://www.w3.org/2024/09/TPAC/w3c-30.html",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2926789,
      "co2Grams": 1.1211984276246,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 6,
            "transferBytes": 779102,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 4,
            "transferBytes": 106045,
            "sampleUrl": "https://www.youtube.com/s/player/8456c9de/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          },
          {
            "hostname": "static.doubleclick.net",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 495,
            "sampleUrl": "https://static.doubleclick.net/instream/ad_status.js",
            "greenCheck": {
              "hostname": "static.doubleclick.net",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:51:23",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/static.doubleclick.net",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 4,
          "greenCount": 5,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 50,
        "urgency": "medium",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 0,
        "components": [
          {
            "signature": "no-form|input|checkbox|anonymous|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": null,
            "formContext": "no-form",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 45,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "W3C @ 30",
          "lang": "en-us",
          "charset": "",
          "viewport": "width=device-width",
          "description": "",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 47,
          "tabletSmallTapTargets": 53,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 6,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 47,
            "oversizedMedia": 0,
            "gridContainersDetected": 3,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 53,
            "oversizedMedia": 0,
            "gridContainersDetected": 3,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 47 small targets on mobile and 53 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 29,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": false,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "2107249",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=2592001",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee0257b8be5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=utf-8",
            "date": "Thu, 23 Apr 2026 18:19:16 GMT",
            "last-modified": "Mon, 26 May 2025 13:50:00 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "vary": "Accept-Encoding",
            "x-backend": "www-mirrors",
            "x-content-type-options": "nosniff",
            "x-request-id": "9e45e99edb0f29ab"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Enable Strict-Transport-Security",
            "urgency": "medium",
            "detail": "Set a Strict-Transport-Security header to enforce HTTPS on repeat visits."
          },
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 50,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 34,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 34
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "34 of 34 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 34,
            "lazyImages": 0,
            "totalIframes": 2,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"My Lato\", Lato, \"Open Sans\", \"Liberation Sans\", \"Helvetica Neue\", Arial, Helvetica, \"My DejaVu Sans Subset\", sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 0/34 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 15,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 440278,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 368008,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "medium",
            "estimatedSavingsBytes": 62235,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 7892,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 2143,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 359.38 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "medium",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 60.78 KB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 7.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 2.09 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 900379,
        "totalEstimatedBlockingMs": 4218,
        "opportunities": [
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 430582,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 420 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 368008,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 359 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 4218,
            "displayValue": "Est savings of 4,220 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 62235,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 61 KiB",
            "urgency": "medium",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 29519,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 29 KiB",
            "urgency": "low",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 7892,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 8 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 2143,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 2 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 420.49 KB."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 359.38 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 4218 ms."
          },
          {
            "title": "Compress oversized image assets",
            "urgency": "medium",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss. Estimated byte savings: 60.78 KB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "low",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 28.83 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 7.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 457537.2118365921
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 446.81 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 446.81 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 2926789,
        "css": {
          "unusedBytes": 29519,
          "ratio": 0.010085797097091728,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 29519,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 15,
        "urgency": "high",
        "transferBytes": 2926789,
        "estimatedDeferrableBytes": 29519,
        "renderBlockingMs": 4218,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 29519
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 29519,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 4218,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446749,
            "url": "https://www.youtube.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 280440,
            "url": "https://www.w3.org/2024/09/TPAC/images/ND_crop.jpeg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy font from www.w3.org",
            "area": "font",
            "urgency": "high",
            "estimatedSavingsBytes": 219441,
            "url": "https://www.w3.org/2019/09/TPAC-template/fonts/Lato-Italic.woff2",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 65,
        "urgency": "high",
        "providerCount": 3,
        "requestCount": 10,
        "transferBytes": 803287,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 6,
            "transferBytes": 779102,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          },
          {
            "hostname": "static.doubleclick.net",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 495,
            "sampleUrl": "https://static.doubleclick.net/instream/ad_status.js",
            "greenCheck": {
              "hostname": "static.doubleclick.net",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:51:23",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/static.doubleclick.net",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "high",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 2926789,
        "estimatedRedundantBytes": 29519,
        "redundancyRatio": 0.010085797097091728,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 29519,
            "displayValue": "Est savings of 29 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 29519,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 38,
        "urgency": "high",
        "totalTransferBytes": 2926789,
        "heavyRequestCount": 11,
        "heavyBytes": 2081598,
        "heavyRatio": 0.7112224352353381,
        "heavyRequests": [
          {
            "url": "https://www.youtube.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446749,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.w3.org/2024/09/TPAC/images/ND_crop.jpeg",
            "transferSize": 280440,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.w3.org/2019/09/TPAC-template/fonts/Lato-Italic.woff2",
            "transferSize": 219441,
            "resourceType": "font",
            "mimeType": "font/woff2",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.w3.org/2019/09/TPAC-template/fonts/Lato-Bold.woff2",
            "transferSize": 207838,
            "resourceType": "font",
            "mimeType": "font/woff2",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.w3.org/2019/09/TPAC-template/fonts/Lato-Regular.woff2",
            "transferSize": 205067,
            "resourceType": "font",
            "mimeType": "font/woff2",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.w3.org/2019/09/TPAC-template/fonts/Lato-Black.woff2",
            "transferSize": 202184,
            "resourceType": "font",
            "mimeType": "font/woff2",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188813,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143540,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.w3.org/2019/09/TPAC-template/fonts/Montserrat-Black.woff2",
            "transferSize": 81481,
            "resourceType": "font",
            "mimeType": "font/woff2",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.youtube.com/s/player/8456c9de/www-player.css",
            "transferSize": 59175,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 46870,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "font",
            "count": 5,
            "transferBytes": 916011
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 779102
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 280440
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106045
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 6,
            "transferBytes": 1196451
          },
          {
            "domain": "www.youtube.com",
            "count": 5,
            "transferBytes": 885147
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446749,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from www.w3.org",
            "urgency": "high",
            "estimatedSavingsBytes": 280440,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://www.w3.org/2024/09/TPAC/images/ND_crop.jpeg",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy font asset from www.w3.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 219441,
            "strategy": "Subset or defer this font so full font payloads are only fetched when needed.",
            "url": "https://www.w3.org/2019/09/TPAC-template/fonts/Lato-Italic.woff2",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "13.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 13.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.07,
          "displayValue": "10.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 29 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 29 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 4,220 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 4,220 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 359 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 359 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 61 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 61 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoid enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": 0.5,
          "displayValue": "Total size was 2,858 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoid enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- Current value: Total size was 2,858 KiB\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/membership/list/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/membership/list/",
      "performanceScore": 0.92,
      "bestPracticesScore": 1,
      "transferBytes": 301271,
      "co2Grams": 0.11541131645939999,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 52.5,
        "urgency": "medium",
        "pageElementOccurrences": 4,
        "uniqueElementsAssessed": 4,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|self|select|select|initial|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "select",
            "fieldName": "initial",
            "formContext": "form|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|get|self|input|text|anonymous|off|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": null,
            "formContext": "form|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|self|select|select|countries[]|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "select",
            "fieldName": "countries[]",
            "formContext": "form|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|self|select|select|ecosystem|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "select",
            "fieldName": "ecosystem",
            "formContext": "form|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "4 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "4 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Current Members & Testimonials",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The World Wide Web Consortium (W3C) is an international community where Member organizations, a full-time staff, and the public work together to develop Web standards.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Our members",
          "ogDescription": "The World Wide Web Consortium (W3C) is an international community where Member organizations, a full-time staff, and the public work together to develop Web standards.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/membership/list/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 294,
          "tabletSmallTapTargets": 328,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 294,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 328,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 294 small targets on mobile and 328 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "3112",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "max-age=0, public, s-maxage=3600",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee0b97e71e5eb-IAD",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "date": "Thu, 23 Apr 2026 18:19:40 GMT",
            "last-modified": "Thu, 23 Apr 2026 17:27:47 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Accept-Encoding",
            "x-backend": "sf-main",
            "x-content-type-options": "nosniff",
            "x-request-id": "9f0e94b9ea834855"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 20,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 158,
          "imagesWithLazy": 155,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 158,
            "lazyImages": 155,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 155/158 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 17,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 50876.15,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 41927,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "low",
            "estimatedSavingsBytes": 8949.15,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 40.94 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "low",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 8.74 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 137437.15,
        "totalEstimatedBlockingMs": 1309,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1309,
            "displayValue": "Est savings of 1,310 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 51289,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 50 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 41927,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 41 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35272,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 34 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 8949.15,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 9 KiB",
            "urgency": "low",
            "sourceAuditId": "modern-image-formats"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1309 ms."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "medium",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 50.09 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "medium",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 40.94 KB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.45 KB."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "low",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 8.74 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 233854
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 228.37 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 228.37 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 14,
        "urgency": "medium",
        "transferBytes": 301271,
        "css": {
          "unusedBytes": 35272,
          "ratio": 0.11707731577217853,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 51289,
          "duplicatedBytes": 0,
          "ratio": 0.17024207441141032,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35272,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "medium",
            "estimatedSavingsBytes": 51289,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 21,
        "urgency": "high",
        "transferBytes": 301271,
        "estimatedDeferrableBytes": 86561,
        "renderBlockingMs": 1309,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 51289,
          "unusedCssSavings": 35272
        },
        "candidates": [
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "medium",
            "estimatedSavingsBytes": 51289,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35272,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1309,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.w3.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 113496,
            "url": "https://www.w3.org/assets/website-2021/js/multiselect.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 31,
        "urgency": "medium",
        "transferBytes": 301271,
        "estimatedRedundantBytes": 86561,
        "redundancyRatio": 0.2873193901835889,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 51289,
            "displayValue": "Est savings of 50 KiB"
          },
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35272,
            "displayValue": "Est savings of 34 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused javascript",
            "urgency": "medium",
            "estimatedSavingsBytes": 51289,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35272,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 20,
        "urgency": "low",
        "totalTransferBytes": 301271,
        "heavyRequestCount": 1,
        "heavyBytes": 113496,
        "heavyRatio": 0.37672394621453775,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/assets/website-2021/js/multiselect.js",
            "transferSize": 113496,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 113496
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 1,
            "transferBytes": 113496
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "medium",
            "estimatedSavingsBytes": 51289,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.w3.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 113496,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.w3.org/assets/website-2021/js/multiselect.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 50 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 50 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 34 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 34 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,310 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,310 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.81,
          "displayValue": "2.9 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 9 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 9 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "3,107 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 3,107 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/news/2026/first-public-working-drafts-for-the-linked-web-storage-lws-1-0-authentication-suite/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/news/2026/first-public-working-drafts-for-the-linked-web-storage-lws-1-0-authentication-suite/",
      "performanceScore": 0.96,
      "bestPracticesScore": 1,
      "transferBytes": 160645,
      "co2Grams": 0.06154011150300001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "First Public Working Drafts for the Linked Web Storage (LWS) 1.0 Authentication Suite | 2026 | News | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The Linked Web Storage Working Group has published four First Public Working Drafts for the Linked Web Storage (LWS) 1.0 Authentication Suite.",
          "robots": "",
          "canonical": "",
          "ogTitle": "First Public Working Drafts for the Linked Web Storage (LWS) 1.0 Authentication Suite",
          "ogDescription": "The Linked Web Storage Working Group has published four First Public Working Drafts for the Linked Web Storage (LWS) 1.0 Authentication Suite.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/news/2026/first-public-working-drafts-for-the-linked-web-storage-lws-1-0-authentication-suite/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 13,
          "tabletSmallTapTargets": 16,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 13,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 16,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 13 small targets on mobile and 16 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58938",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee0f04a0be5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:19:49 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0942029a78915d",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,newsArticles,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 16,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60972,
        "totalEstimatedBlockingMs": 1202,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1202,
            "displayValue": "Est savings of 1,200 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35889,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1202 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.05 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 153204
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 149.61 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 149.61 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 160645,
        "css": {
          "unusedBytes": 35889,
          "ratio": 0.2234056459896044,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35889,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 160645,
        "estimatedDeferrableBytes": 35889,
        "renderBlockingMs": 1202,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35889
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35889,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1202,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 20,
        "urgency": "low",
        "transferBytes": 160645,
        "estimatedRedundantBytes": 35889,
        "redundancyRatio": 0.2234056459896044,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35889,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35889,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 160645,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,200 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,200 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/news/2026/five-first-public-working-drafts-published-by-the-verifiable-credentials-working-group/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/news/2026/five-first-public-working-drafts-published-by-the-verifiable-credentials-working-group/",
      "performanceScore": 0.97,
      "bestPracticesScore": 1,
      "transferBytes": 161224,
      "co2Grams": 0.0617619156336,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Five First Public Working Drafts published by the Verifiable Credentials Working Group | 2026 | News | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "The Verifiable Credentials Working Group has published the following five First Public Working Drafts: Verifiable Credential Data Integrity 1.1, Data Integrity EdDSA Cryptosuites v1.1, Data Integrity ECDSA Cryptosuites v1.1,  VCALM v1.0, and Verifiable Credential Barcodes v1.0.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Five First Public Working Drafts published by the Verifiable Credentials Working Group",
          "ogDescription": "The Verifiable Credentials Working Group has published the following five First Public Working Drafts: Verifiable Credential Data Integrity 1.1, Data Integrity EdDSA Cryptosuites v1.1, Data Integrity ECDSA Cryptosuites v1.1,  VCALM v1.0, and Verifiable Credential Barcodes v1.0.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/news/2026/five-first-public-working-drafts-published-by-the-verifiable-credentials-working-group/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 16,
          "tabletSmallTapTargets": 18,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 16,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 18,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 16 small targets on mobile and 18 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58375",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee124497ee5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:19:57 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f094ff1dd9a92fc",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,newsArticles,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 16,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 61110,
        "totalEstimatedBlockingMs": 1198,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1198,
            "displayValue": "Est savings of 1,200 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 36027,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1198 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.18 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 153197
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 149.61 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 149.61 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 161224,
        "css": {
          "unusedBytes": 36027,
          "ratio": 0.22345928645859178,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 36027,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 161224,
        "estimatedDeferrableBytes": 36027,
        "renderBlockingMs": 1198,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 36027
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 36027,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1198,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 20,
        "urgency": "low",
        "transferBytes": 161224,
        "estimatedRedundantBytes": 36027,
        "redundancyRatio": 0.22345928645859178,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 36027,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 36027,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 161224,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,200 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,200 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/blog/2026/2026-breakouts-day-recap/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/blog/2026/2026-breakouts-day-recap/",
      "performanceScore": 0.96,
      "bestPracticesScore": 1,
      "transferBytes": 169453,
      "co2Grams": 0.06491429247420001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "2026 Breakouts Day recap | 2026 | Blog | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "Breakouts Day 2026 was the third edition of W3C’s fully remote community driven information sharing event. In this post we summarize key aspects of the event.",
          "robots": "",
          "canonical": "",
          "ogTitle": "2026 Breakouts Day recap",
          "ogDescription": "Breakouts Day 2026 was the third edition of W3C’s fully remote community driven information sharing event. In this post we summarize key aspects of the event.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/blog/2026/2026-breakouts-day-recap/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 14,
          "tabletSmallTapTargets": 16,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 14,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 16,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 14 small targets on mobile and 16 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142969",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee1597f81e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:20:06 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013ede0ee95001",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 20,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 8,
          "imagesWithLazy": 4,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 8,
            "lazyImages": 4,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 4/8 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 15,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60414,
        "totalEstimatedBlockingMs": 1224,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1224,
            "displayValue": "Est savings of 1,220 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35331,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1224 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.50 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 160048
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 156.30 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 156.30 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 7,
        "urgency": "low",
        "transferBytes": 169453,
        "css": {
          "unusedBytes": 35331,
          "ratio": 0.20850029211639806,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35331,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 169453,
        "estimatedDeferrableBytes": 35331,
        "renderBlockingMs": 1224,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35331
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35331,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1224,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 19,
        "urgency": "low",
        "transferBytes": 169453,
        "estimatedRedundantBytes": 35331,
        "redundancyRatio": 0.20850029211639806,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35331,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35331,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 169453,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,220 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,220 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/news/2026/first-public-working-draft-css-image-animation-module-level-1/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/news/2026/first-public-working-draft-css-image-animation-module-level-1/",
      "performanceScore": 0.96,
      "bestPracticesScore": 1,
      "transferBytes": 160647,
      "co2Grams": 0.06154087766580001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "First Public Working Draft: CSS Image Animation Module Level 1 | 2026 | News | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "This CSS module proposes facilities to control the rendering of animated images.",
          "robots": "",
          "canonical": "",
          "ogTitle": "First Public Working Draft: CSS Image Animation Module Level 1",
          "ogDescription": "This CSS module proposes facilities to control the rendering of animated images.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/news/2026/first-public-working-draft-css-image-animation-module-level-1/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 13,
          "tabletSmallTapTargets": 14,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 13,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 14,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 13 small targets on mobile and 14 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58090",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee18eba38e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:20:14 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0957525b4f70d2",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,newsArticles,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 16,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60671,
        "totalEstimatedBlockingMs": 1186,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1186,
            "displayValue": "Est savings of 1,190 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35588,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1186 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 34.75 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 153201
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 149.61 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 149.61 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 8,
        "urgency": "low",
        "transferBytes": 160647,
        "css": {
          "unusedBytes": 35588,
          "ratio": 0.221529191332549,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35588,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 160647,
        "estimatedDeferrableBytes": 35588,
        "renderBlockingMs": 1186,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35588
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35588,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1186,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 20,
        "urgency": "low",
        "transferBytes": 160647,
        "estimatedRedundantBytes": 35588,
        "redundancyRatio": 0.221529191332549,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35588,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35588,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 160647,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,190 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,190 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/copyright/document-license/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/copyright/document-license-2023/",
      "performanceScore": 0.95,
      "bestPracticesScore": 1,
      "transferBytes": 176809,
      "co2Grams": 0.06773223925260001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Document license - 2023 version | Copyright | W3C",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "License governing public documents on the W3C site.",
          "robots": "",
          "canonical": "",
          "ogTitle": "Document license - 2023 version",
          "ogDescription": "License governing public documents on the W3C site.",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/copyright/document-license-2023/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 12,
          "tabletSmallTapTargets": 14,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 12,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 14,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 12 small targets on mobile and 14 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "143046",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee1c3c98fe5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:20:23 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013d6b0b4116cb",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 14,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 25083,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 18954,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify CSS before transfer",
            "urgency": "low",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 60925,
        "totalEstimatedBlockingMs": 1217,
        "opportunities": [
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1217,
            "displayValue": "Est savings of 1,220 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 35842,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 35 KiB",
            "urgency": "medium",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 18954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 19 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 1217 ms."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "medium",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 35.00 KB."
          },
          {
            "title": "Minify CSS",
            "urgency": "low",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 18.51 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 167839
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 163.91 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 163.91 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 7,
        "urgency": "low",
        "transferBytes": 176809,
        "css": {
          "unusedBytes": 35842,
          "ratio": 0.2027159250943108,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "medium",
            "estimatedSavingsBytes": 35842,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 16,
        "urgency": "high",
        "transferBytes": 176809,
        "estimatedDeferrableBytes": 35842,
        "renderBlockingMs": 1217,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 35842
        },
        "candidates": [
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "medium",
            "estimatedSavingsBytes": 35842,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 1217,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 19,
        "urgency": "low",
        "transferBytes": 176809,
        "estimatedRedundantBytes": 35842,
        "redundancyRatio": 0.2027159250943108,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 35842,
            "displayValue": "Est savings of 35 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "medium",
            "estimatedSavingsBytes": 35842,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 176809,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 35 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 35 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 1,220 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 1,220 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.88,
          "displayValue": "2.6 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/ja/help/search/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ja/help/search/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 103306,
      "co2Grams": 0.03957460710840001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "search|get|/help/search|input|search|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "search",
            "controlType": "search",
            "fieldName": "q",
            "formContext": "search|get|/help/search",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "検索 | ヘルプ | W3C",
          "lang": "ja",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "W3Cのウェブサイト検索に関する情報",
          "robots": "",
          "canonical": "",
          "ogTitle": "検索",
          "ogDescription": "W3Cのウェブサイト検索に関する情報",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ja/help/search/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 9,
          "tabletSmallTapTargets": 15,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 9,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 15,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 9 small targets on mobile and 15 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "141986",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee1f79c4ee5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:20:31 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f01577c5e165e41",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 97518
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 95.23 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 95.23 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 103306,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 103306,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 103306,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 103306,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/ja/news/2026/w3c-invites-implementations-of-geolocation/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ja/news/2026/w3c-invites-implementations-of-geolocation/",
      "performanceScore": 0.9,
      "bestPracticesScore": 1,
      "transferBytes": 103823,
      "co2Grams": 0.0397726601922,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "位置情報機能への見解募集中 | 2026 | ニュース | W3C",
          "lang": "ja",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "位置情報機能により、ホストデバイスに関連付けられた地理的位置情報にアクセスできます。",
          "robots": "",
          "canonical": "",
          "ogTitle": "位置情報機能への見解募集中",
          "ogDescription": "位置情報機能により、ホストデバイスに関連付けられた地理的位置情報にアクセスできます。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ja/news/2026/w3c-invites-implementations-of-geolocation/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 14,
          "tabletSmallTapTargets": 21,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 14,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 21,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 14 small targets on mobile and 21 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "51422",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee22acd65e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:20:39 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f09fab93b55e7f9",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,newsArticles,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 97136
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.86 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.86 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 103823,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 103823,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 103823,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 103823,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/ja/news/2026/group-note-use-of-large-language-models-in-standards-work/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ja/news/2026/group-note-use-of-large-language-models-in-standards-work/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 103747,
      "co2Grams": 0.0397435460058,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "グループノート：標準化活動におけるLarge Language Models(LLMs)の活用 | 2026 | ニュース | W3C",
          "lang": "ja",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "W3C Advisory Board(AB)は、「標準化活動におけるLarge Language Modelsの活用」をグループノートとして公表しました。",
          "robots": "",
          "canonical": "",
          "ogTitle": "グループノート：標準化活動におけるLarge Language Models(LLMs)の活用",
          "ogDescription": "W3C Advisory Board(AB)は、「標準化活動におけるLarge Language Modelsの活用」をグループノートとして公表しました。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ja/news/2026/group-note-use-of-large-language-models-in-standards-work/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 28,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 11,
          "tabletSmallTapTargets": 11,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 11,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 11,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 11 small targets on mobile and 11 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58740",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee25e7da4e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:20:47 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f09483f4b6fd843",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,newsArticles,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 97135
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.86 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.86 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 103747,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 103747,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 103747,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 103747,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/ja/news/2026/updated-w3c-recommendation-geolocation/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ja/news/2026/updated-w3c-recommendation-geolocation/",
      "performanceScore": 0.9,
      "bestPracticesScore": 1,
      "transferBytes": 103537,
      "co2Grams": 0.039663098911800004,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "[改訂版] W3C勧告：位置情報 | 2026 | ニュース | W3C",
          "lang": "ja",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "位置情報機能により、ホストデバイスに関連付けられた地理的位置情報にアクセスできます。",
          "robots": "",
          "canonical": "",
          "ogTitle": "[改訂版] W3C勧告：位置情報",
          "ogDescription": "位置情報機能により、ホストデバイスに関連付けられた地理的位置情報にアクセスできます。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ja/news/2026/updated-w3c-recommendation-geolocation/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 20,
          "tabletSmallTapTargets": 13,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 20,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 13,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 20 small targets on mobile and 13 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58749",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee293ee7ce5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:20:56 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f09483f4b72d843",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,newsArticles,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6130,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6130,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6130,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6130,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 97130
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.85 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.85 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 103537,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 103537,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 103537,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 103537,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/ja/blog/2026/past-present-and-future-an-update-on-w3cs-strategic-objectives-on-the-37th-anniversary-of-the-web-proposal/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ja/blog/2026/past-present-and-future-an-update-on-w3cs-strategic-objectives-on-the-37th-anniversary-of-the-web-proposal/",
      "performanceScore": 0.98,
      "bestPracticesScore": 1,
      "transferBytes": 208484,
      "co2Grams": 0.07986634259760002,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "過去・現在・未来：W3C戦略目標に関する最新動向――ウェブの提案から37周年を記念して | 2026 | ブログ | W3C",
          "lang": "ja",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "このブログ記事で、W3CのCEOのSeth Dobbsはウェブの重要性を称え、W3Cの戦略的目標から主要な取り組みを紹介しています。",
          "robots": "",
          "canonical": "",
          "ogTitle": "過去・現在・未来：W3C戦略目標に関する最新動向――ウェブの提案から37周年を記念して",
          "ogDescription": "このブログ記事で、W3CのCEOのSeth Dobbsはウェブの重要性を称え、W3Cの戦略的目標から主要な取り組みを紹介しています。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ja/blog/2026/past-present-and-future-an-update-on-w3cs-strategic-objectives-on-the-37th-anniversary-of-the-web-proposal/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 24,
          "tabletSmallTapTargets": 24,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 24,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 24,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 24 small targets on mobile and 24 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58757",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee2ca8c05e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:21:05 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f09483f4b75d843",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 20,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 8,
          "imagesWithLazy": 4,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 8,
            "lazyImages": 4,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 4/8 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 3,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 52975,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 46846,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 46 KiB",
            "urgency": "medium",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Right-size images for viewport",
            "urgency": "medium",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 45.75 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 197143.38333333333
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 192.52 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 192.52 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 208484,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 208484,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 94057,
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/web-proposal-1989.gif",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 208484,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 208484,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/ja/contact/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ja/contact/",
      "performanceScore": 0.98,
      "bestPracticesScore": 1,
      "transferBytes": 130730,
      "co2Grams": 0.050080231422,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "お問い合わせ | W3C",
          "lang": "ja",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "このページでは、いくつかのニーズに基づいてW3Cに連絡するさまざまな方法について説明します。",
          "robots": "",
          "canonical": "",
          "ogTitle": "お問い合わせ",
          "ogDescription": "このページでは、いくつかのニーズに基づいてW3Cに連絡するさまざまな方法について説明します。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ja/contact/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 29,
          "tabletSmallTapTargets": 25,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 29,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 25,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 29 small targets on mobile and 25 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142028",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee30329f0e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:21:14 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0157856aa4686c",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 122596.76666666666
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 119.72 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 119.72 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 130730,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 130730,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 130730,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 130730,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/ja/help/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ja/help/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 198742,
      "co2Grams": 0.0761343635988,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "ヘルプ | W3C",
          "lang": "ja",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "ヘルプページ",
          "robots": "",
          "canonical": "",
          "ogTitle": "ヘルプ",
          "ogDescription": "ヘルプページ",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ja/help/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 71,
          "tabletSmallTapTargets": 75,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 1,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 1,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 518,
            "viewportHeight": 1122,
            "contentWidth": 518,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 71,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 1
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 75,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 71 small targets on mobile and 75 on tablet."
          },
          {
            "title": "Make grid layouts breakpoint-aware",
            "urgency": "medium",
            "detail": "1 grid container(s) overflowed across tested viewports (1 on mobile, 0 on tablet). Use intrinsic tracks (minmax(), fr), wrapping, and breakpoint-aware grid templates."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142041",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee3408839e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:21:23 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f01576f790172f3",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 23,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 45611.35,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "low",
            "estimatedSavingsBytes": 39482.35,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "low",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 38.56 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 76295.35,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 39482.35,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 39 KiB",
            "urgency": "low",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 30684,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 30 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "low",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 38.56 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "low",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 29.96 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 118935.64245810056
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 116.15 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 116.15 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 198742,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 198742,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 76512,
            "url": "https://www.w3.org/20/img/event/0O4A8746_large.jpg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 198742,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 198742,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 39 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 39 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/ja/support-us/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ja/support-us/",
      "performanceScore": 0.99,
      "bestPracticesScore": 0.79,
      "transferBytes": 129879,
      "co2Grams": 0.0497542291506,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "支援をお願いします | W3C",
          "lang": "ja",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "公益非営利団体としての私たちの活動に大きな変化をもたらす方法を知り、私たちのビジョン達成にご協力ください。",
          "robots": "",
          "canonical": "",
          "ogTitle": "支援をお願いします",
          "ogDescription": "公益非営利団体としての私たちの活動に大きな変化をもたらす方法を知り、私たちのビジョン達成にご協力ください。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ja/support-us/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 22,
          "tabletSmallTapTargets": 22,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 22,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 22,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 22 small targets on mobile and 22 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142046",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee379aa1ce5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:21:33 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0157899fad76ad",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 7,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 5
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "5 of 7 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 7,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/7 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 114390.91666666666
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 111.71 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 111.71 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 129879,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 129879,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 129879,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 129879,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/ja/policies/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ja/policies/",
      "performanceScore": 0.94,
      "bestPracticesScore": 1,
      "transferBytes": 105068,
      "co2Grams": 0.04024959653520001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "ポリシーと法的情報 | W3C",
          "lang": "ja",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "このページには、W3Cで標準を作り、仕事をするあらゆる面を管理するポリシー、ライセンス、著作権、商標、諸条件の枠組みが列挙されている。",
          "robots": "",
          "canonical": "",
          "ogTitle": "ポリシーと法的情報",
          "ogDescription": "このページには、W3Cで標準を作り、仕事をするあらゆる面を管理するポリシー、ライセンス、著作権、商標、諸条件の枠組みが列挙されている。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ja/policies/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 39,
          "tabletSmallTapTargets": 39,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 39,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 39,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 39 small targets on mobile and 39 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142858",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee3b9dd7fe5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:21:43 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0143f87e8b8b8b",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 94701.61666666667
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 92.48 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 92.48 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 105068,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 105068,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 105068,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 105068,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/ja/about/corporation/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/ja/about/corporation/",
      "performanceScore": 0.99,
      "bestPracticesScore": 0.79,
      "transferBytes": 106180,
      "co2Grams": 0.040675583051999996,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "法人 | 我々について | W3C",
          "lang": "ja",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "このページでは、コーポレート・ガバナンスに焦点を当て、必要な情報（コーポレート・ドキュメント、財務など）を公開しています。",
          "robots": "",
          "canonical": "",
          "ogTitle": "法人",
          "ogDescription": "このページでは、コーポレート・ガバナンスに焦点を当て、必要な情報（コーポレート・ドキュメント、財務など）を公開しています。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/ja/about/corporation/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 42,
          "tabletSmallTapTargets": 47,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 42,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 47,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 42 small targets on mobile and 47 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142065",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee3f3bad0e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:21:52 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f01578c8dc05e41",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 93027
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 90.85 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 90.85 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 106180,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 106180,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 106180,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 106180,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/standards/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/standards/",
      "performanceScore": 0.96,
      "bestPracticesScore": 0.79,
      "transferBytes": 586526,
      "co2Grams": 0.2246872012164,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "f.vimeocdn.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 312047,
            "sampleUrl": "https://f.vimeocdn.com/p/4.46.43/js/player.module.js",
            "greenCheck": {
              "hostname": "f.vimeocdn.com",
              "checked": true,
              "status": "not-green",
              "green": false,
              "hostedBy": null,
              "hostedByWebsite": null,
              "listedProvider": null,
              "partner": null,
              "modified": "2026-04-23T12:14:55.122102",
              "supportingDocuments": [],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/f.vimeocdn.com",
              "error": null
            }
          },
          {
            "hostname": "www.gstatic.com",
            "resourceType": "script",
            "requestCount": 3,
            "transferBytes": 27670,
            "sampleUrl": "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1",
            "greenCheck": {
              "hostname": "www.gstatic.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:50",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.gstatic.com",
              "error": null
            }
          },
          {
            "hostname": "f.vimeocdn.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 24416,
            "sampleUrl": "https://f.vimeocdn.com/p/4.46.43/css/player.css",
            "greenCheck": {
              "hostname": "f.vimeocdn.com",
              "checked": true,
              "status": "not-green",
              "green": false,
              "hostedBy": null,
              "hostedByWebsite": null,
              "listedProvider": null,
              "partner": null,
              "modified": "2026-04-23T12:14:55.122102",
              "supportingDocuments": [],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/f.vimeocdn.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 3,
          "greenCount": 2,
          "notGreenCount": 2,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Web标准 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "该页面提供了对web标准的整体介绍。",
          "robots": "",
          "canonical": "",
          "ogTitle": "Web标准",
          "ogDescription": "该页面提供了对web标准的整体介绍。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/standards/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 22,
          "tabletSmallTapTargets": 22,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 22,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 22,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 22 small targets on mobile and 22 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142949",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee42e7d39e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:22:02 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f014230fceaa3b3",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 1,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 84,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 226966.41936685288
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 221.65 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 221.65 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 586526,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 586526,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from f.vimeocdn.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 216581,
            "url": "https://f.vimeocdn.com/p/4.46.43/js/player.module.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91573,
            "url": "https://www.w3.org/cms-uploads/globe.svg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 59,
        "urgency": "medium",
        "providerCount": 2,
        "requestCount": 5,
        "transferBytes": 339717,
        "notGreenCount": 1,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "f.vimeocdn.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 312047,
            "sampleUrl": "https://f.vimeocdn.com/p/4.46.43/js/player.module.js",
            "greenCheck": {
              "hostname": "f.vimeocdn.com",
              "checked": true,
              "status": "not-green",
              "green": false,
              "hostedBy": null,
              "hostedByWebsite": null,
              "listedProvider": null,
              "partner": null,
              "modified": "2026-04-23T12:14:55.122102",
              "supportingDocuments": [],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/f.vimeocdn.com",
              "error": null
            }
          },
          {
            "hostname": "www.gstatic.com",
            "resourceType": "script",
            "requestCount": 3,
            "transferBytes": 27670,
            "sampleUrl": "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1",
            "greenCheck": {
              "hostname": "www.gstatic.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:50",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.gstatic.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 2 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          },
          {
            "title": "Prioritize greener alternatives for third-party providers",
            "urgency": "high",
            "detail": "1 third-party script origin(s) are not confirmed green in the Green Web Foundation dataset."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 586526,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 23,
        "urgency": "medium",
        "totalTransferBytes": 586526,
        "heavyRequestCount": 2,
        "heavyBytes": 312047,
        "heavyRatio": 0.5320258607461562,
        "heavyRequests": [
          {
            "url": "https://f.vimeocdn.com/p/4.46.43/js/player.module.js",
            "transferSize": 216581,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "f.vimeocdn.com"
          },
          {
            "url": "https://f.vimeocdn.com/p/4.46.43/js/vendor.module.js",
            "transferSize": 95466,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "f.vimeocdn.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 312047
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "f.vimeocdn.com",
            "count": 2,
            "transferBytes": 312047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy script asset from f.vimeocdn.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 216581,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://f.vimeocdn.com/p/4.46.43/js/player.module.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.89,
          "displayValue": "2.5 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 2.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/zh-hans/standards/about/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/standards/about/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 105318,
      "co2Grams": 0.040345366885200004,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "关于W3C发布的Web标准 | Web标准 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "本页面解释了更多关于W3C Web标准的内容，包括在万维网联盟创建开放Web标准的价值。",
          "robots": "",
          "canonical": "",
          "ogTitle": "关于W3C发布的Web标准",
          "ogDescription": "本页面解释了更多关于W3C Web标准的内容，包括在万维网联盟创建开放Web标准的价值。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/standards/about/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 31,
          "tabletSmallTapTargets": 36,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 31,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 36,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 31 small targets on mobile and 36 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "143112",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee48eef14e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:22:17 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013e966aa4df12",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 95919
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 93.67 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 93.67 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 105318,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 105318,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 105318,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 105318,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/standards/types/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/standards/types/",
      "performanceScore": 1,
      "bestPracticesScore": 1,
      "transferBytes": 123673,
      "co2Grams": 0.047376825982200006,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "W3C发布的文档类型 | Web标准 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "了解W3C发布的各种文档类型之间的差异以及每个成熟阶段的含义。",
          "robots": "",
          "canonical": "",
          "ogTitle": "W3C发布的文档类型",
          "ogDescription": "了解W3C发布的各种文档类型之间的差异以及每个成熟阶段的含义。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/standards/types/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 45,
          "tabletSmallTapTargets": 47,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 45,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 47,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 45 small targets on mobile and 47 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "51529",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee4c7d994e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:22:26 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f09fab97b96e7f9",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 111776
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 109.16 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 109.16 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 123673,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 123673,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 123673,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 123673,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/groups/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/groups/",
      "performanceScore": 1,
      "bestPracticesScore": 1,
      "transferBytes": 104946,
      "co2Grams": 0.040202860604399995,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "W3C的小组类型 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "多个小组支持着W3C通过制定Web标准、指南和支撑材料来实现其使命。社区组和商务组为创新者提供了将其工作带入W3C的更多途径。",
          "robots": "",
          "canonical": "",
          "ogTitle": "W3C的小组类型",
          "ogDescription": "多个小组支持着W3C通过制定Web标准、指南和支撑材料来实现其使命。社区组和商务组为创新者提供了将其工作带入W3C的更多途径。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/groups/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 18,
          "tabletSmallTapTargets": 18,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 18,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 18,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 18 small targets on mobile and 18 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142107",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee4fe2d0ee5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:22:35 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f015792bc62e96a",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 95917
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 93.67 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 93.67 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 104946,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 104946,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 104946,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 104946,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/standards/review/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/standards/review/",
      "performanceScore": 1,
      "bestPracticesScore": 1,
      "transferBytes": 109418,
      "co2Grams": 0.0419160006252,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "审阅与公众反馈 | Web标准 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "对规范、实现、测试套件和代码的公众评审与反馈。",
          "robots": "",
          "canonical": "",
          "ogTitle": "审阅与公众反馈",
          "ogDescription": "对规范、实现、测试套件和代码的公众评审与反馈。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/standards/review/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 42,
          "tabletSmallTapTargets": 42,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 42,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 42,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 42 small targets on mobile and 42 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "143159",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee5325d67e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:22:43 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013e14780ef508",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 7,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 5
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "5 of 7 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 7,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/7 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 96278.0432960894
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.02 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.02 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 109418,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 109418,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 109418,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 109418,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/get-involved/promote/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/get-involved/promote/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 139124,
      "co2Grams": 0.05329581669360001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "推广Web标准 | 欢迎参与 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "此页面描述了个人和组织可以推广Web标准化的方法。",
          "robots": "",
          "canonical": "",
          "ogTitle": "推广Web标准",
          "ogDescription": "此页面描述了个人和组织可以推广Web标准化的方法。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/get-involved/promote/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 24,
          "tabletSmallTapTargets": 30,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 24,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 30,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 24 small targets on mobile and 30 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142123",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee5680d4ee5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:22:52 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f015796ca7f5e41",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 4,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 130846
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 127.78 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 127.78 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 139124,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 139124,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 139124,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 139124,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/liaisons/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/liaisons/",
      "performanceScore": 0.98,
      "bestPracticesScore": 1,
      "transferBytes": 131381,
      "co2Grams": 0.0503296174134,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "对外联络 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "W3C通过与国家、地区及国际组织建立联系，来协调互联网（Internet）与万维网（Web）标准的制定。",
          "robots": "",
          "canonical": "",
          "ogTitle": "对外联络",
          "ogDescription": "W3C通过与国家、地区及国际组织建立联系，来协调互联网（Internet）与万维网（Web）标准的制定。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/liaisons/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 273,
          "tabletSmallTapTargets": 320,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 1,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 1,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 614,
            "viewportHeight": 1329,
            "contentWidth": 614,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 273,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 1
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 320,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 273 small targets on mobile and 320 on tablet."
          },
          {
            "title": "Make grid layouts breakpoint-aware",
            "urgency": "medium",
            "detail": "1 grid container(s) overflowed across tested viewports (1 on mobile, 0 on tablet). Use intrinsic tracks (minmax(), fr), wrapping, and breakpoint-aware grid templates."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "51556",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee5a40f2be5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:23:01 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f09fad40ce712fc",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 111774
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 109.15 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 109.15 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 131381,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.25,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 131381,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 23,
        "urgency": "low",
        "transferBytes": 131381,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 131381,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0,
          "displayValue": "1,306 elements",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 1,306 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/zh-hans/get-involved/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/get-involved/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 125826,
      "co2Grams": 0.0482016002364,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "欢迎参与 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "本页描述了个人和组织可以参与万维网联盟（W3C）工作，以推进Web标准化的方式。",
          "robots": "",
          "canonical": "",
          "ogTitle": "欢迎参与",
          "ogDescription": "本页描述了个人和组织可以参与万维网联盟（W3C）工作，以推进Web标准化的方式。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/get-involved/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 19,
          "tabletSmallTapTargets": 19,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 19,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 19,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 19 small targets on mobile and 19 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142141",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee5da883fe5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:23:10 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f015799dcd476ad",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 114392.9
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 111.71 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 111.71 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 125826,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 125826,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 125826,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 125826,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/ecosystems/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/ecosystems/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 1197095,
      "co2Grams": 0.45858482853300003,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "行业生态 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "了解Web对行业生态的影响以及W3C如何支持行业需求。",
          "robots": "",
          "canonical": "",
          "ogTitle": "行业生态",
          "ogDescription": "了解Web对行业生态的影响以及W3C如何支持行业需求。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/ecosystems/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 13,
          "tabletSmallTapTargets": 13,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 13,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 13,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 13 small targets on mobile and 13 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142150",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee614ef92e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:23:19 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f01579bada84854",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 20,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 13,
          "imagesWithLazy": 9,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 13,
            "lazyImages": 9,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 9/13 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 63,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 753651.15,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 747522.15,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 730.00 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 1308110.15,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 747522.15,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 730 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 554459,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 541 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 730.00 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 541.46 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1170401.4166666665
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.12 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.12 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 1197095,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 1197095,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 574699,
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/payments-shutterstock_605410205-1024.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 1197095,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 32,
        "urgency": "medium",
        "totalTransferBytes": 1197095,
        "heavyRequestCount": 3,
        "heavyBytes": 879006,
        "heavyRatio": 0.7342825757354262,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/payments-shutterstock_605410205-1024.png",
            "transferSize": 574699,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/ling-tang-rffNTF8CYA-unsplash.jpg",
            "transferSize": 168172,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "www.w3.org"
          },
          {
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/data-head-shutterstock_728178127.jpg",
            "transferSize": 136135,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "image",
            "count": 3,
            "transferBytes": 879006
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 3,
            "transferBytes": 879006
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy image asset from www.w3.org",
            "urgency": "high",
            "estimatedSavingsBytes": 574699,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/payments-shutterstock_605410205-1024.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 730 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 730 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/zh-hans/membership/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/membership/",
      "performanceScore": 0.96,
      "bestPracticesScore": 0.79,
      "transferBytes": 1250853,
      "co2Grams": 0.4791785184342,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446517,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332315,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 59162,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/bcd88ad3/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 46855,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 5,
          "greenCount": 6,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "为何加入W3C | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "发现加入万维网联盟的价值。",
          "robots": "",
          "canonical": "",
          "ogTitle": "为何加入W3C",
          "ogDescription": "发现加入万维网联盟的价值。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/membership/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 20,
          "tabletSmallTapTargets": 20,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 20,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 20,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 20 small targets on mobile and 20 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142160",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee6523921e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:23:29 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f01579d2db8e96a",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 24,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 7,
          "imagesWithLazy": 3,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 7 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 7,
            "lazyImages": 3,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 3/7 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 4,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 46054.25,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "low",
            "estimatedSavingsBytes": 39925.25,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "low",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 38.99 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 96345.25,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 50291,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 49 KiB",
            "urgency": "medium",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 39925.25,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 39 KiB",
            "urgency": "low",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Right-size images for viewport",
            "urgency": "medium",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 49.11 KB."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "low",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 38.99 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 236217.38333333333
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 230.68 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 230.68 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 1250853,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 1250853,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube-nocookie.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446517,
            "url": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 188794,
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 100793,
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/marvin-meyer-SYTO3xs06fU-unsplash.jpg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 53,
        "urgency": "medium",
        "providerCount": 3,
        "requestCount": 4,
        "transferBytes": 802522,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446517,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332315,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 1250853,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 33,
        "urgency": "medium",
        "totalTransferBytes": 1250853,
        "heavyRequestCount": 5,
        "heavyBytes": 884849,
        "heavyRatio": 0.7073964726470656,
        "heavyRequests": [
          {
            "url": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446517,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188794,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143521,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube-nocookie.com/s/player/bcd88ad3/www-player.css",
            "transferSize": 59162,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 46855,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 778832
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106017
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.youtube-nocookie.com",
            "count": 2,
            "transferBytes": 505679
          },
          {
            "domain": "www.youtube.com",
            "count": 3,
            "transferBytes": 379170
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy script asset from www.youtube-nocookie.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446517,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube-nocookie.com/s/player/bcd88ad3/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 188794,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 39 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 39 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/zh-hans/support-us/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/support-us/",
      "performanceScore": 0.99,
      "bestPracticesScore": 0.79,
      "transferBytes": 130951,
      "co2Grams": 0.0501648924114,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "支持我们 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "欢迎了解如何能为我们的公益非营利事业带来重大影响，助力实现联盟愿景。",
          "robots": "",
          "canonical": "",
          "ogTitle": "支持我们",
          "ogDescription": "欢迎了解如何能为我们的公益非营利事业带来重大影响，助力实现联盟愿景。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/support-us/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 24,
          "tabletSmallTapTargets": 24,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 24,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 24,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 24 small targets on mobile and 24 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142412",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee6898c95e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:23:38 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0151a8ffd57ae9",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 7,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 5
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "5 of 7 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 7,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/7 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 114395.85
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 111.71 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 111.71 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 130951,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 130951,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 130951,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 130951,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/email/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/email/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 124227,
      "co2Grams": 0.04758905307780001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "邮件列表 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "邮件列表",
          "robots": "",
          "canonical": "",
          "ogTitle": "邮件列表",
          "ogDescription": "邮件列表",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/email/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 44,
          "tabletSmallTapTargets": 46,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 391,
            "viewportHeight": 847,
            "contentWidth": 391,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 44,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 46,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 44 small targets on mobile and 46 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "47283",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee6bd0957e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:23:46 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0a645a89b7f813",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 114669
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 111.98 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 111.98 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 124227,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 124227,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 124227,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 124227,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/about/positive-work-environment/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/about/positive-work-environment/",
      "performanceScore": 1,
      "bestPracticesScore": 1,
      "transferBytes": 123418,
      "co2Grams": 0.04727914022520001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "积极的工作环境 | 关于我们 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "本页介绍W3C的积极工作环境。",
          "robots": "",
          "canonical": "",
          "ogTitle": "积极的工作环境",
          "ogDescription": "本页介绍W3C的积极工作环境。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/about/positive-work-environment/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 35,
          "tabletSmallTapTargets": 35,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 35,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 35,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 35 small targets on mobile and 35 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142184",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee6f09a10e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:23:54 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0157a1c8c4686c",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6130,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6130,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6130,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6130,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 114673
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 111.99 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 111.99 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 123418,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 123418,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 123418,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 123418,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/invited-experts/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/invited-experts/",
      "performanceScore": 1,
      "bestPracticesScore": 1,
      "transferBytes": 122881,
      "co2Grams": 0.04707342551340001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "特邀专家 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "W3C特邀专家的首页，特邀专家是因其专业知识受工作组邀请的非会员小组参与者。",
          "robots": "",
          "canonical": "",
          "ogTitle": "特邀专家",
          "ogDescription": "W3C特邀专家的首页，特邀专家是因其专业知识受工作组邀请的非会员小组参与者。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/invited-experts/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 46,
          "tabletSmallTapTargets": 46,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 46,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 46,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 46 small targets on mobile and 46 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142192",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee726bb26e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:24:03 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0157a3680a4854",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 111777
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 109.16 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 109.16 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 122881,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 122881,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 122881,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 122881,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/resources/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/resources/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 152979,
      "co2Grams": 0.05860340949060001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "相关资源 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "此页面汇总了为W3C会员、Web开发者以及公众提供的资源，如邮件列表、博客和微博、新闻、培训、教程、工具、视频、翻译等。",
          "robots": "",
          "canonical": "",
          "ogTitle": "相关资源",
          "ogDescription": "此页面汇总了为W3C会员、Web开发者以及公众提供的资源，如邮件列表、博客和微博、新闻、培训、教程、工具、视频、翻译等。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/resources/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 15,
          "tabletSmallTapTargets": 15,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 15,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 15,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 15 small targets on mobile and 15 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142201",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee75b9b8be5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:24:12 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0157a50ce9e96a",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 4,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6130,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6130,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6130,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6130,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 141626.35
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 138.31 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 138.31 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 152979,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 152979,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 152979,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 152979,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/developers/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/developers/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 844160,
      "co2Grams": 0.32338199462399997,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "开发者 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "“一站式”获取所需的信息和工具，帮助开发者学习、构建和推动Web进步。",
          "robots": "",
          "canonical": "",
          "ogTitle": "开发者",
          "ogDescription": "“一站式”获取所需的信息和工具，帮助开发者学习、构建和推动Web进步。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/developers/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 22,
          "tabletSmallTapTargets": 22,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 22,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 22,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 22 small targets on mobile and 22 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "143283",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee790a898e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:24:20 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013d69eef1dd6c",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 7,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 5
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "5 of 7 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 7,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/7 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 80,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 676678.4,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 670549.4,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 654.83 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 1079897.4,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 670549.4,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 655 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 403219,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 394 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 654.83 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 393.77 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 221337.25279329607
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 216.15 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 216.15 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 844160,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 844160,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 673561,
            "url": "https://www.w3.org/comm/assets/graphics/w3cx-accessibility-intro-twitter-only.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 844160,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 33,
        "urgency": "medium",
        "totalTransferBytes": 844160,
        "heavyRequestCount": 1,
        "heavyBytes": 673561,
        "heavyRatio": 0.7979067949203943,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/comm/assets/graphics/w3cx-accessibility-intro-twitter-only.png",
            "transferSize": 673561,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 673561
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 1,
            "transferBytes": 673561
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy image asset from www.w3.org",
            "urgency": "high",
            "estimatedSavingsBytes": 673561,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://www.w3.org/comm/assets/graphics/w3cx-accessibility-intro-twitter-only.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 655 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 655 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/zh-hans/developers/tools/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/developers/tools/",
      "performanceScore": 1,
      "bestPracticesScore": 1,
      "transferBytes": 124283,
      "co2Grams": 0.0476105056362,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "验证器和工具 | 开发者 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "该页面包括验证器和开发者工具相关的信息。",
          "robots": "",
          "canonical": "",
          "ogTitle": "验证器和工具",
          "ogDescription": "该页面包括验证器和开发者工具相关的信息。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/developers/tools/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 30,
          "tabletSmallTapTargets": 30,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 30,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 30,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 30 small targets on mobile and 30 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "143203",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee7c3c87de5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:24:28 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f013f91192efbed",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 20,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 3,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 3,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 3/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 113185.33333333333
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 110.53 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 110.53 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 124283,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 124283,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 124283,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 124283,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/reports/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/reports/",
      "performanceScore": 1,
      "bestPracticesScore": 1,
      "transferBytes": 103721,
      "co2Grams": 0.0397335858894,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "团队报告 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "本页列出了W3C团队发布的报告。",
          "robots": "",
          "canonical": "",
          "ogTitle": "团队报告",
          "ogDescription": "本页列出了W3C团队发布的报告。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/reports/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 17,
          "tabletSmallTapTargets": 17,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 17,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 17,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 17 small targets on mobile and 17 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142224",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee7f3facbe5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:24:36 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0157a9e9e25e41",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 5,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 3
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "3 of 5 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 5,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/5 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 95919
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 93.67 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 93.67 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 103721,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 103721,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 103721,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 103721,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/news-events/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/news-events/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 115537,
      "co2Grams": 0.044260075711800004,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "新闻与活动 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "获取新闻、博客、官方通稿以及活动的最新消息。",
          "robots": "",
          "canonical": "",
          "ogTitle": "新闻与活动",
          "ogDescription": "获取新闻、博客、官方通稿以及活动的最新消息。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/news-events/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 17,
          "tabletSmallTapTargets": 17,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 17,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 17,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 17 small targets on mobile and 17 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "54151",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee8276f4be5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:24:44 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f09be1898d3da79",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 5,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 106406.26666666666
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 103.91 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 103.91 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 115537,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 115537,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 115537,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 115537,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/news/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/news/",
      "performanceScore": 0.89,
      "bestPracticesScore": 1,
      "transferBytes": 106471,
      "co2Grams": 0.04078705973940001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "search|get|self|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "search",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "search|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "新闻列表 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "W3C 新闻",
          "robots": "",
          "canonical": "",
          "ogTitle": "新闻列表",
          "ogDescription": "W3C 新闻",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/news/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 12,
          "tabletSmallTapTargets": 23,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 391,
            "viewportHeight": 847,
            "contentWidth": 391,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 12,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 23,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 12 small targets on mobile and 23 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "59089",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee858ed25e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:24:52 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0945b3ebd706d1",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,newsArticles"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 97135
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.86 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.86 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 106471,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 106471,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 106471,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 106471,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/blog/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/blog/",
      "performanceScore": 0.9,
      "bestPracticesScore": 1,
      "transferBytes": 105135,
      "co2Grams": 0.040275262989000006,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "search|get|self|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "search",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "search|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "博客 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "W3C 博客文章提供更深入的与 Web 标准相关的话题与资料。",
          "robots": "",
          "canonical": "",
          "ogTitle": "博客",
          "ogDescription": "W3C 博客文章提供更深入的与 Web 标准相关的话题与资料。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/blog/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 24,
          "tabletSmallTapTargets": 31,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 391,
            "viewportHeight": 847,
            "contentWidth": 391,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 24,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 31,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 24 small targets on mobile and 31 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "784694",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee88f5a1be5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:25:01 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9ec412fa2d7715b0",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 94244
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 92.04 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 92.04 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 105135,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 105135,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 105135,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 105135,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/press-releases/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/press-releases/",
      "performanceScore": 0.98,
      "bestPracticesScore": 1,
      "transferBytes": 106584,
      "co2Grams": 0.04083034793760001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "官方新闻稿 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "关于 W3C 工作的官方新闻稿。",
          "robots": "",
          "canonical": "",
          "ogTitle": "官方新闻稿",
          "ogDescription": "关于 W3C 工作的官方新闻稿。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/press-releases/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 20,
          "tabletSmallTapTargets": 26,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 391,
            "viewportHeight": 847,
            "contentWidth": 391,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 20,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 26,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 20 small targets on mobile and 26 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "800438",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee8c39bebe5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:25:09 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9ec292ce684e5d31",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,pressReleases"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 97134
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.86 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 94.86 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 106584,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 106584,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 106584,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 106584,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/about/press-media/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/about/press-media/",
      "performanceScore": 0.87,
      "bestPracticesScore": 0.79,
      "transferBytes": 1121486,
      "co2Grams": 0.42962042696040015,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446738,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332323,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 59165,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 46853,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 5,
          "greenCount": 6,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "媒体资料包 | 关于我们 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "本页面包含记者和公众所需的资源和信息，方便了解W3C及其工作，获取W3C新闻并联系我们。",
          "robots": "",
          "canonical": "",
          "ogTitle": "媒体资料包",
          "ogDescription": "本页面包含记者和公众所需的资源和信息，方便了解W3C及其工作，获取W3C新闻并联系我们。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/about/press-media/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 68,
          "tabletSmallTapTargets": 70,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 1,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 1,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 414,
            "viewportHeight": 896,
            "contentWidth": 414,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 68,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 1
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 70,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 68 small targets on mobile and 70 on tablet."
          },
          {
            "title": "Make grid layouts breakpoint-aware",
            "urgency": "medium",
            "detail": "1 grid container(s) overflowed across tested viewports (1 on mobile, 0 on tablet). Use intrinsic tracks (minmax(), fr), wrapping, and breakpoint-aware grid templates."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "142265",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee8feb9f8e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:25:19 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0157b2096c76ad",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 1,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 44,
        "urgency": "medium",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 105535
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 103.06 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 103.06 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 1121486,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 1121486,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube-nocookie.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446738,
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 188798,
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 53,
        "urgency": "medium",
        "providerCount": 3,
        "requestCount": 4,
        "transferBytes": 802751,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446738,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332323,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 1121486,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 37,
        "urgency": "medium",
        "totalTransferBytes": 1121486,
        "heavyRequestCount": 5,
        "heavyBytes": 885079,
        "heavyRatio": 0.7892020051966766,
        "heavyRequests": [
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446738,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188798,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143525,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "transferSize": 59165,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 46853,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 779061
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106018
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.youtube-nocookie.com",
            "count": 2,
            "transferBytes": 505903
          },
          {
            "domain": "www.youtube.com",
            "count": 3,
            "transferBytes": 379176
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy script asset from www.youtube-nocookie.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446738,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 188798,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0.7,
          "displayValue": "3.3 s",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 3.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/zh-hans/events/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/events/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 106985,
      "co2Grams": 0.04098396357900001,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 50,
        "urgency": "medium",
        "pageElementOccurrences": 2,
        "uniqueElementsAssessed": 2,
        "reusedFromCacheCount": 2,
        "components": [
          {
            "signature": "form|get|self|select|select|type|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "select",
            "fieldName": "type",
            "formContext": "form|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|get|self|select|select|category|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "select",
            "fieldName": "category",
            "formContext": "form|get|self",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "W3C活动信息 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "W3C通过多种形式的活动连接全球社区。查看即将开展的活动。",
          "robots": "",
          "canonical": "",
          "ogTitle": "W3C活动信息",
          "ogDescription": "W3C通过多种形式的活动连接全球社区。查看即将开展的活动。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/events/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 18,
          "tabletSmallTapTargets": 18,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 391,
            "viewportHeight": 847,
            "contentWidth": 391,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 18,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 18,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 18 small targets on mobile and 18 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58617",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee934caade5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:25:27 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f095217da99d094",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,events"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 8,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 6
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "6 of 8 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 8,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/8 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 6,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 98070
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 95.77 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 95.77 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 106985,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 106985,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 106985,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 106985,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    },
    {
      "url": "https://www.w3.org/zh-hans/news-events/w3c-tpac/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/news-events/w3c-tpac/",
      "performanceScore": 1,
      "bestPracticesScore": 1,
      "transferBytes": 180730,
      "co2Grams": 0.06923430142200002,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "W3C的TPAC会议 | 新闻与活动 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "W3C年度技术大会通过集中的W3C全球会员、董事会成员、各工作组与兴趣组会议，以及一系列由与会者提议的分组话题讨论，共同协调技术问题的解决方案。",
          "robots": "",
          "canonical": "",
          "ogTitle": "W3C的TPAC会议",
          "ogDescription": "W3C年度技术大会通过集中的W3C全球会员、董事会成员、各工作组与兴趣组会议，以及一系列由与会者提议的分组话题讨论，共同协调技术问题的解决方案。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/news-events/w3c-tpac/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 48,
          "tabletSmallTapTargets": 49,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 48,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 49,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 48 small targets on mobile and 49 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "58391",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee96a6839e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:25:36 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0957d2fb5d15ec",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 16,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 28107.85,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "low",
            "estimatedSavingsBytes": 21978.85,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "low",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 21.46 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 38951.85,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 21978.85,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 21 KiB",
            "urgency": "low",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 10844,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 11 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "low",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 21.46 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "low",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 10.59 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 117226.64525139665
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 114.48 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 114.48 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 180730,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 180730,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 180730,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 180730,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 21 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 21 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/zh-hans/about/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/about/",
      "performanceScore": 0.99,
      "bestPracticesScore": 1,
      "transferBytes": 339713,
      "co2Grams": 0.13013773163820003,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "关于我们 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "本页面介绍万维网联盟（World Wide Web Consortium，W3C），一个多方利益相关者组成的会员组织，致力于开放地制定web标准。",
          "robots": "",
          "canonical": "",
          "ogTitle": "关于我们",
          "ogDescription": "本页面介绍万维网联盟（World Wide Web Consortium，W3C），一个多方利益相关者组成的会员组织，致力于开放地制定web标准。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/about/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 46,
          "tabletSmallTapTargets": 47,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 46,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 47,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 46 small targets on mobile and 47 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "143022",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee9a0ba80e5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:25:45 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f0145d6a95df7dd",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 24,
        "urgency": "low",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 7,
          "imagesWithLazy": 3,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 7 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 7,
            "lazyImages": 3,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 3/7 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 45,
        "urgency": "medium",
        "totalEstimatedSavingsBytes": 153965.75,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 147836.75,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 144.37 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 247398.75,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 147836.75,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 144 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 93433,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 91 KiB",
            "urgency": "medium",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 144.37 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "medium",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 91.24 KB."
          },
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 322445.5
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 314.89 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 314.89 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 339713,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 339713,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy image from www.w3.org",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 186834,
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/w3c-composition.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 5,
        "urgency": "low",
        "transferBytes": 339713,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 23,
        "urgency": "low",
        "totalTransferBytes": 339713,
        "heavyRequestCount": 1,
        "heavyBytes": 186834,
        "heavyRatio": 0.5499760091606739,
        "heavyRequests": [
          {
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/w3c-composition.png",
            "transferSize": 186834,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "www.w3.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 186834
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.w3.org",
            "count": 1,
            "transferBytes": 186834
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy image asset from www.w3.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 186834,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://www.w3.org/cms-uploads/_920xAUTO_crop_center-center_none/w3c-composition.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 144 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 144 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://www.w3.org/zh-hans/mission/",
      "status": "ok",
      "finalUrl": "https://www.w3.org/zh-hans/mission/",
      "performanceScore": 0.96,
      "bestPracticesScore": 0.79,
      "transferBytes": 1159676,
      "co2Grams": 0.4442503056264,
      "greenWeb": {
        "page": {
          "hostname": "www.w3.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2025-11-24T08:50:00",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.w3.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446735,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332323,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 59162,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 46853,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 5,
          "greenCount": 6,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 10,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "我们的使命 | W3C",
          "lang": "zh-hans",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1",
          "description": "了解W3C是谁、我们的核心价值观和运作原则，从而实现让web为全人类服务的使命。",
          "robots": "",
          "canonical": "",
          "ogTitle": "我们的使命",
          "ogDescription": "了解W3C是谁、我们的核心价值观和运作原则，从而实现让web为全人类服务的使命。",
          "ogType": "website",
          "ogUrl": "https://www.w3.org/zh-hans/mission/",
          "twitterCard": "summary_large_image",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 21,
          "tabletSmallTapTargets": 21,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 2,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 21,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 21,
            "oversizedMedia": 0,
            "gridContainersDetected": 1,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 21 small targets on mobile and 21 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 14,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": false,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "89146",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, s-maxage=7776000",
            "cf-cache-status": "HIT",
            "cf-ray": "9f0ee9db7cbfe5eb-IAD",
            "content-encoding": "br",
            "content-security-policy": "frame-ancestors 'self' https://cms.w3.org/ https://cms-dev.w3.org/; upgrade-insecure-requests",
            "content-type": "text/html; charset=UTF-8",
            "date": "Thu, 23 Apr 2026 18:25:54 GMT",
            "priority": "u=0,i",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "strict-transport-security": "max-age=15552000; includeSubdomains; preload",
            "vary": "Origin,Accept-Encoding",
            "x-backend": "sf-frontend",
            "x-content-type-options": "nosniff",
            "x-frontend-content": "PUBLISHED",
            "x-request-id": "9f06696a2dc28d91",
            "x-strata-cache-tags": "homepage,blogListing,pressReleasesListing,eventsListing,newsListing,ecosystemsLandingPage,blogPosts,pages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Define a Referrer-Policy",
            "urgency": "low",
            "detail": "Set a referrer policy to reduce unnecessary URL data leakage."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          }
        ]
      },
      "expectedFiles": {
        "score": 45,
        "urgency": "medium",
        "origin": "https://www.w3.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://www.w3.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://www.w3.org/sitemap.xml",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://www.w3.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://www.w3.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=utf-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://www.w3.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/vnd.microsoft.icon"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasDarkMode": false,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 2,
          "imagesWithoutLazy": 4
        },
        "recommendations": [
          {
            "title": "Add dark mode support",
            "urgency": "medium",
            "detail": "No prefers-color-scheme: dark media query or color-scheme meta tag was found. Dark mode reduces energy use on OLED screens and improves user choice."
          },
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "medium",
            "detail": "4 of 6 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 2,
            "totalIframes": 1,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Noto Sans\", \"Trebuchet MS\", Geneva, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 2/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 1,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 6129,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "estimatedSavingsBytes": 6129,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "low",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 5.99 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 42,
        "urgency": "medium",
        "totalEstimatedSavingsBytes": 6129,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 6129,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 6 KiB",
            "urgency": "low",
            "sourceAuditId": "unminified-javascript"
          }
        ],
        "recommendations": [
          {
            "title": "Minify JavaScript",
            "urgency": "low",
            "detail": "Use minified production JS output to reduce payload size. Estimated byte savings: 5.99 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 149110.88333333333
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 145.62 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 145.62 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 1159676,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 1159676,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube-nocookie.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 446735,
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.youtube.com",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 188798,
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 53,
        "urgency": "medium",
        "providerCount": 3,
        "requestCount": 4,
        "transferBytes": 802748,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.youtube-nocookie.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 446735,
            "sampleUrl": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "greenCheck": {
              "hostname": "www.youtube-nocookie.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:45:44",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube-nocookie.com",
              "error": null
            }
          },
          {
            "hostname": "www.youtube.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 332323,
            "sampleUrl": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "greenCheck": {
              "hostname": "www.youtube.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-14T07:18:20",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.youtube.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 23690,
            "sampleUrl": "https://www.google.com/js/th/rOmrN60AN-U9GRTHX8orPjMEIJ8wTXyJ5HZew_AwfbI.js",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-04-20T21:37:25",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 3 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 3,
        "urgency": "low",
        "transferBytes": 1159676,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 36,
        "urgency": "medium",
        "totalTransferBytes": 1159676,
        "heavyRequestCount": 5,
        "heavyBytes": 885073,
        "heavyRatio": 0.763207137165898,
        "heavyRequests": [
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "transferSize": 446735,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "transferSize": 188798,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=root,base",
            "transferSize": 143525,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "www.youtube.com"
          },
          {
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/www-player.css",
            "transferSize": 59162,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube-nocookie.com"
          },
          {
            "url": "https://www.youtube.com/s/_/ytembeds/_/ss/k=ytembeds.base.oRmnRxCtskc.L.W.O/am=AAAABA/d=0/br=1/rs=AGKMywHkqPKx19LNLTFOD88ZyDOWYDGFJw",
            "transferSize": 46853,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "www.youtube.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 779058
          },
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 106015
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "www.youtube-nocookie.com",
            "count": 2,
            "transferBytes": 505897
          },
          {
            "domain": "www.youtube.com",
            "count": 3,
            "transferBytes": 379176
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy script asset from www.youtube-nocookie.com",
            "urgency": "high",
            "estimatedSavingsBytes": 446735,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube-nocookie.com/s/player/8456c9de/player_embed_es6.vflset/en_US/base.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.youtube.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 188798,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.Jn-9HPgVKSU.2021.O/am=AAAABA/d=1/exm=base,root/ed=1/br=1/rs=AGKMywFIPd8H83JB8R7S3Dnm-hTNowb--w/m=r78Drb",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": []
    }
  ]
}
