Accessibility
This archive is built as plain, semantic HTML: real headings, real landmarks, real links. It works without JavaScript, and it reflows without a horizontal scrollbar at every width we test — 320, 375, 768 and 1440 pixels.
What we have checked
Every archive-authored page declares its language and uses
header, navigation, main and
footer landmarks. Every page carries a skip-to-content link as
its first element, and interactive elements show a visible focus ring when
you tab to them. Each of those is checked on every page the build produces, and
the build fails if one does not hold.
Which pages these guarantees cover
They cover every page the archive writes. They do not cover facsimile pages, and that is deliberate. A facsimile page is served exactly as it was captured — in Mayor Dude’s case, in 2009 — and period markup often omits things a page written today would carry. Those pages declare no language, and some use layout tables and other constructs a screen reader handles poorly.
This is preservation, not neglect. Editing that markup to satisfy a modern check would alter the artifact, and the artifact is the point: the archive’s promise about a facsimile page is that it is the record, unchanged. So the archive adds only what can sit outside the artifact — a skip link, a provenance bar, a focus style — and changes nothing inside it.
If a facsimile page is hard to use with assistive technology, the archive would rather you had the unaltered record and this warning than a repaired page and no way to know it had been repaired. Every collection carries a chromed index and about surface, written by the archive and covered by the guarantees above, that describe what the facsimile contains.
Contrast ratios below were computed from the shipped :root tokens against the WCAG 2.1 relative-luminance formula, and re-checked whenever a token changes; last verified August 27, 2026. Body text meets WCAG 2.1 AA contrast at 16.3:1. Metadata and captions meet it at 5.6:1. Inline links use a darker ochre that meets AA for
body text; the lighter ochre is reserved for display and small-caps sizes,
where it passes at large-text thresholds. In the footer, where type sits on
ink, those roles reverse and the tokens reverse with them.
The year histogram on the index abbreviates its labels on small screens for space, but the full year stays in the page for screen readers.
A limitation of the record itself
Alt text is preserved exactly as the original site published it. Counted across the whole archive rather than a sample: of 676 images inside recovered posts, 160 carry no alt attribute at all (24%), 391 are marked decorative with an empty alt, and 125 carry description their authors wrote. Every one of the 2,193 images the archive itself emits has alt text.
Writing descriptions for the 160 would mean adding our words to the historical record, which this archive does not do. The gap is the original’s, and we preserve it rather than paper over it.
Structure, measured
Every published post — all 2,193 of them, not a sample — was checked for heading hierarchy and list markup. 2,168 (99%) passed. The exceptions are 24 posts whose author skipped a heading level and 1 carrying a list item outside any list. Both are the record’s own markup and are left as published; landmark structure and the single first-level heading come from the template, so they are correct on every page by construction.
What is still imperfect
Recovered posts carry the markup their authors wrote, across four content management systems and nine years. Some of it is untidy in ways we will not correct, because correcting it would alter the record. Where that markup makes a page harder to use, the fault is ours to route around, not the author’s to answer for.
If something here is unusable for you, please tell us what broke. We will fix what we can and say so plainly when we cannot.