Accessibility
· 13 checks — Landmarks, headings, alt text, forms, and link quality rolled into one auditable list.DLandmark StructureAction32 landmarksFIX
Screen reader users cannot quickly navigate to the primary content. Wrap your main content in <main>.
Without a <main> landmark, screen-reader users can't skip past the navigation to the page content — every page starts with re-reading the menu.
Learn more ▾ ▴
The <main> element marks the page's primary content area. Assistive tech offers a 'jump to main' shortcut — but only if <main> exists. Without it, every page navigation forces re-reading the header. Wrap your primary content in a single <main>.
Source: WAI-ARIA / WCAG 2.4.1
Multiple navigations need aria-label to distinguish them for screen readers.
Some <nav> elements lack aria-label — screen-reader users hear 'navigation' multiple times with no way to distinguish them.
Learn more ▾ ▴
When a page has multiple <nav> regions (primary, footer, breadcrumb), each needs aria-label or aria-labelledby. AT users navigate by landmark; identical 'navigation' announcements force them to enter each one to discover purpose.
Source: WAI-ARIA Authoring Practices
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
FHeading HierarchyAction344 headings, 12 skip(s)FIX
- H1 LIVE: Iran seizes two ships, disables a third as ceasefire erodes
- H3 These photos of Harry and Meghan could land Aussies in hot water skipped
- H3 Monster illicit tobacco haul uncovered in suitcase
- H3 English giant sacks coach after worst run since 1912
- H3 'Time to save other people': Young dad's gift after tragic accident
- H3 What does the NDIS overhaul mean for you?
- H3 Warning over insidious scam targeting elderly Aussies
- H3 Police injured in night of chaos in Sydney's south-west
- H3 Donald Trump's bid to secure power for his party just backfired big time
- H3 Travel chaos after unattended bag dumped at major airport
- H3 Oil prices increase after Iran seizes ships in Strait of Hormuz
- H3 Man high on mushrooms and dressed as ninja when he attacked neighbours
- H3 'Massive blood trail' after home invasion and kidnapping
- H3 Prosecutors drop breast-grab charge against actor
- H3 Australia's biggest veteran community left divided
- H3 'ATM for shonks, grifters, fraudsters': Drastic NDIS crackdown announced
- H3 Teenager locked up and charged with widower's kidnapping murder
- H3 Man sentenced to 11 years in prison over unprovoked stabbing spree
- H3 Boy, 16, granted bail after four teens charged over ambush on Melbourne street
- H3 Failings revealed after foster children allowed to live with serial killer
- H3 English giant sacks coach after worst run since 1912
- H3 'Time to save other people': Young dad's gift after tragic accident
- H3 What does the NDIS overhaul mean for you?
- H3 Notorious assassin spared execution by actions of completely unconnected killer
- H1 Explainers duplicate H1
- H3 'Domestic terror': The disturbing movement behind cop-killer Dezi Freeman skipped
- H3 The graph the government doesn't want you to see about our oil stocks
- H3 Why we can continue to call our cheese feta, but fontina will be a no-go
- H1 National News duplicate H1
- H3 Labor figure's accused killer pleads guilty to assaulting another man skipped
- H3 Sydney home comes with a free $100k sports car, but there's a catch
- H3 The container 'fortress' designed to survive the outside world
- H3 'Believed in me': Actor's dream break before Rebel Wilson row
- H3 'We've been sold out': Influencer's impassioned plea to Senate
- H3 Solicitor charged over alleged role in $25 million Sydney fraud
- H3 Over 200 million litres of extra diesel coming to Australia
- H3 Girl, three, killed after being struck by ute
- H3 Fourth man charged over alleged kidnapping, murder of Sydney granddad
- H3 Fresh Ivan Milat link explored in murder highway mystery
- H3 The one tax change that would make $17b and cut gas prices
- H1 World News duplicate H1
- H3 Ballistic missile paraded through Iranian streets skipped
- H3 Century-old lighthouse 4km offshore hits the market
- H3 Ukrainian officials propose naming region after Donald Trump
- H3 UK to introduce lifelong smoking ban for anyone born after 2008
- H3 Royals family remember Queen Elizabeth II on what would have been her 100th birthday
- H3 'Lots of bombs': Trump threatens Iran amid reports of new talks
- H1 Sports duplicate H1
- H3 Mild mannered Melbourne coach in charge of global juggernaut skipped
- H3 Concerns for $750k star as details emerge over mystery absence
- H3 'Comes down to recruitment': Slater pinpoints Dragons' mistakes
- H3 Eddie's plea to AFL after 'embarrassing' Butters fiasco
- H3 Kostecki slams 'malicious' Mostert manoeuvre after clash
- H3 Crippling extent of Broncos crisis laid bare by busted 13
- H3 'Devils tax': Alarm over reported $7m offer for Pies forward
- H1 Today duplicate H1
- H3 Nanna's household tips to help save money skipped
- H3 Aussie surfer's close call with deadly sea creature
- H3 Today's tax breakdown ahead of Federal Budget
- H1 A Current Affair duplicate H1
- H3 'Time to save other people': Young dad's gift after tragic accident skipped
- H3 Australia's biggest veteran community left divided
- H3 Families living in tents as housing crisis continues
- H1 60 Minutes duplicate H1
- H3 Family demand answers after woman left to die alone following luxury cruise tragedy skipped
- H3 Why more and more women feel they are being pushed to freeze their eggs
- H3 Inside the dangerous looksmaxxing trend taking over young men's feeds
- H1 Property duplicate H1
- H3 Rich-lister Brad Moran's giant Gold Coast compound up for grabs skipped
- H3 Owner ordered to tear down $2.5 million house amid planning feud
- H3 Grandmother wins $9m lake house after ignoring husband's warning
- H3 Couple arrive home to find nasty note taped to their door
- H3 The last affordable suburb in Sydney revealed
- H3 The unusual reason Peter bought this derelict cottage
- H1 Auto duplicate H1
- H3 The Toyota HiLux attracting orders from more than your local council skipped
- H3 Limited edition Ford returns to Australia
- H3 The smallest model in Hyundai's dedicated Ioniq electric-vehicle range has debuted
- H1 ADELAIDE Weather duplicate H1
- H6 9:00am skipped
- H6 12:00pm
- H6 3:00pm
- H6 Thursday
- H6 Friday
- H6 Saturday
- H6 Sunday
- H6 Monday
- H6 Tuesday
- H6 Wednesday
- H1 News Just In duplicate H1
- H3 Ominous warning as US embassy urges citizens to leave Middle Eastern nation skipped
- H3 Police injured in night of chaos in Sydney's south-west
- H3 Warning over insidious scam targeting elderly Aussies
- H3 Donald Trump's bid to secure power for his party just backfired big time
- H3 Notorious assassin spared execution by actions of completely unconnected killer
- H3 These photos of Harry and Meghan could land Aussies in hot water
- H3 English giant sacks coach after worst run since 1912
- H3 How one order uncovered a massive 'ghost cake' delivery scandal in China
- H3 Oil prices increase after Iran seizes ships in Strait of Hormuz
- H3 'Believed in me': Actor's dream break before Rebel Wilson row
- H2 Connect with
- H3 Watch TV
- H3 News
- H3 Sport
- H3 Lifestyle
- H3 Entertainment
- H3 Product Reviews
- H3 Stan
- H3 Drive
- H3 Pedestrian TV
- H1 We value your privacy. With your consent we use data to do the following: duplicate H1
- H1 Manage your data duplicate H1
- H2 Store and/or access information on a device
- H2 Use limited data to select advertising
- H2 Create profiles for personalised advertising
- H2 Use profiles to select personalised advertising
- H2 Create profiles to personalise content
- H2 Use profiles to select personalised content
- H2 Measure advertising performance
- H2 Measure content performance
- H2 Understand audiences through statistics or combinations of data from different sources
- H2 Develop and improve services
- H2 Use limited data to select content
- H2 Ensure security, prevent and detect fraud, and fix errors
- H2 Deliver and present advertising and content
- H2 Save and communicate privacy choices
- H2 Match and combine data from other data sources
- H2 Link different devices
- H2 Identify devices based on information transmitted automatically
- H2 Use precise geolocation data
- H2 Storage, duration, and usage details
- H1 Confirm our vendors duplicate H1
- H2 Exponential Interactive, Inc d/b/a VDX.tv
- H2 Index Exchange Inc.
- H2 Quantcast
- H2 BeeswaxIO Corporation
- H2 Sovrn, Inc.
- H2 Adkernel LLC
- H2 Adikteev
- H2 RTB House S.A.
- H2 The UK Trade Desk Ltd
- H2 Nexxen Inc.
- H2 Epsilon
- H2 Yahoo EMEA Limited
- H2 ADventori SAS
- H2 Triple Lift, Inc.
- H2 Xandr, Inc.
- H2 Nexxen Group LLC
- H2 NEURAL.ONE
- H2 ADITION (Virtual Minds GmbH)
- H2 Active Agent (Virtual Minds GmbH)
- H2 Equativ
- H2 Adform A/S
- H2 Magnite, Inc.
- H2 RATEGAIN ADARA INC
- H2 Sift Media, Inc
- H2 Lumen Research Limited
- H2 OpenX
- H2 Yieldlab (Virtual Minds GmbH)
- H2 Simplifi Holdings LLC
- H2 PubMatic, Inc
- H2 Comscore B.V.
- H2 Flashtalking
- H2 Sharethrough, Inc
- H2 PulsePoint, Inc.
- H2 Smaato, Inc.
- H2 Crimtan Holdings Limited
- H2 Criteo SA
- H2 SCOPE3 SAS
- H2 LiveRamp
- H2 WPP Media
- H2 Sonobi, Inc
- H2 LoopMe Limited
- H2 Dynata LLC
- H2 Ask Locala
- H2 Azira
- H2 DoubleVerify Inc.
- H2 BIDSWITCH GmbH
- H2 IPONWEB GmbH
- H2 NextRoll, Inc.
- H2 Media.net Advertising FZ-LLC
- H2 LiveIntent Inc.
- H2 Basis Global Technologies, Inc.
- H2 Seedtag Advertising S.L
- H2 SMADEX, S.L.U.
- H2 Bombora Inc.
- H2 Outbrain UK.
- H2 Yieldmo, Inc.
- H2 A Million Ads
- H2 Remerge GmbH
- H2 Affle Iberia SL
- H2 Magnite CTV, Inc.
- H2 Delta Projects AB
- H2 Zemanta Inc.
- H2 AcuityAds Inc.
- H2 Rockerbox, Inc
- H2 StackAdapt Inc.
- H2 OneTag Limited
- H2 Smartology Limited
- H2 Improve Digital
- H2 Adobe Advertising Cloud
- H2 Bannerflow AB
- H2 TabMo SAS
- H2 Integral Ad Science (incorporating ADmantX)
- H2 Wizaly
- H2 Weborama
- H2 Readpeak Oy
- H2 Jivox Corporation
- H2 Sojern, Inc.
- H2 Polar Mobile Group Inc.
- H2 On Device Research Limited
- H2 Exactag GmbH
- H2 Celtra Inc.
- H2 ADTIMING TECHNOLOGY PTE. LTD
- H2 Gemius SA
- H2 InMobi Pte Ltd
- H2 The Kantar Group Limited
- H2 Samba TV UK Limited
- H2 Nielsen Media Research Ltd.
- H2 RevX
- H2 Pixalate, Inc.
- H2 Triapodi Ltd. d/b/a Digital Turbine
- H2 AudienceProject A/S
- H2 Eulerian Technologies
- H2 Seenthis AB
- H2 travel audience GmbH
- H2 HUMAN
- H2 Streamwise srl
- H2 Innovid LLC
- H2 Zeta Global Corp.
- H2 Madington
- H2 Opinary (Affinity Global GmbH)
- H2 GumGum, Inc.
- H2 Cint USA, Inc.
- H2 Jampp LTD
- H2 Realtime Technologies GmbH
- H2 DeepIntent, Inc.
- H2 Happydemics
- H2 Otto GmbH & Co. KGaA
- H2 Adobe Audience Manager, Adobe Experience Platform
- H2 CHEQ AI TECHNOLOGIES
- H2 Localsensor B.V.
- H2 Adnami Aps
- H2 Blue
- H2 Relay42 Netherlands B.V.
- H2 Mobsuccess
- H2 Liftoff Monetize and Vungle Exchange
- H2 The MediaGrid Inc.
- H2 Go.pl sp. z o.o.
- H2 HyperTV, Inc.
- H2 Appier PTE Ltd
- H2 6Sense Insights, Inc.
- H2 Google Advertising Products
- H2 GfK GmbH
- H2 Clinch Labs LTD
- H2 Amazon Ads
- H2 LinkedIn Ireland Unlimited Company
- H2 Moloco, Inc.
- H2 Nielsen International SA
- H2 Mintegral International Limited
- H2 PRECISO SRL
- H2 Pelmorex Corp.
- H2 TikTok Ad Network
- H2 Extreme Reach, Inc
- H2 Somplo Ltd
- H2 Adelaide Metrics Inc
- H2 Baidu (Hong Kong) Limited
- H2 Arpeely Ltd.
- H2 Adventure Media SARL
- H2 Microsoft Advertising
- H2 Opera Software Ireland Limited
- H2 xpln.ai SAS
- H2 ABCS INSIGHTS
- H2 Affle Inc
- H2 Admaster Private Limited
- H2 Bidease Inc
- H2 Intango Ltd
- H2 Artsai
- H2 Meta
- H2 C3 Metrics
- H2 Roku Advertising Services
- H2 eBay
- H2 Evidon
- H2 GroovinAds
- H2 Sizmek
- H2 Equativ
- H2 SMN Corporation
- H2 TrustArc
- H2 CyberAgent
- H2 MicroAd
- H2 AdMaxim
- H2 Magnite
- H2 Yango
- H2 Singular Labs Inc.
- H2 Neustar
- H2 Netquest
- H2 Cloudflare
- H2 Salesforce DMP
- H2 Bridgewell
- H2 AppLovin Corp.
- H2 AdTheorent, Inc.
- H2 Rackspace
- H2 Placed
- H2 Aarki
- H2 NinthDecimal
- H2 TreSensa
- H2 Bigabid
- H2 Optimize LCC D.B.A Genius Monkey
- H2 gskinner
- H2 Yahoo! Japan
- H2 Chalk Digital
- H2 jsdelivr
- H2 HockeyCurve
- H2 Upwave
- H2 IQM
- H2 fluct
- H2 Zucks
- H2 UNICORN
- H2 AdFalcon
- H2 Supership
- H2 Marketing Science Consulting Group, Inc.
- H2 Kobler
- H2 Adstra
- H2 Persona.ly
- H2 Oracle Data Cloud
- H2 Throtle
- H2 ironSource Mobile
- H2 MediaPal
- H2 Tuky Data
- H2 CONTXTFUL
- H2 MarketCast LLC
- H2 LeadsRx
- H2 clean.io
- H2 Unity Ads
- H2 Loblaw Media
- H2 Ad Lightning
- H2 Lacuna
- H2 Coupang
- H2 Playable Factory
- H2 Prism Partner
- H2 TemuDSP
- H2 DISQO
- H2 Mercado Livre
- H1 (empty)
A page should have only one H1. Multiple H1s dilute the document outline.
Multiple H1s blur the page's primary topic — screen-reader users and Google both prefer one H1.
Learn more ▾ ▴
HTML5's outline algorithm technically allows multiple H1s within sectioning content, but no browser implements it. In practice: one H1 per page. Use H2-H6 for subsections.
Source: WCAG 2.4.6 / Google Search Central
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Empty headings appear in the document outline but provide no information.
Empty <hN> tags break the document outline — screen-reader users navigating by heading hit dead silence.
Source: WCAG 2.4.6
DForm AccessibilityAction10 of 292 controls have issuesFIX
| Control | Type | Label | Method |
|---|---|---|---|
| input | checkbox | Consent (123 vendors) | none |
| input | checkbox | Consent (75 vendors) | none |
| #fc-preference-slider-purpose-2 | checkbox | Legitimate interest (41 vendors) | none |
| input | checkbox | Consent (106 vendors) | none |
| input | checkbox | Consent (106 vendors) | none |
| input | checkbox | Consent (31 vendors) | none |
| input | checkbox | Consent (29 vendors) | none |
| input | checkbox | Consent (76 vendors) | none |
| #fc-preference-slider-purpose-7 | checkbox | Legitimate interest (59 vendors) | none |
| input | checkbox | Consent (30 vendors) | none |
| #fc-preference-slider-purpose-8 | checkbox | Legitimate interest (21 vendors) | none |
| input | checkbox | Consent (57 vendors) | none |
| #fc-preference-slider-purpose-9 | checkbox | Legitimate interest (31 vendors) | none |
| input | checkbox | Consent (64 vendors) | none |
| #fc-preference-slider-purpose-10 | checkbox | Legitimate interest (51 vendors) | none |
| input | checkbox | Consent (14 vendors) | none |
| #fc-preference-slider-purpose-11 | checkbox | Legitimate interest (5 vendors) | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-11 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-14 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-15 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-21 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-23 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-28 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-32 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-36 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-50 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-52 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-69 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-76 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-85 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-93 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-98 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-104 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-124 | checkbox | Legitimate interest | none |
| #fc-preference-slider-gvl-vendor-126 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-142 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-156 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-163 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-173 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-192 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-202 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-209 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-231 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-232 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-238 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-246 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-253 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-264 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-278 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-284 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-290 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-294 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-297 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-394 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-431 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-452 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-486 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-527 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-528 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-541 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-559 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-612 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-667 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-690 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-699 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-728 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-740 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-755 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-767 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-804 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-807 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-812 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-867 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-986 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-1005 | checkbox | Legitimate interest | none |
| #fc-preference-slider-gvl-vendor-1019 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-1067 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-1071 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-1135 | checkbox | Legitimate interest | none |
| #fc-preference-slider-gvl-vendor-1142 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| #fc-preference-slider-gvl-vendor-1391 | checkbox | Legitimate interest | none |
| #fc-preference-slider-gvl-vendor-1412 | checkbox | Legitimate interest | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | checkbox | Consent | none |
| input | input | (Enter suburb or postcode) | placeholder only |
| #dropdown-lifestyle | checkbox | (none) | none |
| #dropdown-entertainment | checkbox | (none) | none |
| #dropdown-product-reviews | checkbox | (none) | none |
| #dropdown-stan | checkbox | (none) | none |
| #dropdown-drive | checkbox | (none) | none |
| #dropdown-pedestrian-tv | checkbox | (none) | none |
| #dropdown-watch-tv | checkbox | (none) | none |
| #dropdown-news | checkbox | (none) | none |
| #dropdown-sport | checkbox | (none) | none |
Form controls need a <label>, aria-label, or aria-labelledby for screen readers.
<input type="checkbox" id="dropdown-watch-tv">; <input type="checkbox" id="dropdown-news">; <input type="checkbox" id="dropdown-sport">; <input type="checkbox" id="dropdown-lifestyle">; <input type="checkbox" id="dropdown-entertainment">; <input type="checkbox" id="dropdown-product-reviews">; <input type="checkbox" id="dropdown-stan">; <input type="checkbox" id="dropdown-drive">; <input type="checkbox" id="dropdown-pedestrian-tv">
Form controls without labels — assistive tech announces 'edit text' with no context; users can't complete forms.
Source: WCAG 2.1 SC 3.3.2
Placeholder text disappears on focus and is not a reliable label.
<input>
Placeholder-only labels disappear when the user starts typing — they must remember what the field was for.
Learn more ▾ ▴
Placeholders are NOT labels. They vanish on input, fail color contrast checks (most are gray), and don't satisfy WCAG SC 3.3.2. Always use a real <label> alongside (or aria-labelledby).
Source: WCAG 2.1 SC 3.3.2 / Nielsen Norman
FLink & Button QualityAction156 issue(s) across 897 links and 99 buttonsFIX
| Element | Text | Issue | Suggested Fix |
|---|---|---|---|
| https://www.nine.com.au | (empty) | empty | Add link text or aria-label |
| https://9.nine.com.au/ebcUIL | Stan | new tab | Add '(opens in new tab)' to text |
| https://www.domain.com.au/news/?utm_sour… | Domain | new tab | Add '(opens in new tab)' to text |
| https://9.nine.com.au/ymxRM6 | Drive | new tab | Add '(opens in new tab)' to text |
| https://9news.com.au | (empty) | empty | Add link text or aria-label |
| https://9news.com.au | (empty) | empty | Add link text or aria-label |
| https://9now.nine.com.au/a-current-affai… | ACA | new tab | Add '(opens in new tab)' to text |
| https://www.9news.com.au/national/allege… | Warning over insidious scam ta… | img no alt | Add alt attribute to the image |
| https://www.9news.com.au/national/police… | Police injured in night of cha… | img no alt | Add alt attribute to the image |
| https://www.9news.com.au/national/perth-… | Travel chaos after unattended … | img no alt | Add alt attribute to the image |
| https://www.9news.com.au/national/chris-… | Teenager locked up and charged… | img no alt | Add alt attribute to the image |
| https://www.9news.com.au/national/moonee… | Man sentenced to 11 years in p… | img no alt | Add alt attribute to the image |
| https://www.9news.com.au/national/rebel-… | 'Believed in me': Actor's drea… | img no alt | Add alt attribute to the image |
| https://www.9news.com.au/national/gas-ta… | 'We've been sold out': Influen… | img no alt | Add alt attribute to the image |
| https://www.9news.com.au/national/chris-… | Fourth man charged over allege… | img no alt | Add alt attribute to the image |
| https://www.9news.com.au/national/austra… | The one tax change that would … | img no alt | Add alt attribute to the image |
| https://www.9news.com.au/national/police… | Police injured in night of cha… | img no alt | Add alt attribute to the image |
| https://www.9news.com.au/national/allege… | Warning over insidious scam ta… | img no alt | Add alt attribute to the image |
| https://www.9news.com.au/world/today-in-… | Notorious assassin spared exec… | img no alt | Add alt attribute to the image |
| https://www.9news.com.au/world/china-new… | How one order uncovered a mass… | img no alt | Add alt attribute to the image |
| https://www.9news.com.au/national/rebel-… | 'Believed in me': Actor's drea… | img no alt | Add alt attribute to the image |
| https://www.facebook.com/9News | (empty) | empty | Add link text or aria-label |
| https://x.com/9NewsAus | (empty) | empty | Add link text or aria-label |
| https://www.instagram.com/9news | (empty) | empty | Add link text or aria-label |
| https://www.9news.com.au/ | (empty) | empty | Add link text or aria-label |
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| # | more | generic text | Replace with descriptive text |
Before: more Suggested: # | |||
| <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 |
Links without text are announced as raw URLs by screen readers.
https://www.nine.com.au; https://9news.com.au; https://9news.com.au; https://www.facebook.com/9News; https://x.com/9NewsAus; https://www.instagram.com/9news; https://www.9news.com.au/
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.
# ("more"); # ("more"); # ("more"); # ("more"); # ("more"); # ("more"); # ("more"); # ("more"); # ("more"); # ("more") (+135 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
Add '(opens in new tab)' to link text or aria-label.
https://9.nine.com.au/ebcUIL; https://www.domain.com.au/news/?utm_source=nine.com.au&utm_medium=referral&ut…; https://9.nine.com.au/ymxRM6; https://9now.nine.com.au/a-current-affair
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.location__change (#299 on page); button#scoreStripPrev; button#scoreStripNext; button (#1519 on page)
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
B404 Error PageHTTP 404, custom pageREVIEW
BFavicon & Branding4 icon(s) detectedREVIEW
CWeb ManifestActionValid manifestREVIEW
BColor Contrast (Screenshot)20 text elements analyzed, 0 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 Explainers | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h1 National News | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h1 World News | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h1 Sports | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h1 Today | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h1 A Current Affair | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h1 60 Minutes | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h1 Property | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h1 Auto | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h1 ADELAIDE Weather | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h1 News Just In | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h1 We value your privac… | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h1 Manage your data | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h1 Confirm our vendors | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h2 Connect with | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h2 Store and/or access … | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h2 Use limited data to … | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h2 Create profiles for … | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h2 Use profiles to sele… | 3.66:1 | 3.0:1 | #000000 | #666666 | Pass |
| h2 Create profiles to p… | 3.66:1 | 3.0:1 | #000000 | #666666 | 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.
CLighthouse Accessibility AuditsActionScore 70/100 — 8 failing, 22 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
Using ARIA attributes in roles where they are prohibited can mean that important information is not communicated to users of assistive technologies. Learn more about prohibited ARIA roles.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Clear ul.forecast__hours > li > div.weather-app__weather-value > i.weather-icon |
Mostly clear ul.forecast__hours > li > div.weather-app__weather-value > i.weather-icon |
Mostly clear ul.forecast__hours > li > div.weather-app__weather-value > i.weather-icon |
Mostly sunny ul.weather-list__items > li.weather-list__item > div.weather-app__weather-value > i.weather-icon |
Mostly sunny ul.weather-list__items > li.weather-list__item > div.weather-app__weather-value > i.weather-icon |
Mostly sunny ul.weather-list__items > li.weather-list__item > div.weather-app__weather-value > i.weather-icon |
Mostly sunny ul.weather-list__items > li.weather-list__item > div.weather-app__weather-value > i.weather-icon |
Mostly sunny ul.weather-list__items > li.weather-list__item > div.weather-app__weather-value > i.weather-icon |
Mostly sunny ul.weather-list__items > li.weather-list__item > div.weather-app__weather-value > i.weather-icon |
Mostly cloudy ul.weather-list__items > li.weather-list__item > div.weather-app__weather-value > i.weather-icon |
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.
Names and labels
When a button doesn't have an accessible name, screen readers announce it as "button", making it unusable for users who rely on screen readers. Learn how to make buttons more accessible.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
div > section > div.toggle > button div > section > div.toggle > button |
div > div > div.score-strip > button#scoreStripPrev div > div > div.score-strip > button#scoreStripPrev |
div > div > div.score-strip > button#scoreStripNext div > div > div.score-strip > button#scoreStripNext |
Screen reader users rely on frame titles to describe the contents of frames. Learn more about frame titles.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
section > div.feeds > div.advert > iframe#domainIframe section > div.feeds > div.advert > iframe#domainIframe |
section > div.feeds > div.advert > iframe.autoIframe section > div.feeds > div.advert > iframe.autoIframe |
Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the navigation experience for screen reader users. Learn how to make links accessible.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
section.header-wrapper > div.Header__Wrapper-sc-1hbyv72-1 > nav.NetworkNav__Nav-sc-2f4qge-0 > a.NineComAu__NineLogoWrapper-sc-8l2uxh-0 section.header-wrapper > div.Header__Wrapper-sc-1hbyv72-1 > nav.NetworkNav__Nav-sc-2f4qge-0 > a.NineComAu__NineLogoWrapper-sc-8l2uxh-0 |
nav.NetworkNav__Nav-sc-2f4qge-0 > div.LogoNavNetwork__LogoNavWrapperNetwork-ytuj7a-3 > div.LogoNavNetwork__LogosWrapperNetwork-ytuj7a-2 > a.LogoNavNetwork__SiteLogoNetwork-ytuj7a-4 nav.NetworkNav__Nav-sc-2f4qge-0 > div.LogoNavNetwork__LogoNavWrapperNetwork-ytuj7a-3 > div.LogoNavNetwork__LogosWrapperNetwork-ytuj7a-2 > a.LogoNavNetwork__SiteLogoNetwork-ytuj7a-4 |
div.section-header > ul.follow-us__links > li.follow-us__link-wrapper > a.follow-us__link div.section-header > ul.follow-us__links > li.follow-us__link-wrapper > a.follow-us__link |
div.section-header > ul.follow-us__links > li.follow-us__link-wrapper > a.follow-us__link div.section-header > ul.follow-us__links > li.follow-us__link-wrapper > a.follow-us__link |
div.section-header > ul.follow-us__links > li.follow-us__link-wrapper > a.follow-us__link div.section-header > ul.follow-us__links > li.follow-us__link-wrapper > a.follow-us__link |
div.Footer__Container-sc-1uuqnsm-1 > div.Top__Container-p0dwa6-0 > span.Top__Logo-p0dwa6-1 > a.LogoWrapper-sc-7ieug6-0 div.Footer__Container-sc-1uuqnsm-1 > div.Top__Container-p0dwa6-0 > span.Top__Logo-p0dwa6-1 > a.LogoWrapper-sc-7ieug6-0 |
These are opportunities to improve the semantics of the controls in your application. This 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 |
|---|
Learn more div.fc-dialog-content > div.fc-dialog-scrollable-content > button.fc-faq-header > span.fc-faq-label |
List of partners. div.fc-dialog-scrollable-content > div.fc-footer > p > a.fc-vendors-list-dialog |
These are opportunities to improve the legibility of your content.
Navigation
Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to navigate and understand when using assistive technologies. Learn more about heading order.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
These photos of Harry and Meghan could land Aussies in hot water article.story-block > a.story__link > div.story__details > h3.story__headline |
Ominous warning as US embassy urges citizens to leave Middle Eastern nation article.story-block > a.story__link > div.story__details > h3.story__headline |
'Domestic terror': The disturbing movement behind cop-killer Dezi Freeman article.story-block > a.story__link > div.story__details > h3.story__headline |
Labor figure's accused killer pleads guilty to assaulting another man article.story-block > a.story__link > div.story__details > h3.story__headline |
Ballistic missile paraded through Iranian streets article.story-block > a.story__link > div.story__details > h3.story__headline |
Mild mannered Melbourne coach in charge of global juggernaut article.story-block > a.story__link > div.story__details > h3.story__headline |
Nanna's household tips to help save money article.story-block > a.story__link > div.story__details > h3.story__headline |
'Time to save other people': Young dad's gift after tragic accident article.story-block > a.story__link > div.story__details > h3.story__headline |
Family demand answers after woman left to die alone following luxury cruise tra… article.story-block > a.story__link > div.story__details > h3.story__headline |
Rich-lister Brad Moran's giant Gold Coast compound up for grabs article.story-block > a.story__link > div.story__details > h3.story__headline |
The Toyota HiLux attracting orders from more than your local council article.story-block > a.story__link > div.story__details > h3.story__headline |
9:00am ul.forecast__hours > li > div.weather-app__weather-value > h6.weather-app__weather-value__title |
These are opportunities to improve keyboard navigation in your application.
Tables and lists
Screen readers have a specific way of announcing lists. Ensuring proper list structure aids screen reader output. Learn more about proper list structure.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Home
Newsletters
Work with us
Advertise with us
Support
Terms of use
Privacy footer.Footer__Wrapper-sc-1uuqnsm-0 > div.Footer__Container-sc-1uuqnsm-1 > nav.Bottom__Navigation-sc-10vzyfk-0 > ul.Bottom__List-sc-10vzyfk-1 |
These are opportunities to improve the experience of reading tabular or list data using assistive technology, like a screen reader.
Best practices
Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the contents of a web page. Learn more about the viewport meta tag.
Informational: a Permissions-Policy directive showing feature -> allowed origins.
Source: MDN Permissions-Policy
| Failing Elements |
|---|
head > meta head > meta |
These items highlight common accessibility best practices.
AAlt Text QualityAll 130 images OKPASS
| Issue | Count |
|---|---|
| too long | 3 image(s) |