Accessibility
· 13 checks — Landmarks, headings, alt text, forms, and link quality rolled into one auditable list.F404 Error PageActionHTTP 403, custom pageFIX
FFavicon & BrandingAction2 icon(s) detectedFIX
DWeb ManifestActionNot foundFIX
No web manifest found.
DDark Mode SupportActionNo dark mode signalsFIX
Detection limited to meta tags and inline styles.
DPrint StylesheetActionNo print stylesFIX
CLandmark StructureAction1 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
CLink & Button QualityAction1 issue(s) across 158 links and 30 buttonsREVIEW
| Element | Text | Issue | Suggested Fix |
|---|---|---|---|
| https://help.inaturalist.org | More | generic text | Replace with descriptive text |
Before: More Suggested: Help.Inaturalist.Org | |||
| https://tr.ee/FYNsVb | Rediscovering long-lost specie… | new tab | Add '(opens in new tab)' to text |
| https://tr.ee/j29kgK | Discovering new-to-science spe… | new tab | Add '(opens in new tab)' to text |
| https://tr.ee/hQZIFH | Protecting local ecosystems … | new tab | Add '(opens in new tab)' to text |
| /observations/153739963 | View Observation | new tab | Add '(opens in new tab)' to text |
| /people/dzivulajr_03 | Dzivula Gube Marine Conservati… | new tab | Add '(opens in new tab)' to text |
| /people/humanbyweight | Chris Alice "Alie" Kratzer Fie… | new tab | Add '(opens in new tab)' to text |
| /people/amila_sumanapala | Amila Sumanapala Biodiversity … | new tab | Add '(opens in new tab)' to text |
| /people/nah_fachetti19 | Nágyla Fachetti Coser Environ… | new tab | Add '(opens in new tab)' to text |
| /people/aztekium | Carlos G. Velazco-Macias Biolo… | new tab | Add '(opens in new tab)' to text |
| https://www.sfgate.com/local/article/ina… | The nicest place online | new tab | Add '(opens in new tab)' to text |
| https://apps.apple.com/app/apple-store/i… | Download on the App Store | new tab | Add '(opens in new tab)' to text |
| https://play.google.com/store/apps/detai… | Get it on Google Play | new tab | Add '(opens in new tab)' to text |
| /observations/293778918 | cryokinesis Goldenrod Cra… | new tab | Add '(opens in new tab)' to text |
| /observations/286445539 | adrian2370 Paraplanocera … | new tab | Add '(opens in new tab)' to text |
| /observations/285912486 | myconeer Mycena podocarpi… | new tab | Add '(opens in new tab)' to text |
| /observations/276441627 | luca_dt Calvatomina super… | new tab | Add '(opens in new tab)' to text |
| /observations/275114059 | srichakrapranav Phidiana … | new tab | Add '(opens in new tab)' to text |
| /observations/266791102 | swordgrass white fawnlily… | new tab | Add '(opens in new tab)' to text |
| /observations/265635978 | alex_shure Nereidinae … | new tab | Add '(opens in new tab)' to text |
| /observations/265386961 | shou_1221 Neotrichozetes … | new tab | Add '(opens in new tab)' to text |
| /observations/265118975 | liznoble ruby bonnet Crue… | new tab | Add '(opens in new tab)' to text |
| /observations/264419988 | moth_nut Paridotea ungula… | new tab | Add '(opens in new tab)' to text |
| /observations/263045673 | abhiapc Teleopsis sykesii… | new tab | Add '(opens in new tab)' to text |
| /observations/260473262 | bektemirosmonali Climacop… | new tab | Add '(opens in new tab)' to text |
| /observations/259241789 | ohwhen Common Sunburst Li… | new tab | Add '(opens in new tab)' to text |
| /observations/258827087 | timlindlof Eurasian Otter… | new tab | Add '(opens in new tab)' to text |
| /observations/258349114 | tetracerus Arcyria Sa… | new tab | Add '(opens in new tab)' to text |
| /observations/256726247 | cicciocostarica Hairy Oys… | new tab | Add '(opens in new tab)' to text |
| /observations/256481438 | andrewpavlov Willie Wagta… | new tab | Add '(opens in new tab)' to text |
| /observations/255961537 | lloyd_esler Rivularia … | new tab | Add '(opens in new tab)' to text |
| /observations/254160994 | oscarkokako King Penguin … | new tab | Add '(opens in new tab)' to text |
| /observations/251945802 | xoabird Southern Gerenuk … | new tab | Add '(opens in new tab)' to text |
| https://apps.apple.com/app/apple-store/i… | Download on the App Store | new tab | Add '(opens in new tab)' to text |
| https://play.google.com/store/apps/detai… | Get it on Google Play | new tab | Add '(opens in new tab)' to text |
| https://www.facebook.com/inaturalist/ | img no alt | Add alt attribute to the image | |
| https://bsky.app/profile/inaturalist.bsk… | Bluesky | img no alt | Add alt attribute to the image |
Generic link text like 'click here' doesn't describe the destination.
https://help.inaturalist.org ("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="/observations/293778918"]; a[href="/observations/286445539"]; a[href="/observations/285912486"]; a[href="/observations/276441627"]; a[href="/observations/275114059"]; a[href="/observations/266791102"]; a[href="/observations/265635978"]; a[href="/observations/265386961"]; a[href="/observations/265118975"]; a[href="/observations/264419988"] (+12 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.
https://tr.ee/FYNsVb; https://tr.ee/j29kgK; https://tr.ee/hQZIFH; /observations/153739963; /people/dzivulajr_03; /people/humanbyweight; /people/amila_sumanapala; /people/nah_fachetti19; /people/aztekium; https://www.sfgate.com/local/article/inaturalist-app-bay-area-22092747.php (+4 more)
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
CLighthouse Accessibility AuditsActionScore 73/100 — 6 failing, 19 passedREVIEW
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
Each ARIA `role` supports a specific subset of `aria-*` attributes. Mismatching these invalidates the `aria-*` attributes. Learn how to match ARIA attributes to their roles.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
div#header > div#narrow-menu > div.dropdown > div#header-narrow-dropdown-toggle div#header > div#narrow-menu > div.dropdown > div#header-narrow-dropdown-toggle |
Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid values. Learn more about valid values for ARIA attributes.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
English
Toggle Dropdown div.row > div.col-xs-12 > div#footer-locale-chooser > button.btn |
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.
Contrast
Low-contrast text is difficult or impossible for many users to read. Learn how to provide sufficient color contrast.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Read more stories div#wrapper > main.wv2 > div.wv2-section > a.btn |
Donate now div#wrapper > main.wv2 > div.wv2-section > a.btn |
DONATE div.row > div.col-sm-3 > div.one-line > a.btn |
STORE div.row > div.col-sm-3 > div.one-line > a.btn |
Member of the iNaturalist Network div.row > div.col-xs-12 > div.links > div.footer-link |
Powered by iNaturalist open source software div.row > div.col-xs-12 > div.links > div.footer-link |
Documentation for developers div.row > div.col-xs-12 > div.links > div.footer-link |
These are opportunities to improve the legibility of your content.
Tables and lists
When definition lists are not properly marked up, screen readers may produce confusing or inaccurate output. Learn how to structure definition lists correctly.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Who
tiwane
What
Emerald Glass Frog
Espadarana prosoblepon
Where
Barrio Flamin… div#wrapper > main.wv2 > div.wv2-section > dl.wv2-observation |
Definition list items (`<dt>` and `<dd>`) must be wrapped in a parent `<dl>` element to ensure that screen readers can properly announce them. Learn how to structure definition lists correctly.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Who dl.wv2-observation > div.wv2-observation__col > div.wv2-observation__row > dt |
tiwane dl.wv2-observation > div.wv2-observation__col > div.wv2-observation__row > dd.wv2-observation__who |
What dl.wv2-observation > div.wv2-observation__col > div.wv2-observation__row > dt |
Emerald Glass Frog
Espadarana prosoblepon dl.wv2-observation > div.wv2-observation__col > div.wv2-observation__row > dd |
Where dl.wv2-observation > div.wv2-observation__col > div.wv2-observation__row > dt |
Barrio Flaminia, Heredia, Sarapiquí, Costa Rica dl.wv2-observation > div.wv2-observation__col > div.wv2-observation__row > dd |
When dl.wv2-observation > div.wv2-observation__col > div.wv2-observation__row > dt |
Mar 25, 2023 · 8:38 PM CST dl.wv2-observation > div.wv2-observation__col > div.wv2-observation__row > dd |
These are opportunities to improve the experience of reading tabular or list data using 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 |
|---|
Testimonial 1 div.wv2-testimonials > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Testimonial 2 div.wv2-testimonials > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Testimonial 3 div.wv2-testimonials > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Testimonial 4 div.wv2-testimonials > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Testimonial 5 div.wv2-testimonials > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 1 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 2 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 3 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 4 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 5 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 6 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 7 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 8 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 9 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 10 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 11 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 12 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 13 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 14 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 15 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 16 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 17 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 18 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 19 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
Observation 20 div.wv2-explore__cards > div.wv2-carousel > div.wv2-carousel__dots > button.wv2-carousel__dot |
These items highlight common accessibility best practices.
A+Heading Hierarchy23 headingsPASS
- H1 Where your curiosity contributes to science.
- H2 With iNaturalist, you can:
- H3 Identify
- H3 Track
- H3 Discover
- H3 Contribute
- H3 Learn
- H2 The power of community science
- H3 Rediscovering long-lost species
- H3 Discovering new-to-science species
- H3 Protecting local ecosystems
- H2 Every observation tells a story
- H3 Observe
- H3 Identify
- H3 Contribute
- H3 Everyone is a naturalist
- H3 You can make an impact
- H3 The nicest place online
- H2 Download the iNaturalist app
- H2 Explore species worldwide
- H2 Under 13? Download Seek!
- H2 Get our monthly newsletter!
- H2 FAQs
A+Alt Text QualityAll 117 images OKPASS
A+Form AccessibilityNo form controlsPASS
A+Color Contrast (Screenshot)20 text elements analyzed, 0 fail WCAG AAPASS
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 |
|---|---|---|---|---|---|
| h1 Where your curiosity… | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h2 With iNaturalist, yo… | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h2 The power of communi… | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h2 Every observation te… | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h2 Download the iNatura… | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h2 Explore species worl… | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h2 Under 13? Download S… | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h2 Get our monthly news… | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h2 FAQs | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h3 Identify | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h3 Track | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h3 Discover | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h3 Contribute | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h3 Learn | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h3 Rediscovering long-l… | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h3 Discovering new-to-s… | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h3 Protecting local eco… | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h3 Observe | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h3 Identify | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | Pass |
| h3 Contribute | 18.32:1 | 3.0:1 | #000000 | #EBF2E1 | 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.