mgifford's picture
download
raw
24 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light dark">
<title>VA Accessibility &amp; Sustainability | vital-scans</title>
<link rel="stylesheet" href="style.css">
<script>
// Apply the saved theme before first paint to avoid a flash of the
// wrong colour scheme. No saved choice = follow the OS (prefers-color-scheme).
try {
var t = localStorage.getItem('vital-theme');
if (t === 'light' || t === 'dark') document.documentElement.setAttribute('data-theme', t);
} catch (e) {}
</script>
</head>
<body>
<a class="skip" href="#main">Skip to content</a>
<header>
<p class="brand"><a href="index.html">vital-scans</a> <span class="tag">open quality ledger</span></p>
<button id="theme-toggle" type="button" class="theme-toggle" aria-label="Switch to dark mode" aria-pressed="false" hidden>
<svg class="icon-sun" aria-hidden="true" focusable="false" viewBox="0 0 24 24" width="20" height="20">
<circle cx="12" cy="12" r="5" fill="currentColor"/>
<path stroke="currentColor" stroke-width="2" stroke-linecap="round" fill="none"
d="M12 1v2M12 21v2M4.2 4.2l1.4 1.4M18.4 18.4l1.4 1.4M1 12h2M21 12h2M4.2 19.8l1.4-1.4M18.4 5.6l1.4-1.4"/>
</svg>
<svg class="icon-moon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" width="20" height="20">
<path fill="currentColor" d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/>
</svg>
<span class="theme-label">Theme</span>
</button>
<script>
(function () {
var btn = document.getElementById('theme-toggle');
if (!btn) return;
btn.hidden = false; // only show the control when JS can drive it
var mq = window.matchMedia('(prefers-color-scheme: dark)');
function current() {
var attr = document.documentElement.getAttribute('data-theme');
return attr || (mq.matches ? 'dark' : 'light');
}
function sync() {
var dark = current() === 'dark';
// Label/pressed describe the action and state for screen readers.
btn.setAttribute('aria-label', dark ? 'Switch to light mode' : 'Switch to dark mode');
btn.setAttribute('aria-pressed', String(dark));
}
sync();
btn.addEventListener('click', function () {
var next = current() === 'dark' ? 'light' : 'dark';
document.documentElement.setAttribute('data-theme', next);
try { localStorage.setItem('vital-theme', next); } catch (e) {}
sync();
});
mq.addEventListener && mq.addEventListener('change', sync);
})();
</script>
</header>
<main id="main">
<h1>VA Accessibility &amp; Sustainability</h1>
<p class="meta">Automated weekly accessibility and sustainability monitoring of U.S. Department of Veterans Affairs web properties.
</p>
<table>
<caption>Domains ranked by accessibility score (best first). Trajectory compares the score against ~4 weeks ago. Counts are medians per page over the last 7 days, comparable across sites of any size.</caption>
<thead><tr><th scope="col">Domain</th><th scope="col">Score</th><th scope="col">Trajectory</th><th scope="col">Pages audited (7d)</th><th scope="col">Median axe / page</th><th scope="col">Median Alfa / page</th><th scope="col">Trend</th></tr></thead>
<tbody><tr>
<th scope="row"><a href="reports/www.va.gov/2026-W28/index.html">www.va.gov</a></th>
<td class="num"><span class="grade grade-A">A</span> 100</td>
<td><span class="traj traj-stable">▬ stable +0</span></td>
<td class="num">1027</td>
<td class="num">0</td>
<td class="num">92</td>
<td><svg class="spark" width="220" height="36" viewBox="0 0 220 36" aria-hidden="true"><polyline points="2.0,34.0 74.0,34.0 146.0,34.0 218.0,34.0" fill="none" stroke="currentColor" stroke-width="2"/></svg><span class="visually-hidden">Median axe violations per page over 4 weeks: 0, 0, 0, 0.</span></td>
</tr>
<tr>
<th scope="row"><a href="reports/news.va.gov/2026-W28/index.html">news.va.gov</a></th>
<td class="num"><span class="grade grade-B">B</span> 80</td>
<td><span class="traj traj-stable">▬ stable +0</span></td>
<td class="num">1044</td>
<td class="num">4</td>
<td class="num">149</td>
<td><svg class="spark" width="220" height="36" viewBox="0 0 220 36" aria-hidden="true"><polyline points="2.0,6.0 74.0,6.0 146.0,6.0 218.0,6.0" fill="none" stroke="currentColor" stroke-width="2"/></svg><span class="visually-hidden">Median axe violations per page over 4 weeks: 4, 4, 4, 4.</span></td>
</tr>
<tr>
<th scope="row"><a href="reports/benefits.va.gov/2026-W28/index.html">benefits.va.gov</a></th>
<td class="num"><span class="grade grade-C">C</span> 70</td>
<td><span class="traj traj-stable">▬ stable +0</span></td>
<td class="num">713</td>
<td class="num">6</td>
<td class="num">146</td>
<td><svg class="spark" width="220" height="36" viewBox="0 0 220 36" aria-hidden="true"><polyline points="2.0,6.0 74.0,6.0 146.0,6.0 218.0,6.0" fill="none" stroke="currentColor" stroke-width="2"/></svg><span class="visually-hidden">Median axe violations per page over 4 weeks: 6, 6, 6, 6.</span></td>
</tr>
<tr>
<th scope="row"><a href="reports/volunteer.va.gov/2026-W28/index.html">volunteer.va.gov</a></th>
<td class="num"><span class="grade grade-F">F</span> 16</td>
<td><span class="traj traj-stable">▬ stable +1</span></td>
<td class="num">509</td>
<td class="num">39</td>
<td class="num">188</td>
<td><svg class="spark" width="220" height="36" viewBox="0 0 220 36" aria-hidden="true"><polyline points="2.0,6.0 74.0,6.0 146.0,6.0 218.0,6.7" fill="none" stroke="currentColor" stroke-width="2"/></svg><span class="visually-hidden">Median axe violations per page over 4 weeks: 40, 40, 40, 39.</span></td>
</tr></tbody>
</table>
<p class="score-caveat">Scores are a relative, automated signal based on axe violations per page (axe runs on every page; Alfa is sampled and reported separately). Automated testing finds only ~⅓ of barriers — use scores to compare and track direction, not as a pass/fail.</p>
<figure class="chart">
<figcaption>Median axe violations per page, all domains — lower is better</figcaption>
<svg viewBox="0 0 720 240" class="linechart" role="img" aria-label="Median axe violations per page over time, compared across 4 domains" preserveAspectRatio="xMidYMid meet">
<polyline points="40.0,212.0 220.0,212.0 400.0,212.0 580.0,212.0" fill="none" stroke="currentColor" stroke-width="2" stroke-dasharray="" opacity="0.85"/><polyline points="40.0,192.4 220.0,192.4 400.0,192.4 580.0,192.4" fill="none" stroke="currentColor" stroke-width="2" stroke-dasharray="6 3" opacity="0.85"/><polyline points="40.0,182.6 220.0,182.6 400.0,182.6 580.0,182.6" fill="none" stroke="currentColor" stroke-width="2" stroke-dasharray="2 3" opacity="0.85"/><polyline points="40.0,16.0 220.0,16.0 400.0,16.0 580.0,20.9" fill="none" stroke="currentColor" stroke-width="2" stroke-dasharray="8 3 2 3" opacity="0.85"/><g transform="translate(586,30)"><line x1="0" y1="-4" x2="18" y2="-4" stroke="currentColor" stroke-width="2" stroke-dasharray=""/><text x="22" y="0" class="axis">www.va.gov</text></g><g transform="translate(586,46)"><line x1="0" y1="-4" x2="18" y2="-4" stroke="currentColor" stroke-width="2" stroke-dasharray="6 3"/><text x="22" y="0" class="axis">news.va.gov</text></g><g transform="translate(586,62)"><line x1="0" y1="-4" x2="18" y2="-4" stroke="currentColor" stroke-width="2" stroke-dasharray="2 3"/><text x="22" y="0" class="axis">benefits.va.gov</text></g><g transform="translate(586,78)"><line x1="0" y1="-4" x2="18" y2="-4" stroke="currentColor" stroke-width="2" stroke-dasharray="8 3 2 3"/><text x="22" y="0" class="axis">volunteer.va.gov</text></g><text x="40.0" y="232" text-anchor="middle" class="axis">W25</text><text x="220.0" y="232" text-anchor="middle" class="axis">W26</text><text x="580.0" y="232" text-anchor="middle" class="axis">W28</text>
<text x="4" y="20.0" class="axis">40</text><text x="4" y="216.0" class="axis">0</text>
</svg>
<table class="visually-hidden"><caption>Median axe violations per page by domain and week</caption>
<thead><tr><th scope="col">Domain</th><th scope="col">2026-W25</th><th scope="col">2026-W26</th><th scope="col">2026-W27</th><th scope="col">2026-W28</th></tr></thead>
<tbody><tr><th scope="row">www.va.gov</th><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><th scope="row">news.va.gov</th><td>4</td><td>4</td><td>4</td><td>4</td></tr><tr><th scope="row">benefits.va.gov</th><td>6</td><td>6</td><td>6</td><td>6</td></tr><tr><th scope="row">volunteer.va.gov</th><td>40</td><td>40</td><td>40</td><td>39</td></tr></tbody></table>
</figure>
<figure class="chart" data-parachart="{&quot;datasets&quot;:[{&quot;type&quot;:&quot;line&quot;,&quot;title&quot;:&quot;Fleet mean energy per page (Wh)&quot;,&quot;facets&quot;:{&quot;x&quot;:{&quot;label&quot;:&quot;Week&quot;,&quot;variableType&quot;:&quot;independent&quot;,&quot;measure&quot;:&quot;interval&quot;,&quot;datatype&quot;:&quot;string&quot;,&quot;displayType&quot;:{&quot;type&quot;:&quot;axis&quot;,&quot;orientation&quot;:&quot;horizontal&quot;}},&quot;y&quot;:{&quot;label&quot;:&quot;Fleet mean energy per page (Wh)&quot;,&quot;variableType&quot;:&quot;dependent&quot;,&quot;measure&quot;:&quot;ratio&quot;,&quot;datatype&quot;:&quot;number&quot;,&quot;displayType&quot;:{&quot;type&quot;:&quot;axis&quot;,&quot;orientation&quot;:&quot;vertical&quot;},&quot;units&quot;:&quot;Wh&quot;}},&quot;series&quot;:[{&quot;key&quot;:&quot;Fleet mean energy per page (Wh)&quot;,&quot;records&quot;:[{&quot;x&quot;:&quot;2026-W25&quot;,&quot;y&quot;:&quot;1.041&quot;},{&quot;x&quot;:&quot;2026-W26&quot;,&quot;y&quot;:&quot;1.021&quot;},{&quot;x&quot;:&quot;2026-W27&quot;,&quot;y&quot;:&quot;1.044&quot;},{&quot;x&quot;:&quot;2026-W28&quot;,&quot;y&quot;:&quot;1.033&quot;}]}],&quot;data&quot;:{&quot;source&quot;:&quot;inline&quot;},&quot;settings&quot;:{&quot;controlPanel.isControlPanelDefaultOpen&quot;:false}}]}">
<figcaption>Fleet mean energy per page (Wh) over 4 weeks — better (1.041 Wh → 1.033 Wh)</figcaption>
<svg viewBox="0 0 640 180" class="linechart chart-fallback" role="img" aria-label="Fleet mean energy per page (Wh) trend: better (1.041 Wh → 1.033 Wh)" preserveAspectRatio="xMidYMid meet">
<polyline points="40.0,16.4 236.0,19.0 432.0,16.0 628.0,17.4" fill="none" stroke="currentColor" stroke-width="2"/>
<circle cx="40.0" cy="16.4" r="2.5" fill="currentColor"/><circle cx="236.0" cy="19.0" r="2.5" fill="currentColor"/><circle cx="432.0" cy="16.0" r="2.5" fill="currentColor"/><circle cx="628.0" cy="17.4" r="2.5" fill="currentColor"/><text x="40.0" y="172" text-anchor="middle" class="axis">W25</text><text x="236.0" y="172" text-anchor="middle" class="axis">W26</text><text x="628.0" y="172" text-anchor="middle" class="axis">W28</text><text x="4" y="20.0" class="axis">1.044</text><text x="4" y="156.0" class="axis">0</text>
</svg>
<table class="visually-hidden"><caption>Fleet mean energy per page (Wh) by week</caption>
<thead><tr><th scope="col">Week</th><th scope="col">Fleet mean energy per page (Wh)</th></tr></thead>
<tbody><tr><th scope="row">2026-W25</th><td>1.041 Wh</td></tr><tr><th scope="row">2026-W26</th><td>1.021 Wh</td></tr><tr><th scope="row">2026-W27</th><td>1.044 Wh</td></tr><tr><th scope="row">2026-W28</th><td>1.033 Wh</td></tr></tbody></table>
</figure>
<section aria-labelledby="h-worst">
<h2 id="h-worst"><a class="anchor" href="#h-worst" aria-label="Link to this section"></a>Worst offenders across all domains</h2>
<p class="meta">Highest-impact issues fleet-wide, ranked by pages affected × severity × people reached — where to focus effort first.</p>
<table>
<caption>Top 20 issues across all active domains.</caption>
<thead><tr><th scope="col">Domain</th><th scope="col">Issue</th><th scope="col">Severity</th><th scope="col">Pages</th></tr></thead>
<tbody><tr>
<th scope="row"><a href="reports/news.va.gov/2026-W28/index.html">news.va.gov</a></th>
<td>All page content should be contained by landmarks (WCAG criterion undetermined)</td>
<td><span class="sev-badge">High</span></td>
<td class="num">1044</td>
</tr>
<tr>
<th scope="row"><a href="reports/benefits.va.gov/2026-W28/index.html">benefits.va.gov</a></th>
<td>Document should have one main landmark (WCAG criterion undetermined)</td>
<td><span class="sev-badge">High</span></td>
<td class="num">622</td>
</tr>
<tr>
<th scope="row"><a href="reports/benefits.va.gov/2026-W28/index.html">benefits.va.gov</a></th>
<td>All page content should be contained by landmarks (WCAG criterion undetermined)</td>
<td><span class="sev-badge">High</span></td>
<td class="num">619</td>
</tr>
<tr>
<th scope="row"><a href="reports/volunteer.va.gov/2026-W28/index.html">volunteer.va.gov</a></th>
<td>Document should not have more than one banner landmark (WCAG criterion undetermined)</td>
<td><span class="sev-badge">High</span></td>
<td class="num">502</td>
</tr>
<tr>
<th scope="row"><a href="reports/volunteer.va.gov/2026-W28/index.html">volunteer.va.gov</a></th>
<td>Document should have one main landmark (WCAG criterion undetermined)</td>
<td><span class="sev-badge">High</span></td>
<td class="num">502</td>
</tr>
<tr>
<th scope="row"><a href="reports/volunteer.va.gov/2026-W28/index.html">volunteer.va.gov</a></th>
<td>Landmarks should have a unique role or role/label/title (i.e. accessible name) c (WCAG criterion undetermined)</td>
<td><span class="sev-badge">High</span></td>
<td class="num">502</td>
</tr>
<tr>
<th scope="row"><a href="reports/volunteer.va.gov/2026-W28/index.html">volunteer.va.gov</a></th>
<td>All page content should be contained by landmarks (WCAG criterion undetermined)</td>
<td><span class="sev-badge">High</span></td>
<td class="num">502</td>
</tr>
<tr>
<th scope="row"><a href="reports/www.va.gov/2026-W28/index.html">www.va.gov</a></th>
<td>Target Size (Minimum) (WCAG 2.5.8)</td>
<td><span class="sev-badge">Medium</span></td>
<td class="num">522</td>
</tr>
<tr>
<th scope="row"><a href="reports/news.va.gov/2026-W28/index.html">news.va.gov</a></th>
<td>Target Size (Minimum) (WCAG 2.5.8)</td>
<td><span class="sev-badge">Medium</span></td>
<td class="num">514</td>
</tr>
<tr>
<th scope="row"><a href="reports/www.va.gov/2026-W28/index.html">www.va.gov</a></th>
<td>Name, Role, Value (WCAG 4.1.2)</td>
<td><span class="sev-badge">Medium</span></td>
<td class="num">503</td>
</tr>
<tr>
<th scope="row"><a href="reports/www.va.gov/2026-W28/index.html">www.va.gov</a></th>
<td>Increase text contrast to meet WCAG AAA (7:1). (WCAG 1.4.3)</td>
<td><span class="sev-badge">Medium</span></td>
<td class="num">522</td>
</tr>
<tr>
<th scope="row"><a href="reports/news.va.gov/2026-W28/index.html">news.va.gov</a></th>
<td>sia-r73 (WCAG criterion undetermined)</td>
<td><span class="sev-badge">Medium</span></td>
<td class="num">514</td>
</tr>
<tr>
<th scope="row"><a href="reports/news.va.gov/2026-W28/index.html">news.va.gov</a></th>
<td>sia-r57 (WCAG criterion undetermined)</td>
<td><span class="sev-badge">Medium</span></td>
<td class="num">514</td>
</tr>
<tr>
<th scope="row"><a href="reports/news.va.gov/2026-W28/index.html">news.va.gov</a></th>
<td>Make links visually distinguishable from surrounding text (not by color alone). (WCAG 1.4.1)</td>
<td><span class="sev-badge">Medium</span></td>
<td class="num">514</td>
</tr>
<tr>
<th scope="row"><a href="reports/news.va.gov/2026-W28/index.html">news.va.gov</a></th>
<td>Increase text contrast to meet WCAG AAA (7:1). (WCAG 1.4.3)</td>
<td><span class="sev-badge">Medium</span></td>
<td class="num">514</td>
</tr>
<tr>
<th scope="row"><a href="reports/news.va.gov/2026-W28/index.html">news.va.gov</a></th>
<td>Increase text contrast to meet WCAG AA (4.5:1, or 3:1 for large text). (WCAG 1.4.3)</td>
<td><span class="sev-badge">Medium</span></td>
<td class="num">514</td>
</tr>
<tr>
<th scope="row"><a href="reports/www.va.gov/2026-W28/index.html">www.va.gov</a></th>
<td>sia-r73 (WCAG criterion undetermined)</td>
<td><span class="sev-badge">Medium</span></td>
<td class="num">510</td>
</tr>
<tr>
<th scope="row"><a href="reports/www.va.gov/2026-W28/index.html">www.va.gov</a></th>
<td>Label in Name (WCAG 2.5.3)</td>
<td><span class="sev-badge">Medium</span></td>
<td class="num">508</td>
</tr>
<tr>
<th scope="row"><a href="reports/news.va.gov/2026-W28/index.html">news.va.gov</a></th>
<td>Label in Name (WCAG 2.5.3)</td>
<td><span class="sev-badge">Medium</span></td>
<td class="num">502</td>
</tr>
<tr>
<th scope="row"><a href="reports/benefits.va.gov/2026-W28/index.html">benefits.va.gov</a></th>
<td>Target Size (Minimum) (WCAG 2.5.8)</td>
<td><span class="sev-badge">Medium</span></td>
<td class="num">364</td>
</tr></tbody>
</table>
</section>
<section aria-labelledby="h-techfindings">
<h2 id="h-techfindings"><a class="anchor" href="#h-techfindings" aria-label="Link to this section"></a>Cross-technology issues</h2>
<p class="meta">Accessibility findings that recur with the same technology across multiple sites — the strongest signal that a barrier lives in a shared CMS, theme, or widget rather than in one site's content. Ranked by lift × number of sites affected. Association, not proof of cause: confirm before attributing.</p>
<table class="sortable">
<caption>Top 25 technology ↔ finding associations spanning ≥2 sites.</caption>
<thead><tr>
<th scope="col">Technology</th>
<th scope="col">Finding</th>
<th scope="col" class="num">Lift</th>
<th scope="col" class="num">Sites</th>
<th scope="col" class="num">Pages</th>
</tr></thead>
<tbody><tr>
<th scope="row">Microsoft ASP.NET</th>
<td>landmark-unique (axe)</td>
<td class="num">3.53×</td>
<td class="num">3</td>
<td class="num">63</td>
</tr>
<tr>
<th scope="row">Bootstrap</th>
<td>landmark-unique (axe)</td>
<td class="num">2.91×</td>
<td class="num">3</td>
<td class="num">64</td>
</tr>
<tr>
<th scope="row">jQuery CDN</th>
<td>landmark-unique (axe)</td>
<td class="num">2.87×</td>
<td class="num">3</td>
<td class="num">65</td>
</tr>
<tr>
<th scope="row">jQuery Migrate</th>
<td>landmark-unique (axe)</td>
<td class="num">2.87×</td>
<td class="num">3</td>
<td class="num">65</td>
</tr>
<tr>
<th scope="row">jQuery CDN</th>
<td>landmark-one-main (axe)</td>
<td class="num">2.86×</td>
<td class="num">3</td>
<td class="num">109</td>
</tr>
<tr>
<th scope="row">jQuery Migrate</th>
<td>landmark-one-main (axe)</td>
<td class="num">2.86×</td>
<td class="num">3</td>
<td class="num">109</td>
</tr>
<tr>
<th scope="row">Bootstrap</th>
<td>landmark-one-main (axe)</td>
<td class="num">2.86×</td>
<td class="num">3</td>
<td class="num">106</td>
</tr>
<tr>
<th scope="row">Microsoft ASP.NET</th>
<td>landmark-one-main (axe)</td>
<td class="num">2.86×</td>
<td class="num">3</td>
<td class="num">86</td>
</tr>
<tr>
<th scope="row">Microsoft ASP.NET</th>
<td>landmark-no-duplicate-banner (axe)</td>
<td class="num">3.63×</td>
<td class="num">2</td>
<td class="num">56</td>
</tr>
<tr>
<th scope="row">Bootstrap</th>
<td>landmark-no-duplicate-banner (axe)</td>
<td class="num">3.00×</td>
<td class="num">2</td>
<td class="num">57</td>
</tr>
<tr>
<th scope="row">jQuery</th>
<td>sia-r57 (alfa)</td>
<td class="num">1.48×</td>
<td class="num">4</td>
<td class="num">104</td>
</tr>
<tr>
<th scope="row">USWDS</th>
<td>sia-r57 (alfa)</td>
<td class="num">1.48×</td>
<td class="num">4</td>
<td class="num">104</td>
</tr>
<tr>
<th scope="row">YouTube</th>
<td>sia-r57 (alfa)</td>
<td class="num">1.47×</td>
<td class="num">4</td>
<td class="num">103</td>
</tr>
<tr>
<th scope="row">jQuery</th>
<td>region (axe)</td>
<td class="num">1.47×</td>
<td class="num">4</td>
<td class="num">215</td>
</tr>
<tr>
<th scope="row">USWDS</th>
<td>region (axe)</td>
<td class="num">1.47×</td>
<td class="num">4</td>
<td class="num">215</td>
</tr>
<tr>
<th scope="row">YouTube</th>
<td>region (axe)</td>
<td class="num">1.47×</td>
<td class="num">4</td>
<td class="num">214</td>
</tr>
<tr>
<th scope="row">jQuery CDN</th>
<td>landmark-no-duplicate-banner (axe)</td>
<td class="num">2.92×</td>
<td class="num">2</td>
<td class="num">57</td>
</tr>
<tr>
<th scope="row">jQuery Migrate</th>
<td>landmark-no-duplicate-banner (axe)</td>
<td class="num">2.92×</td>
<td class="num">2</td>
<td class="num">57</td>
</tr>
<tr>
<th scope="row">YouTube</th>
<td>heading-order (axe)</td>
<td class="num">1.26×</td>
<td class="num">4</td>
<td class="num">28</td>
</tr>
<tr>
<th scope="row">jQuery</th>
<td>heading-order (axe)</td>
<td class="num">1.25×</td>
<td class="num">4</td>
<td class="num">28</td>
</tr>
<tr>
<th scope="row">USWDS</th>
<td>heading-order (axe)</td>
<td class="num">1.25×</td>
<td class="num">4</td>
<td class="num">28</td>
</tr>
<tr>
<th scope="row">YouTube</th>
<td>sia-r53 (alfa)</td>
<td class="num">1.24×</td>
<td class="num">4</td>
<td class="num">15</td>
</tr>
<tr>
<th scope="row">jQuery</th>
<td>sia-r53 (alfa)</td>
<td class="num">1.23×</td>
<td class="num">4</td>
<td class="num">15</td>
</tr>
<tr>
<th scope="row">USWDS</th>
<td>sia-r53 (alfa)</td>
<td class="num">1.23×</td>
<td class="num">4</td>
<td class="num">15</td>
</tr>
<tr>
<th scope="row">Amazon S3</th>
<td>landmark-unique (axe)</td>
<td class="num">1.52×</td>
<td class="num">3</td>
<td class="num">66</td>
</tr></tbody>
</table>
</section>
<section aria-labelledby="h-why">
<h2 id="h-why"><a class="anchor" href="#h-why" aria-label="Link to this section"></a>Why this exists</h2>
<p>Continuous measurement beats one-off audits. This ledger tracks whether each site is getting more
accessible and lighter over time, using <a href="https://github.com/dequelabs/axe-core">axe-core</a> and
<a href="https://github.com/Siteimprove/alfa">Alfa</a> (the open source engine behind Siteimprove) for
accessibility, and page weight with <a href="https://sustainablewebdesign.org/">Sustainable Web Design</a>
CO₂ estimates for sustainability. Everything here is open: the scanner, the data, and the reports.</p>
</section>
</main>
<footer>
<p>Built in the open with <a href="https://github.com/dequelabs/axe-core">axe-core</a> and
<a href="https://github.com/Siteimprove/alfa">Siteimprove Alfa</a>; emissions estimated with
<a href="https://github.com/thegreenwebfoundation/co2.js">co2.js</a> (SWD v4 model).</p>
<p>This project follows public commitments to
<a href="https://mgifford.github.io/ACCESSIBILITY.md/">accessibility</a> and
<a href="https://mgifford.github.io/SUSTAINABILITY.md/">sustainability</a>, and the
<a href="https://w3c.github.io/sustainableweb-wsg/">W3C Web Sustainability Guidelines</a>.</p>
<p>Automated checks find roughly a third of accessibility barriers. A clean report is a floor, not a finish line.</p>
</footer>
<script type="module">
const figs = document.querySelectorAll('.chart[data-parachart]');
if (figs.length) {
import('paracharts.js').then(() => {
figs.forEach((fig) => {
let manifest;
try { manifest = fig.getAttribute('data-parachart'); } catch (e) { return; }
if (!manifest) return;
const chart = document.createElement('para-chart');
chart.setAttribute('manifestType', 'content');
chart.setAttribute('type', 'line');
chart.setAttribute('manifest', manifest);
chart.style.display = 'block';
chart.style.width = '100%';
chart.style.maxWidth = '640px';
chart.style.aspectRatio = '16 / 7';
const fallback = fig.querySelector('.chart-fallback');
if (fallback) fallback.hidden = true;
fig.insertBefore(chart, fig.firstChild ? fig.firstChild.nextSibling : null);
});
}).catch(() => { /* keep the SVG + table fallback */ });
}
</script>
</body>
</html>

Xet Storage Details

Size:
24 kB
·
Xet hash:
5794123151379791e648b009511c0335cc48b826bac973ab0f6bc8afc76d38e6

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.