Accessibility
· 13 checks — Landmarks, headings, alt text, forms, and link quality rolled into one auditable list.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
CLink & Button QualityAction163 issue(s) across 526 links and 122 buttonsREVIEW
| Element | Text | Issue | Suggested Fix |
|---|---|---|---|
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| /register/ | here | generic text | Replace with descriptive text |
Before: here Suggested: Register | |||
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <button> | (empty) | empty | Add button text or aria-label |
Generic link text like 'click here' doesn't describe the destination.
/register/ ("here"); /register/ ("here"); /register/ ("here"); /register/ ("here"); /register/ ("here"); /register/ ("here"); /register/ ("here"); /register/ ("here"); /register/ ("here"); /register/ ("here") (+44 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
Icon-only buttons need an aria-label so screen readers can announce them.
button.popover__trigger (#844 on page); button.popover__content__close (#855 on page); button.popover__trigger (#902 on page); button.popover__content__close (#913 on page); button.popover__trigger (#941 on page); button.popover__content__close (#952 on page); button.popover__trigger (#980 on page); button.popover__content__close (#991 on page); button.popover__trigger (#1019 on page); button.popover__content__close (#1030 on page) (+99 more)
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
B404 Error PageHTTP 404, custom pageREVIEW
CFavicon & BrandingAction11 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 |
|---|---|---|---|---|---|
| h1 Home | Ottawa Citize… | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Epaper Edition | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 LOCAL SPOTLIGHT | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 weather (Ottawa) | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Canadian Tire | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 You've reached the 2… | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Looks like you've re… | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| title Home | Ottawa Citize… | 15.95:1 | 4.5:1 | #000000 | #CCE4F2 | Pass |
| div Advertisement oop | 17.86:1 | 4.5:1 | #000000 | #E0EFF7 | Pass |
| div Stories continue bel… | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| div This advertisement h… | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| a Skip to Content | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| strong Merch is here: Explo… | 9.83:1 | 3.0:1 | #000000 | #E89EA0 | Pass |
| span Shop now >> | 3.80:1 | 4.5:1 | #000000 | #CF181D | Fail |
| strong Merch is here: Explo… | 7.00:1 | 3.0:1 | #000000 | #E27477 | Pass |
| span Shop now >> | 19.95:1 | 4.5:1 | #000000 | #F9F9F9 | Pass |
| span Sections | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| span Search | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| label Search ottawacitizen… | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| span Perform search | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | 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+Landmark Structure36 landmarksPASS
A+Heading Hierarchy88 headingsPASS
- H1 Home | Ottawa Citizen
- H2 As flood waters stabilize, river-front residents brace for 'second pulse'
- H3 Accused in Ottawa crossing guard's death facing additional charge
- H3 Global Affairs Canada employee found not guilty of sexually assaulting Afghan female
- H3 NCC has 'significant deficiency' in workplace health and safety: AG
- H3 Council passes bubble bylaw despite potential future legal challenges
- H3 Annette Ryan approved as new parliamentary budget officer
- H3 Just fire Christiane Fox already | Opinion
- H3 Refugee groups fear public service cuts will worsen asylum claim backlog
- H3 Shared Services Canada ditches desk 'hoteling' for Ottawa-Gatineau employees in response to four-day return-to-office
- H3 Delivery of U.S.-built P-8 surveillance aircraft to Canada hit by further delays
- H3 Should public servants apply for early retirement incentives or volunteer to be laid off?
- H2 News
- H3 Fourth person charged in Smiths Falls homicide case
- H3 OC Transpo's new spring schedule means longer commutes for students
- H3 Willola Beach residents hope for more volunteers and calmer waters in face of flood warning
- H3 Multiple charges laid in assaults on Ottawa paramedics
- H3 One dead, three injured in south end Ottawa collision
- H3 Shared Services Canada ditches desk 'hoteling' for Ottawa-Gatineau employees in response to four-day return-to-office
- H3 One dead, three injured in south end Ottawa collision
- H3 Just fire Christiane Fox already | Opinion
- H3 Delivery of U.S.-built P-8 surveillance aircraft to Canada hit by further delays
- H3 Global Affairs Canada employee found not guilty of sexually assaulting Afghan female
- H2 Epaper Edition
- H2 LOCAL SPOTLIGHT
- H2 Opinion
- H3 How can Canada Post make community mailboxes accessble? | Letters to the Editor
- H3 Rural naysayers must not torpedo high-speed rail project | Opinion
- H3 Here's what I found when I revisited the ByWard Market | Letters to the Editor
- H3 Ottawa's new 10-year homelessness plan won't last that long | Opinion
- H2 Food
- H3 19 Ottawa restaurants where you can eat well for $20 or less
- H3 Hum: Lotus of Siam tempers its Thai food for fans in the Glebe
- H3 Hum: Linden Pizza serves thin-crusted marvels and more with heart and precision
- H3 Hum: An Ottawa baker says he's achieved Nanaimo-bar perfection
- H3 Hum: Why heading east for tacos is good advice in Ottawa
- H2 weather (Ottawa)
- H2 Canadian Tire
- H2 Entertainment
- H3 Art Hang exemplifies new chapter for Art House Cafe
- H3 St. Pius X's To Have the Confidence of a Man served as an ode to the beauty of Irish culture | Cappies
- H3 Angine de Poitrine is an unusual world act at Ottawa Bluesfest
- H3 How tough is it for Ottawa bands to get into Bluesfest?
- H3 Goo Goo Dolls show cancelled due to singer's illness
- H2 Sports
- H3 Help coming for Senators? Kleven could return in Game 3 against Hurricanes
- H3 Stormy seas: Senators need their stars to deliver in crucial Game 3 vs. Hurricanes
- H3 How these two Ottawa Charge players are pushing physical play in women's hockey forward
- H3 How the Ottawa Charge can clinch the PWHL's final playoff spot
- H3 Senators Travis Green: Time to take care of business against Carolina at home
- H2 Life
- H3 The return of the seance and what it says about how we mourn
- H3 How a humble sugar shack in Vanier turned into a state-of-the-art facility
- H3 Forest therapy in Ottawa: How to breathe deeply and deter turkeys
- H3 'Indigenous Adele' to make Bluesfest debut after viral Hozier cover
- H3 History Ottawa unveils first wave of shows, starting in August
- H2 Longreads
- H3 Subscriber only. Can a keto diet treat severe mental illness?
- H3 What happens when you don't die on time?
- H3 The strange mystery of the Smiths Falls missing men
- H3 Subscriber only. The Kanata neighbourhood that could get a new heritage designation
- H3 Ottawa councillors seeking more legislative tools to deal with derelict heritage buildings
- H2 Healthing
- H3 Can you detox from plastic? The reality of harmful chemicals at every turn
- H3 Serotonin tinnitus severity study opens the door for more precise treatment using SSRIs
- H3 What is food noise? Inside the cravings and intrusive thoughts that are impossible to ignore
- H3 MasterChef Canada's Marissa Leon-John cooking simple and fabulous food for people with diabetes
- H3 Behind the Scenes: The role of the hospital board of directors
- H2 National Capital Region's Top Employers
- H3 National Capital Region’s Top Employers: 2026 Winners
- H3 National Capital Region’s Top Employers offer vibrant career opportunities for a changing workforce
- H3 Despite a turbulent labour market, Top Employers are improving employee offerings
- H3 Carleton has a strong focus on wellness and growth
- H3 Change is a constant at Dairy Farmers of Canada
- H2 INSIDE OTTAWA HOSPITAL
- H3 Lighting the way: Canadian-first surgery offers hope for veteran with rare spinal cord glioblastoma
- H3 Detecting early warning signs of kidney disease — in real time
- H3 Ted Wagstaff’s ‘Toughest Mudder’ — overcoming a rare and aggressive blood cancer
- H3 Honouring The Ottawa Hospital’s top researchers of 2025
- H3 3D custom implant gives new hope for patient with rare bone cancer
- H2 Social Scene
- H3 Social Scene | Community Builders: Maddy's Gala
- H3 Social Scene | Community Builders: Fashion for Futures
- H3 Social Scene | Community Builders: Pickle Power
- H3 Social Scene | Community Builders: Amethyst’s Walk for Recovery
- H3 Social Scene | Community Builders: All Hands on Deck
- H2 You've reached the 20 article limit.
- H2 Looks like you've reached your saved article limit!
AAlt Text QualityAll 96 images OKPASS
| Issue | Count |
|---|---|
| too long | 7 image(s) |
A+Form AccessibilityAll 3 controls labeledPASS
| Control | Type | Label | Method |
|---|---|---|---|
| #id_search_text | input | Search ottawacitizen.com | for/id |
| #id_search_text_top | input | Search ottawacitizen.com | for/id |
| #emailOC_HeadlineNews | Email Address | aria-label |
ALighthouse Accessibility AuditsScore 93/100 — 2 failing, 30 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.
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 |
|---|
Interactive Brokers in Taboola advertising section a.item-label-href > span.video-label-box > span.branding > span.branding-inner |
span.branding > div.logoDiv > a.trc_mobile_disclosure_link > span span.branding > div.logoDiv > a.trc_mobile_disclosure_link > span |
Interactive Brokers in Taboola advertising section a.item-label-href > span.video-label-box > span.branding > span.branding-inner |
span.branding > div.logoDiv > a.trc_mobile_disclosure_link > span span.branding > div.logoDiv > a.trc_mobile_disclosure_link > span |
Ottawa Citizen in Taboola advertising section div.videoCube > a.item-label-href > span.video-label-box > span.branding |
Ottawa Citizen in Taboola advertising section div.videoCube > a.item-label-href > span.video-label-box > span.branding |
span.branding > div.logoDiv > a.trc_mobile_disclosure_link > span span.branding > div.logoDiv > a.trc_mobile_disclosure_link > span |
These are opportunities to improve the legibility of your content.
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 |
|---|
Sponsored: learn about this recommendation (opens dialog) span.video-label-box > span.branding > div.logoDiv > a.trc_mobile_disclosure_link |
Sponsored: learn about this recommendation (opens dialog) span.video-label-box > span.branding > div.logoDiv > a.trc_mobile_disclosure_link |
Sponsored: learn about this recommendation (opens dialog) span.video-label-box > span.branding > div.logoDiv > a.trc_mobile_disclosure_link |
These items highlight common accessibility best practices.