Accessibility
· 13 checks — Landmarks, headings, alt text, forms, and link quality rolled into one auditable list.FLink & Button QualityAction5 issue(s) across 218 links and 12 buttonsFIX
| Element | Text | Issue | Suggested Fix |
|---|---|---|---|
| (empty) | empty | Add link text or aria-label | |
| /help/faq/borrow | Read Free Library Books Online… | img no alt | Add alt attribute to the image |
| /help/faq/yearly-reading-goals | Set a Yearly Reading Goal … | img no alt | Add alt attribute to the image |
| /help/faq/reading-log | Keep Track of your Favorite Bo… | img no alt | Add alt attribute to the image |
| /explore | Try the virtual Library Explor… | img no alt | Add alt attribute to the image |
| /search/inside | Try Fulltext Search Find… | img no alt | Add alt attribute to the image |
| /librarians | Be an Open Librarian Doz… | img no alt | Add alt attribute to the image |
| /volunteer | Volunteer at Open Library … | img no alt | Add alt attribute to the image |
| https://forms.gle/enM9rGoPBGB89kd4A | Send us feedback Your fe… | img no alt | Add alt attribute to the image |
| /books/OL19479826M/-/borrow?action=locat… | Locate | new tab | Add '(opens in new tab)' to text |
| /books/OL17210284M/-/borrow?action=locat… | Locate | new tab | Add '(opens in new tab)' to text |
| /subjects/art#sort=date_published&ebooks… | Art 129,779 Books | img no alt | Add alt attribute to the image |
| /subjects/science_fiction#sort=date_publ… | Science Fiction 20,9… | img no alt | Add alt attribute to the image |
| /subjects/fantasy#sort=date_published&eb… | Fantasy 14,387 Books | img no alt | Add alt attribute to the image |
| /subjects/biographies#sort=date_publishe… | Biographies 26,508 B… | img no alt | Add alt attribute to the image |
| /subjects/recipes#sort=date_published&eb… | Recipes 9,623 Books | img no alt | Add alt attribute to the image |
| /subjects/romance#sort=date_published&eb… | Romance 21,743 Books | img no alt | Add alt attribute to the image |
| /subjects/textbooks#sort=date_published&… | Textbooks 39,024 Boo… | img no alt | Add alt attribute to the image |
| /subjects/children#sort=date_published&e… | Children 59,448 Book… | img no alt | Add alt attribute to the image |
| /subjects/history#sort=date_published&eb… | History 2,468,742 Bo… | img no alt | Add alt attribute to the image |
| /subjects/medicine#sort=date_published&e… | Medicine 60,772 Book… | img no alt | Add alt attribute to the image |
| /subjects/religion#sort=date_published&e… | Religion 166,126 Boo… | img no alt | Add alt attribute to the image |
| /subjects/mystery_and_detective_stories#… | Mystery and Detective Stories … | img no alt | Add alt attribute to the image |
| /subjects/plays#sort=date_published&eboo… | Plays 3,025 Books | img no alt | Add alt attribute to the image |
| /subjects/music#sort=date_published&eboo… | Music 88,700 Books | img no alt | Add alt attribute to the image |
| /subjects/science#sort=date_published&eb… | Science 103,487 Book… | img no alt | Add alt attribute to the image |
| /about | More | generic text | Replace with descriptive text |
Before: More Suggested: About | |||
| https://bsky.app/profile/openlibrary.org | Bluesky | img no alt | Add alt attribute to the image |
| https://twitter.com/OpenLibrary | img no alt | Add alt attribute to the image | |
| https://github.com/internetarchive/openl… | GitHub | img no alt | Add alt attribute to the image |
| <button> | (empty) | empty | Add button text or aria-label |
| <button> | (empty) | empty | Add button text or aria-label |
| <button> | (empty) | empty | Add button text or aria-label |
Links without text are announced as raw URLs by screen readers.
a (#250 on page)
Links with no accessible text (empty <a></a>, image-only no alt, icon-only no aria-label) are unidentifiable to screen readers.
Source: WCAG 2.1 SC 2.4.4
Generic link text like 'click here' doesn't describe the destination.
/about ("More")
Generic anchor text ('click here', 'read more', 'learn more') tells screen readers and search engines nothing about the destination.
Learn more ▾ ▴
Out-of-context lists of links read by AT (one navigation pattern) become useless when every link says 'click here'. Use the destination's title or topic as anchor text. Doubles as SEO win — Google passes anchor-text relevance to the destination.
Source: WCAG 2.4.4 / Google Search Central
Image-only links need alt text on the image (or aria-label on the link) so screen readers can announce them.
a[href="/help/faq/borrow"]; a[href="/help/faq/yearly-reading-goals"]; a[href="/help/faq/reading-log"]; a[href="/explore"]; a[href="/search/inside"]; a[href="/librarians"]; a[href="/volunteer"]; a[href="https://forms.gle/enM9rGoPBGB89kd4A"]; a[href="/subjects/art#sort=date_published&ebooks=true"]; a[href="/subjects/science_fiction#sort=date_published&ebooks=true"] (+16 more)
Image-only links with no alt are unidentifiable to screen-reader users — link's destination is invisible.
Source: WCAG 2.1 SC 2.4.4
Add '(opens in new tab)' to link text or aria-label.
/books/OL19479826M/-/borrow?action=locate; /books/OL17210284M/-/borrow?action=locate
Links with target="_blank" without rel="noopener" leak the originating page's window context — security and UX issue.
Learn more ▾ ▴
Without rel="noopener", the new tab can navigate the original tab via window.opener (tab-nabbing attack). Modern browsers default to noopener for target=_blank but only since recent versions. Always set rel="noopener noreferrer" explicitly.
Source: MDN target / OWASP
Icon-only buttons need an aria-label so screen readers can announce them.
button#cboxPrevious; button#cboxNext; button#cboxSlideshow
Buttons with no accessible text (icon-only, no aria-label) can't be activated by voice control or understood by screen readers.
Source: WCAG 2.1 SC 4.1.2
DDark Mode SupportActionTheme color onlyFIX
Detection limited to meta tags and inline styles.
DPrint StylesheetActionNo print stylesFIX
BLandmark Structure5 landmarksREVIEW
Add a skip link as the first focusable element so keyboard users can bypass repeated navigation.
Without a skip-nav link, keyboard users tab through every nav item before reaching content — every page, every visit.
Learn more ▾ ▴
WCAG 2.4.1 (Bypass Blocks) requires a mechanism to skip past repeated content. The standard implementation is a 'Skip to main content' link that's the first focusable element, visually hidden until focused. Three lines of HTML + four of CSS.
Source: WCAG 2.1 SC 2.4.1
BHeading Hierarchy13 headingsREVIEW
- H2 Preview Book
- H2 Welcome to Open Library
- H2 Books We Love
- H2 Recently Returned
- H2 Browse by Subject
- H2 Around the Library
- H2 About the Project
- H3 Latest Blog Posts
- H2 Open Library
- H2 Discover
- H2 Develop
- H2 Help
- H2 Change Website Language
Every page should have one H1 that describes the page content.
No H1 means screen-reader users can't identify the page's primary topic, and Google's content-extraction degrades.
Learn more ▾ ▴
The H1 is the document title for assistive tech and a strong signal to search engines about page topic. Pages without one force screen readers to fall back to the <title> attribute or page chrome. Add a single H1 that names the page's primary subject.
Source: WCAG 2.4.6 / Google Search Central
BFavicon & Branding11 icon(s) detectedREVIEW
CColor Contrast (Screenshot)Action20 text elements analyzed, 1 fail WCAG AAREVIEW
Analyzes text contrast against the actual rendered page, including background images, gradients, and overlays that CSS-based tools cannot detect.
Show all checked elements (20)
| Element | Ratio | Required | FG | BG | Result |
|---|---|---|---|---|---|
| h2 Preview Book | 10.92:1 | 3.0:1 | #000000 | #BBBCAE | Pass |
| h2 Welcome to Open Libr… | 10.92:1 | 3.0:1 | #000000 | #BBBCAE | Pass |
| h2 Around the Library | 10.92:1 | 3.0:1 | #000000 | #BBBCAE | Pass |
| h2 About the Project | 10.92:1 | 3.0:1 | #000000 | #BBBCAE | Pass |
| h2 Open Library | 10.92:1 | 3.0:1 | #000000 | #BBBCAE | Pass |
| h2 Discover | 10.92:1 | 3.0:1 | #000000 | #BBBCAE | Pass |
| h2 Develop | 10.92:1 | 3.0:1 | #000000 | #BBBCAE | Pass |
| h2 Help | 10.92:1 | 3.0:1 | #000000 | #BBBCAE | Pass |
| h2 Change Website Langu… | 10.92:1 | 3.0:1 | #000000 | #BBBCAE | Pass |
| title Welcome to Open Libr… | 1.66:1 | 4.5:1 | #000000 | #333333 | Fail |
| div It looks like you're… | 17.00:1 | 4.5:1 | #000000 | #EDE7D6 | Pass |
| a Donate | 17.68:1 | 4.5:1 | #000000 | #F2EBDB | Pass |
| span ♥ | 15.28:1 | 4.5:1 | #000000 | #E2DCC5 | Pass |
| span English (en) | 10.92:1 | 4.5:1 | #000000 | #BBBCAE | Pass |
| a العربية (ar) | 10.92:1 | 4.5:1 | #000000 | #BBBCAE | Pass |
| a Čeština (cs) | 10.92:1 | 4.5:1 | #000000 | #BBBCAE | Pass |
| a Deutsch (de) | 10.92:1 | 4.5:1 | #000000 | #BBBCAE | Pass |
| a English (en) | 10.92:1 | 4.5:1 | #000000 | #BBBCAE | Pass |
| a Español (es) | 10.92:1 | 4.5:1 | #000000 | #BBBCAE | Pass |
| a Français (fr) | 10.92:1 | 4.5:1 | #000000 | #BBBCAE | Pass |
Methodology: The top 20 text elements by font size were checked. Background color was sampled from the desktop screenshot using a 5-point pattern. WCAG 2.1 AA requires 4.5:1 for normal text and 3:1 for large text.
A+Alt Text QualityAll 72 images OKPASS
A+Form AccessibilityAll 3 controls labeledPASS
| Control | Type | Label | Method |
|---|---|---|---|
| select | select | All | none |
| q | text | Search | aria-label |
| input | submit | Search submit | aria-label |
A404 Error PageHTTP 404, custom pagePASS
A+Web ManifestPWA-readyPASS
ALighthouse Accessibility AuditsScore 94/100 — 2 failing, 32 passedPASS
Accessibility
These checks highlight opportunities to improve the accessibility of your web app. Automatic detection can only detect a subset of issues and does not guarantee the accessibility of your web app, so manual testing is also encouraged.
ARIA
When an input field doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. Learn more about input field labels.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Read Free Library Books Online
Millions of books available through Controlled … div.carousel-container > div.carousel > div.slick-list > div.slick-track |
Borrow
Checked Out
Borrow
Read
Preview Only
Borrow
Read
Preview Only
Locate
Rea… div.carousel-container > div.carousel > div.slick-list > div.slick-track |
Read
Checked Out
Read
Read
Read
Read
Audiobook
Borrow
Read
Checked Out
Borrow
B… div.carousel-container > div.carousel > div.slick-list > div.slick-track |
Borrow
Borrow
Borrow
Borrow
Borrow
Borrow
Borrow
Borrow
Borrow
Borrow
Borrow
Bo… div.carousel-container > div.carousel > div.slick-list > div.slick-track |
Borrow
Borrow
Borrow
Borrow
Borrow
Borrow
Borrow
Borrow
Borrow
Borrow
Borrow
Lo… div.carousel-container > div.carousel > div.slick-list > div.slick-track |
Art
129,779 Books
Science Fiction
20,982 Books
Fantasy
14,387 Books
Biogr… div.carousel-container > div.carousel > div.slick-list > div.slick-track |
These are opportunities to improve the usage of ARIA in your application which may enhance the experience for users of assistive technology, like a screen reader.
Best practices
Touch targets with sufficient size and spacing help users who may have difficulty targeting small controls to activate the targets. Learn more about touch targets.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Home div > ul > li > a |
Books div > ul > li > a |
Authors div > ul > li > a |
Subjects div > ul > li > a |
Collections div > ul > li > a |
Developer Center div > ul > li > a |
API Documentation div > ul > li > a |
Bulk Data Dumps div > ul > li > a |
Help Center div > ul > li > a |
Contact Us div > ul > li > a |
العربية (ar) div > ul.locale-options > li > a |
Čeština (cs) div > ul.locale-options > li > a |
Deutsch (de) div > ul.locale-options > li > a |
English (en) div > ul.locale-options > li > a |
Español (es) div > ul.locale-options > li > a |
Français (fr) div > ul.locale-options > li > a |
हिंदी (hi) div > ul.locale-options > li > a |
Hrvatski (hr) div > ul.locale-options > li > a |
Italiano (it) div > ul.locale-options > li > a |
Português (pt) div > ul.locale-options > li > a |
Română (ro) div > ul.locale-options > li > a |
Sardu (sc) div > ul.locale-options > li > a |
తెలుగు (te) div > ul.locale-options > li > a |
Українська (uk) div > ul.locale-options > li > a |
These items highlight common accessibility best practices.