CINXE.COM
WebAIM: The WebAIM Million - The 2024 report on the accessibility of the top 1,000,000 home pages
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>WebAIM: The WebAIM Million - The 2024 report on the accessibility of the top 1,000,000 home pages</title> <link rel="shortcut icon" href="/media/favicon.ico"> <link rel="home" href="/"> <link rel="search" href="/search/"> <link rel="alternate" href="https://webaim.org/blog/feed" type="application/rss+xml" title="WebAIM Blog"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-Y41PF8WV9X"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-Y41PF8WV9X'); </script> <link href="/styles/main.css" rel="stylesheet" type="text/css"> <link href="/styles/print.css" rel="stylesheet" type="text/css" media="print"> <script src="/media/scripts/jquery.js"></script> <script src="/media/scripts/main.js"></script> <link href='https://fonts.googleapis.com/css?family=Roboto:400' rel='stylesheet' type='text/css'> <link href='https://fonts.googleapis.com/css?family=Kameron:400,700' rel='stylesheet' type='text/css'> <link href="/styles/documents.css?ver=2" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700" rel="stylesheet"> <style type="text/css"> table { border-spacing: 0; margin:auto; margin-bottom:20px !important; width:100%; } caption { padding:5px 0; color:#3C3C3C; } [scope="row"] { font-weight:normal; text-align:left; } [aria-label="A tabular representation of the data in the chart."] { display:none !important; } main input[type=text] { border-color:#999; padding:3px; } td.pos { background-color:#B6FFC9; } td.neg { background-color:#FFB5BC; } </style> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <!--[if lt IE 9]> <script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> </head> <body> <div id="headcontainer" class="clearfix" style="background-image: url(/media/banners/projects.jpg)"> <header> <div id="skiptocontent"><a href="#maincontent">skip to main content</a></div> <h2><a href="/"><img src="/media/logo.png" width="315" height="83" alt="WebAIM - Web Accessibility In Mind"></a></h2> <nav> <h2 class="hidden">Main Navigation</h2> <ul> <li><a href="/services/">Services</a></li> <li><a href="/articles/">Articles</a></li> <li><a href="/resources/">Resources</a></li> <li class="current"><a href="/projects/">Projects</a></li> <li><a href="/community/">Community</a></li> </ul> </nav> <div id="search"> <form method="get" role="search" action="/search/" id="sitesearch"> <p class="search"><span><label for="q">Search:</label> <input type="text" name="q" id="q"><input type="image" src="/media/template/search.svg" alt="Submit Search"></span></p> </form> <p class="intro"><a href="/intro">Introduction to Web Accessibility</a></p> <p class="training"><a href="/services/training">WebAIM Training</a></p> </div> </header> </div> <main id="maincontainer" class="clearfix"> <article id="maincontent"> <h1>The WebAIM Million<br><span class="subtitle">The 2024 report on the accessibility of the top 1,000,000 home pages</span></h1> <p id="breadcrumbs"><span class="hidden">You are here: </span><a href="/">Home</a> > <a href="/projects/">WebAIM Projects</a> > The WebAIM Million</p> <nav role="navigation"> <h2>Article Contents</h2> <ol> <li><a href="#intro">Introduction</a></li> <li><a href="#sample">The Sample</a> <ul> <li><a href="#method">Methodology</a></li> </ul> </li> <li><a href="#errors">Detected Errors</a></li> <li><a href="#complexity">Home Page Complexity</a></li> <li><a href="#wcag">WCAG Conformance</a></li> <li><a href="#contrast">Low Contrast Text</a></li> <li><a href="#alttext">Images and Alternative Text</a></li> <li><a href="#labels">Form Labeling</a></li> <li><a href="#headings">Headings</a></li> <li><a href="#regions">Regions</a></li> <li><a href="#aria">ARIA</a></li> <li><a href="#links">Links</a></li> <li><a href="#skip">Skip Links</a></li> <li><a href="#doctypes">Doctypes</a></li> <li><a href="#categories">Site Categories</a></li> <li><a href="#tlds">TLDs</a></li> <li><a href="#languages">Languages</a></li> <li><a href="#technologies">Technologies</a> <ul> <li><a href="#CMS">Content Management Systems and Site Builders</a></li> <li><a href="#frameworks">JavaScript Frameworks</a></li> <li><a href="#libraries">JavaScript Libraries</a></li> <li><a href="#webframeworks">Web Frameworks</a></li> <li><a href="#ecommerce">Ecommerce Platforms</a></li> <li><a href="#ads">Advertisement Networks</a></li> <li><a href="#othertech">Other Technologies</a></li> </ul> </li> <li><a href="#conclusion">Conclusion</a></li> </ol> </nav> <script> /* The charts and graphs are generated by Google Charts, which are very cool, but, unfortunately, have rather poor accessibility. We use scripting to define the chart container as an image with alt text (<div role="img" aria-label="Chart alt text">). We then hide the SVG chart contents so they are not read by a screen reader. This allows us to provide basic accessibility to the charts. A data table provides the full alternative data for each chart. */ // Load the Visualization API and the corechart package. google.charts.load('current', {'packages':['corechart']}); // Disabilities function wcagRegion() { var data = new google.visualization.DataTable(); data.addColumn('string', 'WCAG Failure'); data.addColumn('number', '% of Pages'); data.addColumn({ type: 'string', role: 'style' }); data.addRows([ ['Low contrast text', 81.0, 'red'], ['Missing alternative text', 54.5, 'blue'], ['Missing form labels', 48.6, 'green'], ['Empty links', 44.6, 'IndianRed'], ['Empty buttons', 28.2, 'orange'], ['Missing document language', 17.1, 'purple'] ]); var options = { width:700, height:350, title:"Home pages with most common WCAG failures (% of home pages)", legend: 'none', vAxis: {format:'#\'%\''} }; var chart = new google.visualization.ColumnChart(document.getElementById('wcag_div')); chart.draw(data, options); $("#wcag_div").attr("aria-label","Bar chart showing percent of home pages with common WCAG failures."); } google.charts.setOnLoadCallback(wcagRegion); </script> <div class="section" id="intro"> <h2>Introduction</h2> <p>For the sixth consecutive year, WebAIM conducted an accessibility evaluation of the home pages for the top 1,000,000 web sites. The evaluation was conducted using the <a href="https://wave.webaim.org/standalone">WAVE stand-alone API</a> (with additional tools to collect site technology and sector data). The results provide an overview of and insight into the current state of web accessibility for individuals with disabilities as well as trends over time.</p> <div class="note"> <div class="title">Note!</div> <p>Results below are from February 2024—with comparisons to, and trends from, earlier analyses in <a href="2019">2019</a>, <a href="2020">2020</a>, <a href="2021">2021</a>, <a href="2022">2022</a>, and <a href="2023">2023</a>.</p> </div> <div class="note"> <div class="title">Supported by BrowserStack</div> <p>Support for this research is funded in part by a donation from <a href="https://www.browserstack.com/a11y-testing-webaim" style="background-color:#F3F3F3 !important; border:none !important"><img src="../media/browserstack-logo.png" alt="BrowserStack" style="width:300px;"></a></p> </div> </div> <div class="section" id="sample"> <h2>The Sample</h2> <div style="float:right; width:40%;border:1px dashed grey; margin:10px; padding:5px;"> <h3>Site Lookup</h3> <p>How did your home page rank in our study? Enter a web site domain below to view details.</p> <form action="lookup" method="get" style="text-align: center;"> <p><label>Domain name:<br><input type="text" name="domain"></label><br> <input type="submit" value="View Home Page Data"></p> </form> </div> <p>The million home page list was derived from <a href="https://tranco-list.eu/">the Tranco ranking</a> which combines several sources of "top" web sites.</p> <p>Sites without home pages, pages that returned errors (404, etc.), pages with fewer than 10 HTML elements, and pages with more than 5,000 links to the same domain (for SEO purposes) were not included.</p> <div class="section" id="method"> <h3>Methodology</h3> <p>The WAVE accessibility engine was used to analyze the rendered DOM of all pages after scripting and styles were applied. WAVE detects end-user accessibility barriers and Web Content Accessibility Guidelines (WCAG) conformance failures. All automated tools, including WAVE, have limitations—not all conformance failures can be automatically detected. <em>Absence of detected errors does not indicate that a page is accessible or conformant.</em> Although this report describes only a subset of accessibility issues on only 1,000,000 home pages, this report provides a quantified and reliable representation of the current state of the accessibility of the most influential pages on the web.</p> </div> <div class="note"> <div class="title">Note!</div> <p>The <a href="https://tranco-list.eu/">Tranco</a> list of top web sites was used for the 2024 sample. While the methodology and sources for Tranco are very similar to those used by the WebAIM Million in previous years, the Tranco sample includes only pay-level domains, meaning domains that can be directly registered, not including sub-domains. This year's sample covered a broader swath of the web with fewer infrastructural domains that users would not view, such as <abbr title="Content Delivery Networks">CDNs</abbr>, image and data servers, APIs, etc. This minor change to sampling, plus more comprehensive tests in WAVE, may account for some of the changes described below.</p> </div> </div> <div class="section" id="errors"> <h2>Detected Errors</h2> <p><strong>Across the one million home pages, 56,791,260 distinct accessibility errors were detected—an average of 56.8 errors per page</strong>. The number of detected errors increased notably (13.6%) since the 2023 analysis which found 50 errors/page. "Errors" are WAVE-detected accessibility barriers having notable end user impact, and which have a very high likelihood of being WCAG 2.2 Level A/AA conformance failures.</p> <p>This chart shows the average number of detectable errors per home page over time:<br> <img src="media/HomePageErrors2024.png" alt="Line chart showing average errors of around 60 in 2019 and 2020 decreasing to around 50 in 2021, 2022, and 2023, then increasing to 56.8 in 2024." class="border" style="max-width:700px"></p> </div> <div class="section" id="complexity"> <h2>Home Page Complexity</h2> <p><strong>The home pages tested had nearly 1.2 billion page elements. Home page complexity increased significantly in 12 months</strong>, from an average of 1050 elements in February 2023 to an average of 1173 elements per home page in February 2024—an 11.8% increase.</p> <p>The following chart shows the number of home page elements detected over the last six WebAIM Million studies:<br> <img src="media/HomePageElements2024.png" alt="Line chart showing number of home page elements steadily increasing from 782 in 2019 to 1173 in 2023." class="border" style="max-width:700px"></p> <p>The number of home page elements increased 11.8% since 2024, and has increased 50% in the last 5 years. 4.8% of all home page elements had a detected accessibility error. <strong>Users with disabilities would expect to encounter errors on 1 in every 21 home page elements.</strong></p> <div class="note"> <div class="title">Note!</div> <p>Error density (number of errors divided by number of page elements) is provided in <a href="lookup">the site lookup</a>, but is an unreliable metric of site accessibility. A significant number of page elements (<code><div></code> and <code><span></code> elements, for example) may result in a lower error density (suggesting better accessibility), when in fact many new accessibility errors may have also been introduced. This report focuses on average <em>number</em> of detected errors—likely end user barriers—present as opposed to error <em>densities</em> (how diluted those errors are within page elements).</p> </div> <p>There was a correlation between page popularity and home page complexity. The top 100,000 pages averaged 1,424 elements—45% more page elements than the last 100,000 sites in the sample (980 elements).</p> </div> </div> <div class="section" id="wcag"> <h2>WCAG Conformance</h2> <p><strong>95.9% of home pages had detected <a href="/standards/wcag/checklist">WCAG 2</a> failures.</strong> This improved slightly from 96.3% in 2023. Over the last 5 years, the pages with detectable WCAG failures have decreased by only 1.9% from 97.8%. These are only automatically detected errors that align with WCAG conformance failures with a high level of reliability which suggests that the rate of full WCAG 2 A/AA conformance was certainly lower.</p> <p>This chart shows the percentage of home pages with detected WCAG conformance failures over time:<br> <img src="media/WCAGNonconformance2024.png" alt="Line chart showing percentage of home pages with detected WCAG conformance failures decreasing from 97.8% in 2019 to 95.9% in 2024." class="border" style="max-width:700px"></p> <p>While the rate of pages with no detectable errors was very low, 22.2% of pages had 5 or fewer detected errors and 31.2% had 10 or fewer. <strong>Over the last several years the proportion of pages with fewer errors has increased while the number of pages with many errors has also increased—pages with fewer errors have gotten better while pages with many errors have gotten worse.</strong></p> <div id="wcag_div" class="chart"></div> <table> <caption>Home pages with most common WCAG 2 failures</caption> <tr><th>WCAG Failure Type</th><th>% of home pages</th></tr> <tr><td>Low contrast text</td><td>81.0%</td></tr> <tr><td>Missing alternative text for images</td><td>54.5%</td></tr> <tr><td>Missing form input labels</td><td>48.6%</td></tr> <tr><td>Empty links</td><td>44.6%</td></tr> <tr><td>Empty buttons</td><td>28.2%</td></tr> <tr><td>Missing document language</td><td>17.1%</td></tr> </table> <p>96.4% of all errors detected fall into these six categories. These most common errors have been the same for the last 5 years. <strong>Addressing just these few types of issues would significantly improve accessibility across the web.</strong></p> <p><img src="media/errortypes2024.png" alt="Bar chart showing percentage of homepages with each error type from 2019 to 2024. Low contrast text was on 85% of pages in 2019, increasing to 86%, then decreasing to 81% in 2024. Missing alt text has generally declined from 68% to 54% of home pages. Empty links have similarly decreased from 58% to 45%. Missing labels were at 53% from 2019 to 2021, then 46% increasing to 49% from 2022 to 2024. Empty buttons have slowly increased from 25% to 28%. And missing language has steadily decreased from 33% to 17%." class="border" style="max-width:700px"></p> <p>Over time the number of pages with low contrast text, missing alternative text, empty links, and missing document language has decreased while the number of pages with missing form input labels and empty buttons has been largely unchanged.</p> </div> <div class="section" id="contrast"> <h2>Low Contrast Text</h2> <p><a href="/articles/contrast/">Low contrast text</a>, below the WCAG 2 AA thresholds, was found on 81% of home pages. This was the most commonly-detected accessibility issue. <strong>On average, each home page had 34.5 distinct instances of low-contrast text, up 13.7% from 30.4 in 2023.</strong></p> </div> <div class="section" id="alttext"> <h2>Images and Alternative Text</h2> <p>Home pages are becoming increasingly graphical. There were over 55.6 million images in the sample, or 55.6 images per home page on average, a 28% increase over the last year. <strong>21.6% of all home page images (12 per page on average) had missing <a href="/techniques/alttext/">alternative text</a></strong> (not counting <code>alt=""</code>). 43% of the images missing alternative text were linked images—resulting in links that were not descriptive. One out of every four linked images was missing alternative text.</p> <p>14.6% of images with alternative text had questionable or repetitive alternative text—such as alt="image", "graphic", "blank", a file name, etc., or alternative text identical to adjacent text or the alternative text of an adjacent image.</p> <p><strong>These data show that one may expect one third of the images on popular home pages to have missing, questionable, or repetitive alternative text.</strong></p> </div> <div class="section" id="labels"> <h2>Form Labeling</h2> <p>The number of form inputs on home pages has nearly doubled in 5 years, with a notable increase of 22.6% in the last year, from 5.0 million to 6.2 million. <strong>35.5% of form inputs identified were not properly labeled</strong> (either via <code><label></code>, <code>aria-label</code>, <code>aria-labelledby</code>, or <code>title</code>).</p> </div> <div class="section" id="headings"> <h2>Headings</h2> <p>23.8 million headings were detected (nearly 24 on average per home page). The number (and prevalence) of heading levels were:</p> <ul> <li>1.5 million <code><h1></code> headings (6.4%)</li> <li>7.3 million <code><h2></code> headings (30.5%)</li> <li>8.6 million <code><h3></code> headings (36.3%)</li> <li>3.7 million <code><h4></code> headings (15.6%)</li> <li>1.8 million <code><h5></code> headings (7.5%)</li> <li>.9 million <code><h6></code> headings (3.7%)</li> </ul> <p>The number of headings present on analyzed home pages decreased 4% from 24.8 million in 2023 reversing a trend of increases the previous four years.</p> <p>Because <a href="/projects/screenreadersurvey10/#finding">headings are the primary mechanism used by screen reader users to navigate content</a>, their proper implementation is important. 16.8% of home pages had more than one <code><h1></code>—a decrease from 20.1% in 2023. There were 1,058,992 instances of skipped heading levels (e.g., jumping from <code><h2></code> to <code><h4></code>)—one in every 22 headings. <strong>Skipped heading levels were present on 37.9% of all pages, down from 42.2% in 2023. 11.3% of pages had no headings present at all, up from 7.9% in 2023.</strong></p> </div> <div class="section" id="regions"> <h2>Regions</h2> <p>76.7% of home pages had at least one region (or ARIA landmark) defined—a decrease from 80.9% in 2023 (though an increase from all previous years). A <code><main></code> element or main landmark was present on 39.1% of home pages, down slightly from 41.5% in 2023 (though an increase from all previous years). 15.5% of home pages had a "search" landmark, down from 21% in 2023.</p> </div> <div class="section" id="aria"> <h2>ARIA</h2> <p><strong>89,050,856 ARIA attributes were detected—89 per page on average! ARIA code usage increased 15% in just one year and has more than quadrupled since 2019.</strong></p> <p>This chart shows the number of ARIA attributes per home page over time:<br> <img src="media/ARIA2024.png" alt="Line chart showing detected ARIA attributes increasing from 22 in 2019 to 89 in 2024." class="border" style="max-width:700px"></p> <p>The prevalence of ARIA labels and descriptions increased 26% in just the last year. Home pages averaged 19.2 <code>aria-label</code>, <code>aria-labelledby</code>, or <code>aria-describedby</code> attributes.</p> <p>74.6% of the one million home pages used ARIA (excluding ARIA landmark roles). <strong>Home pages with ARIA present averaged 34.2% more detected errors than those without ARIA</strong>—one would expect to encounter an additional 15 potential barriers on home pages with ARIA present.</p> <p><strong>Increased ARIA usage on pages was associated with higher detected errors. The more ARIA attributes that were present, the more detected accessibility errors could be expected.</strong> This does not necessarily mean that ARIA introduced these errors (these pages are more complex), but pages typically had more errors when ARIA was present.</p> <p>6.7% of home pages had an ARIA menu (<code>role="menu"</code>, up from 5% in 2023), but 28% of ARIA menus introduced accessibility barriers due to the lack of necessary ARIA menu markup and interactions.</p> <p>Home pages also averaged 15.5 <code>aria-hidden="true"</code> attributes (up from 13.7 in 2023, 11.0 in 2022, 8.9 in 2021, and 6.6 in 2020) and 3.1 <code>role="button"</code> attributes (down from 3.4 in 2023, but up from previous years). Home pages averaged 23.1 instances of <code>tabindex=0</code> or <code>tabindex=-1</code> (up 16% from 19.9 in 2023 and up 95% from 2020).</p> </div> <div class="section" id="links"> <h2>Links</h2> <p>13.2% of pages had ambiguous <a href="/techniques/hypertext/">link</a> text, such as "click here", "more", "continue", etc. (a decrease from 17.3% of pages in 2023). These pages had 6.3 instances of ambiguous links on average.</p> </div> <div class="section" id="skip"> <h2>Skip Links</h2> <p>13.3% of home pages had a <a href="/techniques/skipnav/">"skip" link</a> present, down from 17.2% in 2023. One out of every 10 "skip" links were broken—either they were hidden in a way that made them inaccessible or the link target was not present in the page.</p> </div> <div class="section" id="doctypes"> <h2>Doctypes</h2> <p>91.6% of home pages had a valid HTML5 doctype—an increase from 89.8% in 2023, 86.1% in 2022 and 79.1% in 2021. <strong>Pages with a valid HTML5 doctype had significantly more page elements (average of 1213 vs. 745) and detectable errors (average of 57.1 vs. 53.2) than pages with other doctypes.</strong> 511 unique doctypes were encountered in the million-page sample.</p> </div> <div class="section" id="categories"> <h2>Site Categories</h2> <div class="note"> <div class="title">Note!</div> <p>We're grateful for the support of <a href="https://webshrinker.com/">webshrinker.com</a> for providing us the site category data. Their support makes this valuable information available.</p> </div> <p>The one million home pages were categorized based on content into <a href="https://docs.webshrinker.com/v3/iab-website-categories.html">IAB Content Taxonomy categories</a>. The table below shows the average number of errors in each category and the percent difference in errors for that category from the average of 56.8 errors for the entire million-page sample. In other words, the percentage difference is how much better or worse that category is than the average home page.</p> <table> <tr><th>Category</th><th>Avg. # of errors</th><th>% difference</th></tr> <tr><td>Government</td><td>35.7</td><td class="pos">−37.2%</td></tr> <tr><td>Social Media</td><td>40.9</td><td class="pos">−28.0%</td></tr> <tr><td>Technology & Computing</td><td>41.8</td><td class="pos">−26.4%</td></tr> <tr><td>Law, Government, & Politics</td><td>43.1</td><td class="pos">−24.1%</td></tr> <tr><td>Business</td><td>44.3</td><td class="pos">−22.0%</td></tr> <tr><td>Society</td><td>44.8</td><td class="pos">−21.0%</td></tr> <tr><td>Education</td><td>48.3</td><td class="pos">−15.0%</td></tr> <tr><td>Careers</td><td>48.9</td><td class="pos">−13.8%</td></tr> <tr><td>Personal Finance</td><td>49.2</td><td class="pos">−13.4%</td></tr> <tr><td>Family and Parenting</td><td>50.8</td><td class="pos">−10.6%</td></tr> <tr><td>Science</td><td>50.9</td><td class="pos">−10.4%</td></tr> <tr><td>Food and Drink</td><td>51.6</td><td class="pos">−9.1%</td></tr> <tr><td>Health and Fitness</td><td>51.7</td><td class="pos">−9.0%</td></tr> <tr><td>Religion and Spirituality</td><td>58.7</td><td class="neg">+3.3%</td></tr> <tr><td>Arts and Entertainment</td><td>60.4</td><td class="neg">+6.3%</td></tr> <tr><td>Travel</td><td>64.7</td><td class="neg">+13.8%</td></tr> <tr><td>Hobbies and Interests</td><td>66.2</td><td class="neg">+16.5%</td></tr> <tr><td>Pets</td><td>66.3</td><td class="neg">+16.7%</td></tr> <tr><td>Automotive</td><td>66.5</td><td class="neg">+17.1%</td></tr> <tr><td>Home and Garden</td><td>67.6</td><td class="neg">+19.1%</td></tr> <tr><td>News/Weather/Information</td><td>69.5</td><td class="neg">+22.3%</td></tr> <tr><td>Adult Content</td><td>72.9</td><td class="neg">+28.3%</td></tr> <tr><td>Real Estate</td><td>75.1</td><td class="neg">+32.2%</td></tr> <tr><td>Style & Fashion</td><td>77.3</td><td class="neg">+36.1%</td></tr> <tr><td>Shopping</td><td>83.3</td><td class="neg">+46.6%</td></tr> <tr><td>Sports</td><td>84.9</td><td class="neg">+49.4%</td></tr> </table> <p>There were notable differences in accessibility errors for sites in different categories. Sports, shopping, style & fashion, real estate, and adult content home pages, for example, had over twice the number of errors on average as governmental web sites.</p> </div> <div class="section" id="tlds"> <h2>TLDs</h2> <p>1068 unique top-level domains (e.g., com, .tv, .fashion, etc.) were represented in the million pages analyzed. The table below shows select TLDs with home page counts, average number of errors per home page, and percentage difference from the average of 56.8 errors for the entire million-page sample.</p> <table> <tr><th>TLD</th><th># of home pages</th><th>Avg. # of errors</th><th>% difference</th></tr> <tr><td>gov</td><td>1,611</td><td>20.3</td><td class="pos">−64.2%</td></tr> <tr><td>edu</td><td>3,257</td><td>26.0</td><td class="pos">−54.2%</td></tr> <tr><td>us</td><td>2,515</td><td>34.2</td><td class="pos">−39.7%</td></tr> <tr><td>ca</td><td>5,386</td><td>35.6</td><td class="pos">−37.3%</td></tr> <tr><td>uk</td><td>15,388</td><td>41.7</td><td class="pos">−26.6%</td></tr> <tr><td>org</td><td>41,107</td><td>42.0</td><td class="pos">−26.1%</td></tr> <tr><td>info</td><td>7,952</td><td>44.7</td><td class="pos">−21.3%</td></tr> <tr><td>au</td><td>7,533</td><td>48.7</td><td class="pos">−14.3%</td></tr> <tr><td>net</td><td>40,270</td><td>48.9</td><td class="pos">−14.0%</td></tr> <tr><td>nl</td><td>10,910</td><td>49.4</td><td class="pos">−13.0%</td></tr> <tr><td>jp</td><td>26,956</td><td>49.5</td><td class="pos">−12.9%</td></tr> <tr><td>co</td><td>7,440</td><td>50.3</td><td class="pos">−11.4%</td></tr> <tr><td>eu</td><td>4,258</td><td>50.5</td><td class="pos">−11.1%</td></tr> <tr><td>de</td><td>21,911</td><td>51.4</td><td class="pos">−9.5%</td></tr> <tr><td>id</td><td>4,074</td><td>55.6</td><td class="pos">−2.1%</td></tr> <tr><td>fr</td><td>9,537</td><td>55.7</td><td class="pos">−2.0%</td></tr> <tr><td>com</td><td>432,581</td><td>56.4</td><td class="pos">−.1%</td></tr> <tr><td>es</td><td>5,267</td><td>60.7</td><td class="neg">+6.8%</td></tr> <tr><td>in</td><td>10,670</td><td>60.9</td><td class="neg">+7.2%</td></tr> <tr><td>it</td><td>9,996</td><td>66.4</td><td class="neg">+16.9%</td></tr> <tr><td>ru</td><td>50,058</td><td>67.5</td><td class="neg">+18.8%</td></tr> <tr><td>br</td><td>19,848</td><td>69.0</td><td class="neg">+21.4%</td></tr> <tr><td>pl</td><td>9,442</td><td>69.7</td><td class="neg">+22.8%</td></tr> <tr><td>cz</td><td>4,772</td><td>73.0</td><td class="neg">+28.5%</td></tr> <tr><td>ua</td><td>5,508</td><td>93.1</td><td class="neg">+63.8%</td></tr> <tr><td>cn</td><td>20,999</td><td>107.7</td><td class="neg">+89.6%</td></tr> </table> <p>This shows notable differences between TLDs.</p> </div> <div class="section" id="languages"> <h2>Languages</h2> <p>84% of pages specified a document language, an increase from 82.2% in 2023. Despite being a WCAG failure, pages without a language defined had fewer errors on average than most pages with a language defined.</p> <p>This table shows the specified page language for the most common languages (n>5000), number of pages in the sample, average number of errors, and percentage difference in errors from the overall average of 56.8.</p> <table> <tr><th>Specified Language</th><th># of home pages</th><th>Avg. # of errors</th><th>% difference</th></tr> <tr><td>English</td><td>488,599</td><td>47.9</td><td class="pos">−15.6%</td></tr> <tr><td>Dutch</td><td>11,549</td><td>50.3</td><td class="pos">−11.4%</td></tr> <tr><td>German</td><td>28,293</td><td>54.3</td><td class="pos">−4.4%</td></tr> <tr><td>No language specified</td><td>160,101</td><td>56.2</td><td class="pos">−1.1%</td></tr> <tr><td>Japanese</td><td>33,991</td><td>60.1</td><td class="neg">+5.9%</td></tr> <tr><td>French</td><td>20,670</td><td>62.3</td><td class="neg">+9.6%</td></tr> <tr><td>Russian</td><td>75,321</td><td>64.4</td><td class="neg">+13.4%</td></tr> <tr><td>Spanish</td><td>30,242</td><td>65.3</td><td class="neg">+15.0%</td></tr> <tr><td>Portuguese</td><td>26,703</td><td>68.7</td><td class="neg">+20.9%</td></tr> <tr><td>Italian</td><td>10,882</td><td>70.7</td><td class="neg">+24.4%</td></tr> <tr><td>Polish</td><td>8,805</td><td>72.8</td><td class="neg">+28.2%</td></tr> <tr><td>Turkish</td><td>8,344</td><td>74.7</td><td class="neg">+31.5%</td></tr> <tr><td>Chinese</td><td>8,298</td><td>76.2</td><td class="neg">+34.2%</td></tr> <tr><td>Farsi</td><td>5,839</td><td>78.3</td><td class="neg">+37.9%</td></tr> <tr><td>Korean</td><td>6,239</td><td>86.9</td><td class="neg">+53.1%</td></tr> <tr><td>Vietnamese</td><td>5,609</td><td>88.0</td><td class="neg">+54.9%</td></tr> <tr><td>No linguistic content/not applicable (lang=zxx)</td><td>7,218</td><td>93.4</td><td class="neg">+64.5%</td></tr> <tr><td>Indonesian</td><td>11,813</td><td>130.8</td><td class="neg">+130.3%</td></tr> </table> <p>As with TLDs, there are significant differences in accessibility of pages in various languages. Western languages generally fared better than other languages.</p> </div> <div class="section" id="technologies"> <h2>Technologies</h2> <p>Over 1,200 different types of web technologies were detected on the one million home pages. Common technologies detected on more than 5,000 home pages are listed below, ordered from "best" to "worst". Note that correspondence of additional errors with a technology cannot always be attributed to that technology.</p> <div class="section" id="CMS"> <h3>Content management systems and site builders</h3> <table> <tr><th>CMS</th><th># of home pages</th><th>Avg. # of errors</th><th>% difference</th></tr> <tr><td>Divi</td><td>8,188</td><td>28.3</td><td class="pos">−50.1%</td></tr> <tr><td>Webflow</td><td>7,951</td><td>28.4</td><td class="pos">−50.1%</td></tr> <tr><td>Adobe Experience Manager</td><td>5,743</td><td>31.1</td><td class="pos">−45.3%</td></tr> <tr><td>Typo3 CMS</td><td>5,144</td><td>44.7</td><td class="pos">−21.3%</td></tr> <tr><td>Drupal</td><td>19,366</td><td>44.8</td><td class="pos">−21.1%</td></tr> <tr><td>Joomla</td><td>7,018</td><td>49.2</td><td class="pos">−13.4%</td></tr> <tr><td>Elementor</td><td>44,501</td><td>51.2</td><td class="pos">−9.9%</td></tr> <tr><td>Wordpress</td><td>234,922</td><td>51.5</td><td class="pos">−9.3%</td></tr> <tr><td>wpBakery</td><td>18,949</td><td>66.4</td><td class="neg">+16.9%</td></tr> <tr><td>1C-Bitrix</td><td>11,452</td><td>96.9</td><td class="neg">+70.5%</td></tr> </table> <p>There was a wide diversity in the impact that the CMS choice appeared to have on accessibility with home pages. Most pages that use a common CMS have fewer errors than average.</p> </div> <div class="section" id="frameworks"> <h3>JavaScript frameworks</h3> <table> <tr><th>Framework</th><th># of home pages</th><th>Avg. # of errors</th><th>% difference</th></tr> <tr><td>Next.js</td><td>21,542</td><td>41.4</td><td class="pos">−27.1%</td></tr> <tr><td>Nuxt.js</td><td>12,722</td><td>42.4</td><td class="pos">−25.3%</td></tr> <tr><td>AMP</td><td>14,867</td><td>47.3</td><td class="pos">−16.8%</td></tr> <tr><td>Emotion</td><td>12,097</td><td>47.8</td><td class="pos">−15.9%</td></tr> <tr><td>React</td><td>72,616</td><td>50.1</td><td class="pos">−11.7%</td></tr> <tr><td>styled-components</td><td>12,609</td><td>51.4</td><td class="pos">−9.6%</td></tr> <tr><td>Zone.js</td><td>7,373</td><td>51.7</td><td class="pos">−9.0%</td></tr> <tr><td>Alpine.js</td><td>5,808</td><td>52.0</td><td class="pos">−8.5%</td></tr> <tr><td>GSAP</td><td>41,586</td><td>57.7</td><td class="neg">+1.5%</td></tr> <tr><td>Backbone.js</td><td>10,519</td><td>59.7</td><td class="neg">+5.2%</td></tr> <tr><td>AngularJS</td><td>7,502</td><td>60.7</td><td class="neg">+6.9%</td></tr> <tr><td>Stimulus</td><td>5,345</td><td>60.9</td><td class="neg">+7.2%</td></tr> <tr><td>Vue.js</td><td>43,351</td><td>62.3</td><td class="neg">+9.7%</td></tr> <tr><td>RequireJS</td><td>13,917</td><td>68.2</td><td class="neg">+20.1%</td></tr> <tr><td>Handlebars</td><td>9,913</td><td>70.4</td><td class="neg">+23.9%</td></tr> <tr><td>toastr</td><td>6,488</td><td>78.1</td><td class="neg">+37.5%</td></tr> <tr><td>Mustache</td><td>7,843</td><td>90.6</td><td class="neg">+59.5%</td></tr> </table> </div> <div class="section" id="libraries"> <h3>JavaScript libraries</h3> <table> <tr><th>Library</th><th># of home pages</th><th>Avg. # of errors</th><th>% difference</th></tr> <tr><td>YUI</td><td>5,804</td><td>45.2</td><td class="pos">−20.4%</td></tr> <tr><td>Polyfill</td><td>12,420</td><td>49.8</td><td class="pos">−12.2%</td></tr> <tr><td>AOS</td><td>17,300</td><td>50.7</td><td class="pos">−10.7%</td></tr> <tr><td>jQuery Mobile</td><td>5,000</td><td>50.9</td><td class="pos">−10.3%</td></tr> <tr><td>lit-html</td><td>10,962</td><td>52.7</td><td class="pos">−7.2%</td></tr> <tr><td>DataTables</td><td>9,249</td><td>56.3</td><td class="pos">−0.8%</td></tr> <tr><td>Lodash</td><td>38,839</td><td>57.0</td><td class="neg">+0.4%</td></tr> <tr><td>lit-element</td><td>8,534</td><td>57.4</td><td class="neg">+1.1%</td></tr> <tr><td>jQuery Migrate</td><td>204,168</td><td>57.7</td><td class="neg">+1.6%</td></tr> <tr><td>Lightbox</td><td>37,855</td><td>60.4</td><td class="neg">+6.4%</td></tr> <tr><td>core-js</td><td>337,569</td><td>61.4</td><td class="neg">+8.1%</td></tr> <tr><td>Boomerang</td><td>27,138</td><td>62.2</td><td class="neg">+9.5%</td></tr> <tr><td>Modernizr</td><td>68,044</td><td>63.6</td><td class="neg">+11.9%</td></tr> <tr><td>Underscore.js</td><td>12,107</td><td>64.2</td><td class="neg">+13.0%</td></tr> <tr><td>jQuery</td><td>627,641</td><td>64.4</td><td class="neg">+13.5%</td></tr> <tr><td>LazySizes</td><td>69,285</td><td>64.7</td><td class="neg">+13.8%</td></tr> <tr><td>Tippy.js</td><td>5,750</td><td>64.9</td><td class="neg">+14.2%</td></tr> <tr><td>web-vitals</td><td>35,561</td><td>65.4</td><td class="neg">+15.1%</td></tr> <tr><td>Flickity</td><td>18,028</td><td>65.6</td><td class="neg">+15.5%</td></tr> <tr><td>Hammer.js</td><td>16,960</td><td>66.2</td><td class="neg">+16.5%</td></tr> <tr><td>Photoswipe</td><td>12,104</td><td>68.6</td><td class="neg">+20.8%</td></tr> <tr><td>jQuery UI</td><td>154,455</td><td>69.0</td><td class="neg">+21.5%</td></tr> <tr><td>Isotope</td><td>41,677</td><td>70.0</td><td class="neg">+23.2%</td></tr> <tr><td>Preact</td><td>17,237</td><td>70.2</td><td class="neg">+23.7%</td></tr> <tr><td>Swiper</td><td>112,105</td><td>71.2</td><td class="neg">+25.3%</td></tr> <tr><td>Moment.js</td><td>38,259</td><td>76.1</td><td class="neg">+33.9%</td></tr> <tr><td>prettyPhoto</td><td>12,589</td><td>77.1</td><td class="neg">+35.7%</td></tr> <tr><td>Axios</td><td>10,638</td><td>78.1</td><td class="neg">+37.5%</td></tr> <tr><td>OWL Carousel</td><td>64,418</td><td>83.5</td><td class="neg">+47.0%</td></tr> <tr><td>FancyBox</td><td>52,612</td><td>84.0</td><td class="neg">+47.9%</td></tr> <tr><td>Slick</td><td>68,579</td><td>85.5</td><td class="neg">+50.6%</td></tr> <tr><td>Select2</td><td>31,652</td><td>87.3</td><td class="neg">+53.8%</td></tr> <tr><td>SweetAlert2</td><td>10,850</td><td>93.0</td><td class="neg">+63.8%</td></tr> <tr><td>Clipboard.js</td><td>6,537</td><td>96.6</td><td class="neg">+70.1%</td></tr> <tr><td>Fingerprintjs</td><td>5,415</td><td>154.2</td><td class="neg">+171.5%</td></tr> </table> <p><strong>The presence of most of these popular JavaScript libraries aligned with an increase in detected accessibility errors.</strong></p> </div> <div class="section" id="webframeworks"> <h3>Web frameworks</h3> <table> <tr><th>Web Framework</th><th># of home pages</th><th>Avg. # of errors</th><th>% difference</th></tr> <tr><td>Next.js</td><td>21,542</td><td>41.4</td><td class="pos">−27.1%</td></tr> <tr><td>ZURB foundation</td><td>15,723</td><td>54.2</td><td class="pos">−4.5%</td></tr> <tr><td>Microsoft ASP</td><td>44,831</td><td>58.9</td><td class="neg">+3.8%</td></tr> <tr><td>Express</td><td>18,420</td><td>60.4</td><td class="neg">+6.4%</td></tr> <tr><td>UIkit</td><td>5,424</td><td>60.5</td><td class="neg">+6.5%</td></tr> <tr><td>CodeIgniter</td><td>5,615</td><td>66.3</td><td class="neg">+16.8%</td></tr> <tr><td>Laravel</td><td>9,549</td><td>66.9</td><td class="neg">+17.7%</td></tr> <tr><td>Animate.css</td><td>27,054</td><td>68.3</td><td class="neg">+20.3%</td></tr> <tr><td>Bootstrap</td><td>257,688</td><td>69.7</td><td class="neg">+22.7%</td></tr> <tr><td>CivicTheme</td><td>9,226</td><td>95.5</td><td class="neg">+68.1%</td></tr> </table> <p>Home pages in the sample that utilize the popular Bootstrap framework had 12.9 more accessibility errors on average than those that did not. We can't know from these data if Bootstrap introduced these errors, but there was a correspondence of increased errors when Bootstrap was present.</p> </div> <div class="section" id="ecommerce"> <h3>Ecommerce platforms</h3> <table> <tr><th>Platform</th><th># of home pages</th><th>Avg. # of errors</th><th>% difference</th></tr> <tr><td>Shopify</td><td>18,420</td><td>60.4</td><td class="neg">+6.4%</td></tr> <tr><td>Woocommerce</td><td>24,495</td><td>74.9</td><td class="neg">+31.8%</td></tr> <tr><td>Magento</td><td>8,451</td><td>86.6</td><td class="neg">+52.5%</td></tr> </table> </div> <div class="section" id="ads"> <h3>Advertisement networks</h3> <table> <tr><td>theTradeDesk</td><td>6,514</td><td>39.0</td><td class="pos">−31.4%</td></tr> <tr><td>Linkedin Ads</td><td>12,750</td><td>44.9</td><td class="pos">−21.0%</td></tr> <tr><td>Amazon Advertising</td><td>14,598</td><td>58.1</td><td class="neg">+2.3%</td></tr> <tr><td>Microsoft Advertising</td><td>33,260</td><td>59.7</td><td class="neg">+5.0%</td></tr> <tr><td>Pubmatic</td><td>8,189</td><td>63.8</td><td class="neg">+12.4%</td></tr> <tr><td>AppNexus</td><td>10,805</td><td>64.1</td><td class="neg">+12.8%</td></tr> <tr><td>OpenX</td><td>5,609</td><td>64.3</td><td class="neg">+13.2%</td></tr> <tr><td>Prebid</td><td>18,915</td><td>64.4</td><td class="neg">+13.4%</td></tr> <tr><td>Teads</td><td>5,092</td><td>64.9</td><td class="neg">+14.3%</td></tr> <tr><td>Taboola</td><td>8,895</td><td>66.0</td><td class="neg">+16.2%</td></tr> <tr><td>33Across</td><td>13,559</td><td>66.1</td><td class="neg">+16.3%</td></tr> <tr><td>Twitter Ads</td><td>34,567</td><td>66.6</td><td class="neg">+17.3%</td></tr> <tr><td>Pinterest Ads</td><td>15,210</td><td>66.7</td><td class="neg">+17.4%</td></tr> <tr><td>ID5</td><td>9,332</td><td>67.1</td><td class="neg">+18.2%</td></tr> <tr><td>Rubicon Project</td><td>9,293</td><td>67.5</td><td class="neg">+18.8%</td></tr> <tr><td>Google AdSense</td><td>68,646</td><td>69.1</td><td class="neg">+21.6%</td></tr> <tr><td>Yandex</td><td>65,825</td><td>72.9</td><td class="neg">+28.4%</td></tr> <tr><td>Doubleclick</td><td>10,064</td><td>74.7</td><td class="neg">+31.5%</td></tr> <tr><td>Criteo</td><td>18,897</td><td>88.0</td><td class="neg">+54.8%</td></tr> </table> <p>Pages that utilized almost any of these popular ad systems had more errors on average than those that did not. The data suggest that ads were among the strongest harbingers of accessibility errors. <strong>Home pages that utilize the common Google AdSense system had 12.3 more errors on average.</strong></p> </div> <div class="section" id="othertech"> <h3>Other technologies</h3> <p>Other common technologies also correlated to more errors:</p> <ul> <li>12.9% of pages had ReCAPTCHA (down from 14.4% in 2023), and these pages had 8.1 more errors than average.</li> <li>13.4% of pages (up from 11.5% in 2023) were detected as having Progressive Web Apps (PWAs) and these pages had 3.1 more errors than average.</li> </ul> <p>Web sites that used common cookie compliance technologies, such as OneTrust and CookieYes averaged notably fewer errors than average, whereas sites that used browser fingerprinting technologies commonly used for user tracking averaged significantly more errors than average. Sites that used FingerprintJS and ClientJS for user tracking averaged nearly twice and over ten times as many errors respectively. This may suggest a relationship between user privacy and accessibility practices.</p> <p>1,126,054 tables were observed (up from 1,064,331 in 2023) on 162,377 pages. Only 189,546 (16.8%) of the tables had valid data table markup.</p> <p>Web sites with common accessibility overlays detected averaged fewer detectable errors than average.</p> <ul> <li>AudioEye - 36.9 errors</li> <li>UserWay - 42.9 errors</li> <li>accessiBe - 50.5 errors</li> </ul> <p>NOTE: Overlays that manipulate WAVE results were disabled before the testing occurred.</p> </div> </div> <div class="section" id="conclusion"> <h2>Conclusion</h2> <p>Our 2024 analysis saw a notable increase in the number of detected accessibility errors, though a small decrease in number of pages with WCAG conformance failures. Despite increased errors, there were several positive trends. Pages with fewer errors in the past generally got better, suggesting that increased focus on accessibility is impactful. Also, the prevalence of several error types, such as low contrast text and missing alt text decreased. Some sectors, such as government and education, fare much better than others indicating regulation and supports have a positive impact on accessibility. We at WebAIM hope that this report will help influence improved accessibility.</p> </div> <script> $(document).ready(function(){ setTimeout(function(){ $(".chart div").removeAttr("aria-label"); $(".chart").attr("role","img"); $(".chart div").attr("aria-hidden","true"); $(".chart svg").attr("aria-hidden","true"); $(".chart svg").removeAttr("aria-label"); }, 1000); }); </script> </article> <!-- --> <aside id="articlemeta"> <div id="updated">Last updated: <time datetime="2024-03-28">Mar 28, 2024</time></div> <div id="related"> <h2>Related Resources</h2> <ul> <li><a href="https://wave.webaim.org/">WAVE Accessibility Evaluation Tool</a></li> <li><a href="https://wave.webaim.org/standalone">WAVE Stand-alone API</a></li> </ul> </div> </aside> </main> <footer> <div id="footerresources"> <div class="footerblock"> <h2 id="copyright">©2024 WebAIM</h2> <p id="contact">Institute for Disability Research, Policy, and Practice<br> Utah State University<br> 6807 Old Main Hill<br> Logan, UT 84322-6807<br> <a class="phone" href="tel:4357977024">435.797.7024</a></p> <div id="checkpage"> <h2>Check Your Accessibility</h2> <form action="https://wave.webaim.org/report" novalidate> <label for="waveurl">Web site address:</label> <input type="url" id="waveurl" name="url" title="Web site address"> <input type="submit" value="WAVE"> </form> </div> </div> <div class="footerblock"> <h2 id="blog">From the Blog</h2> <ul><li><a href="/blog/severity-ratings/">Using Severity Ratings to Prioritize Web Accessibility Remediation</a></li><li><a href="/blog/25-tips/">25 Accessibility Tips to Celebrate 25 Years</a></li><li><a href="/blog/celebrating-webaims-25th-anniversary/">Celebrating WebAIM's 25th Anniversary</a></li><li><a href="/blog/introducing-ncademi/">Introducing NCADEMI: The National Center on Accessible Digital Educational Materials & Instruction聽</a></li></ul> </div> <div class="footerblock"> <h2 id="popular">Popular Resources</h2> <ul> <li><a href="/training/virtual">WebAIM Training</a></li> <li><a href="/standards/wcag/checklist">WCAG 2 Checklist</a></li> <li><a href="/newsletter">WebAIM Monthly Newsletter</a></li> <li><a href="/resources/contrastchecker">Color Contrast Checker</a></li> <li><a href="/resources/designers/">Web Accessibility for Designers</a></li> <li><a href="http://wave.webaim.org/">WAVE Web Accessibility Evaluation Tool</a></li> </ul> </div> <div id="footerlinks"> <ul> <li><a id="footercontact" href="/contact">Contact</a></li> <li><a id="footerabout" href="/about">About</a></li> <li><a id="footerrss" href="/community/rss">RSS Feeds</a></li> <li><a id="footertwit" href="http://twitter.com/webaim">Twitter</a></li> <li><a id="footercopyright" href="/copyright">Copyright & Terms of Use</a></li> </ul> </div> <div class="clear"></div> </div> </footer> </body> </html>