As of December 2024, you should prefer using for icons and the like, but for non-interactive decorative contexts that don’t need auto-translation, then alternative text on CSS generated content can get the job done. Even if Safari does some interesting things with it. Relying on images that come from…| Adrian Roselli
Last week while whining about having accessibility contributions to FOSS projects dismissed, I had a Twitter conversation about when the same thing happens with clients. I have a method to deal with that, however, which I briefly outlined on Twitter. I promised to expand on it in a blog post,…| Adrian Roselli
Sometimes you run into a main landmark where you don’t expect one. Like Main Street USA in Hong Kong Disney. So you grab a snack in a diner that serves no hot dogs. You can buy little American flags in the heart of Hong Kong and clothes telling Hong Kong…| Adrian Roselli
This post only covers my impressions and experiences from CSUNATC. Others probably had dramatically different experiences. Talk Types The talks seemed to fall into three broad categories this year: product pitches, vendor room sessions (which were product and service pitches), and ‘AI’ talks. Vendor Rooms For the most part, if…| Adrian Roselli
In my post Brief Note on Figure and Figcaption Support I demonstrate how, when encountering a figure with a screen reader, you won’t hear everything announced at once: No screen reader combo treats the caption as the accessible name nor accessible description, not even for an image that lacks one.…| Adrian Roselli
When Rian Rietveld resigned from the WordPress accessibility team on October 9, I decided to track the fallout in an ongoing Twitter thread. The subsequent weeks and days proved to be wonderful insight into how a project can suffer when accessibility is not built in from the start. When subject…| Adrian Roselli
I made a demo for WCAG 2.2 Success Criterion 1.2.5 Audio Description (Prerecorded) AA and have embedded it further down the page. It’s a bit of a download, so either ignore it, be patient, or steal wifi from your local chain restaurant. Conformance Success Criterion 1.2.5 Audio Description (Prerecorded) AA…| Adrian Roselli
TL;DR: blanket statements about where to put focus when opening a modal dialog are wrong, including this one. This post is meant to help you, an intelligent and thoughtful and empathetic reader, figure out where you should set focus. The scenarios are non-exhaustive. Messages I’m artificially breaking these into three…| Adrian Roselli
Google has an extensive history of releasing products and tools that fail basic accessibility. This is not a function of individuals — Google has some very talented and capable accessibility practitioners. Instead, this is an organizational failure. Failure to require accessibility in its products or services. Failure to support teams…| Adrian Roselli
WCAG 2.2 is live. Read the W3C’s What’s New in WCAG 2.2 to know what from this wildly outdated post made it into the final spec. The latest (and probably last) WCAG version 2 point release is in draft and the W3C is asking for comments and feedback by 18…| Adrian Roselli
Since the early days of the web, when images could be floated and text would wrap around them, designers have wanted to bring drop caps onto the web. Then we learned how terrible a pattern like atthew is for users, and CSS introduced :first-letter, letting us believe all…| Adrian Roselli
It’s weird to me that after I urged everyone not to disable form controls, a bunch of them decided that making them read-only was somehow better. But here we are. What’s in the box? Photo by Michael Heiss, no edits, CC BY-NC-SA 2.0. HTML The readonly attribute is only allowed…| Adrian Roselli
I am not going to dive into the details of and . Go read Scott’s 2019 post How do you figure? for an overview. That said, since Scott’s post there has been movement on the AAPI mapping (partly by Scott). Specifically, the element should not provide the accName…| Adrian Roselli
This image is borrowed from the WebAIM article on Cognitive Disabilities.In the blog post Definitions of “Cognitive Disability” by John Rochford, we can see that it’s not so easy to define the term “cognitive disability.” Given how often this term appears in accessibility statements and requirements for web sites, the…| Adrian Roselli
Susan Weinschenk, Ph.D. wanted to write an article about why it’s harder to read text set in all-caps than text set as mixed case. The argument for this has centered around how people read words — recognizing a word shape from its letters, whereas an all-caps word has no unique…| Adrian Roselli
アクセシビリティの概念的な理解から、取り組むべき理由、ガイドライン、実践方法、その学び方など、幅広いテーマについての概説と、それら各論の参考資料の紹介。| PLAID Engineer Blog
In 2017 I wrote Tweaking Text Level Styles (terrible name in retrospect) and I made regular updates over the years. Stop reading it. Remove it from your bookmarks. Unlink it from your posts. Print it onto paper and then burn it. Demo Wrap-up The conclusions and…| Adrian Roselli
The Vercel CEO over on the hell-site tweets: v0.dev produces the kind of production-grade code that we'd want to ship in our own @vercel products. That was the bar we set for ourselves. At the moment it can output HTML with @tailwindcss and React w/ @shadcn UI. pic.twitter.com/hWLzpmyaG2 Guillermo Rauch…| Adrian Roselli
Disclaimer: This post and the headline is my opinion. I provide verifiable facts throughout to inform that opinion. I am also not a lawyer, and this post does not constitute legal advice. The content reflects my genuinely held beliefs and opinions. My concern with AudioEye has consistently been with the…| Adrian Roselli
TL;DR: anyone promising you that a total solution to digital accessibility is coming, and they are the ones bringing it, may be lying. Background In 2016 I wrote Be Wary of Accessibility Guarantees from Vendors. At the time I was cautioning readers about libraries and frameworks and SaaS and so…| Adrian Roselli
It’s 2022 and people are still afraid to use and . I understand the layout challenges can be frustrating, but swapping to an ARIA group role will result in a more inaccessible experience. A Solution Try this: ChooseChoose […] legend:not(:focus):not(:active) { position: absolute; overflow: hidden;…| Adrian Roselli
If you have little experience with ARIA, screen readers, or testing in general, understanding accessible descriptions can be trickier than understanding accessible names (already confusing for many). I have written explanations so many times for clients and in fora that I opted to put this together so I maybe never…| Adrian Roselli
Usually. I originally titled this InacCSS-onlyible. I even made this typographically, er, distinct image. Then I realized it was silly and will instead use the neologism in a talk so I can hear the groans IRL. Interactive widgets powered with only CSS are relatively common as people are playing with…| Adrian Roselli
TL;DR: This post does not assert the correct way to code blockquotes, it will only demonstrate how screen readers announce some existing patterns. Test Details The first four examples are lifted from WHATWG HTML’s entry. The next three are from W3C HTML’s 2019 guidance (the W3C HTML spec…| Adrian Roselli
The required set of radio buttons. The white whale to many a developer who is trying their darnedest to ensure they are conveyed accessibly while not also making it sound like every individual radio button must be toggled. 1961 Cadillac Wonderbar dashboard radio by Nicholas Lucien (cropped). CC BY 2.0.…| Adrian Roselli
The online holiday shopping coupled with my need to make a new invoice template got me looking at a common table structure that is harder to expose to screen readers than it seems at first glance. One I first coded in, checks watch, 1997 when I was an ecommerce developer…| Adrian Roselli
Others in this sorta-series: Under-Engineered Custom Radio Buttons and Checkboxen Under-Engineered Toggles Under-Engineered Toggles Too Under-Engineered Text Boxen Under-Engineered Select Menus A common interface pattern allows users to choose one item from a pre-defined set of choices, while still allowing them to add a custom selection if nothing else fits.…| Adrian Roselli
Whether you call them sentence forms, narrative forms, fill-in-the-blank forms, or Mad Libs forms, you are probably describing a form where the fields are interspersed within words in a sentence. Unlike more traditional forms, laid out with simple pairings of labels and fields, these forms are meant to be read…| Adrian Roselli
This post expands on what I covered in my April 2021 post, Sortable Table Columns. You may want to read that first to understand the broader challenges and techniques for making a table sortable by one column at a time. That last statement is what matters here. ARIA 1.1 says…| Adrian Roselli
An accessible sortable table is not necessarily the same as a usable sortable table. Outline: Basics Let The User Know This Thing Has Sorted Screen Reader Announcement Sort Arrows Column Background Column Background via Let The User Know This Thing Sorts SVGs Layout Windows High Contrast Mode Screen Readers…| Adrian Roselli
Others in this sorta-series: Under-Engineered Custom Radio Buttons and Checkboxen Under-Engineered Toggles Under-Engineered Toggles Too Under-Engineered Text Boxen I am still confounded how many developers and designers see a| Adrian Roselli
This article was originally posted on evolt.org, an online resource for web developers, maintained by web developers. I have granted evolt.org the right to use this article on their web site, and they are the only entity with the right to reproduce it. WebAIM is a non-profit organization within the…| Adrian Roselli
From the FTC on Friday: The Federal Trade Commission will require software provider accessiBe to pay $1 million to settle allegations that it misrepresented the ability of its AI-powered web accessibility tool to make any website compliant with the Web Content Accessibility Guidelines (WCAG) for people with disabilities. FTC Order…| Adrian Roselli
TL;DR: Description list support continues to be generally good (with VoiceOver still the outlier), even if you may not like how it is supported. For background, the has existed since HTML+, or 1993, when it was called definition list. In December 2022 I wrote Brief Note on Description List…| Adrian Roselli
I have written a bunch about responsive tables. Maybe too much. I keep trying to give developers the information they need to make informed decisions — ARIA attributes, screen reader & browser pairing results, bugs, and so on. I have spread things out over years of posts. I have filed…| Adrian Roselli
TL;DR: Despite claims, APG’s support charts are not ARIA support charts and they are not analogous to Can I Use. While brand new and likely to grow, their scope is still strictly APG patterns. Why I Say This I have opinions on the ARIA Authoring Practices Guide (APG). I am…| Adrian Roselli
This post is about exposing field errors programmatically. I have already shared some opinions (such as a caution about displaying messages below fields or avoiding default browser field validation), but this post dives into using ARIA to convey them to screen reader users. With fields that produce error messages on…| Adrian Roselli
Using ARIA instead of HTML is generally fine for content, layout, structure, and other static bits of a page. A is the same as as far users and accessibility APIs are concerned. It is unlikely a user will ever notice the difference unless you use both…| Adrian Roselli
I made a demo for WCAG 2.2 Success Criterion 2.4.11 Focus Not Obscured (Minimum). I built it strictly to capture screenshots, so while it is not a good demo as a standalone (which is why it is not embedded here I added it) it is handy to demonstrate something. Conformance…| Adrian Roselli
Does what it says on the tin. Uses and with a bit of ARIA to create an accordion that works without JavaScript while working better with JavaScript. Mostly. See the Pen Progressively Enhanced HTML Accordion by Adrian Roselli (@aardrian) on CodePen. Visit the standalone version for testing or…| Adrian Roselli
When I wrote Under-Engineered Text Boxen in 2019 I mentioned (WHATWG, MDN) but did not dwell on it. Partly because support was poor at the time. Once Can I Use’s entry listed Firefox on Android supporting it in version 110, I got excited and started testing to write…| Adrian Roselli
All Posts Tagged: accessibility| adrianroselli.com
3 January 2025: This post is out of date. Read my post Updated Brief Note on Description List Support for the most recent results of testing. TL;DR: Description list support is generally good (with Safari being the outlier), even if you may not like how it is supported. This post…| Adrian Roselli
There are plenty of plug-ins, libraries, and tutorials that will add an “estimated reading time” visual cue to your site. There are also browser extensions for users. Most use JavaScript and CSS to calculate based on word count and viewport position. All require more work on the part of the…| Adrian Roselli
I made a demo for WCAG 2.2 Success Criterion 2.5.8 Target Size (Minimum) AA and have embedded it further down the page. Unfortunately it is going to be annoying for you, dear reader, as it steals focus. Conformance Success Criterion 2.5.8 Target Size (Minimum) AA with only the first two…| Adrian Roselli
Here is the priority I follow when assigning an accessible name to a control: Native HTML techniques, aria-labelledby pointing at existing visible text, Visibly-hidden content that is still in the page, aria-label. Too often folks will grab ARIA first to provide an accessible name for a thing. Or they may…| Adrian Roselli
Remy Sharp asked on the Mastodon about pagination as he found it in the W3C Design System:| Adrian Roselli
I had some issues using the Disability:IN 2024 Conference Agenda so I made a bookmarklet: 🔗 Fix Disability:IN Agenda You may have seen this originally posted as a CodePen, but I opted to move it here since I can embed videos showing a before-and-after experience. Fixes Removes empty trigger link…| Adrian Roselli
If you want something done right, post it wrong. In the long history of the innertubes, if you ask for help with code you typically won’t get much of a response. But if you post code and assert it is ideal and perfect and an immutable reflection of your pristine…| Adrian Roselli
TL;DR: Keep your image alternative text brief, devoid of special characters, empty of URLs, and ideally in one language. Here We Go Sometimes you can have too much alternative text, particularly for an . I don’t mean there is a limit to what is allowed, I mean there is a…| Adrian Roselli
Automated accessibility testing tools cannot test 100% of WCAG. This position is not controversial. Other than overlay vendors, no automated tool maker makes that claim. This is partly because WCAG is targeted at humans, not code, and so nuance and context apply. Free automated accessibility testing tools may have even…| Adrian Roselli
It was late 2020 when I last tested how browsers use CSS display properties to break the semantics of elements. I had been waiting for Safari to fix how it handles display: contents for four years now, and was excited when the announcement came in June. Then I started testing…| Adrian Roselli
This is not a comparison between popovers and dialogs, nor is it a discussion of support. This is me trying to get ahead of a potential issue for users when developers mix and match the patterns. I will let this 32 second video explain: Sorry, your browser doesn’t support embedded…| Adrian Roselli
Yes, that is the bear from Jakob’s clearly spurious alternative text example and yes, that is The Fonz after jumping the shark. If you have been following the saga of Jakob Nielsen, there a few quotes I could use here: Battle not with monsters, lest ye become a monster (Nietzsche).…| Adrian Roselli
I have spent a few years banging on about ensuring scrolling areas on a page are accessible to keyboard-only users. This is partly because the term “keyboard” maps to other input types that we distill to “keyboard” for ease of reference (speech input, sip-and-puff, on-screen keyboards, scanning software, etc.). When…| Adrian Roselli
A rambling collection of thoughts from reading through the WebAIM Screen Reader User Survey #10 Results. Most of this was in a Masto thread, but I opted to post it here so I can laugh at myself later. Disability This opening nugget is important for understanding some of my commentary:…| Adrian Roselli
Trying Markdown code indicators in my post title, not because I want it to convert, but because I am curious if people will ping me to tell me it broke their RSS readers. Oh, and so it converts to code when pasted into your GitHub issues. ARIA note Role A…| Adrian Roselli
The CSS3 logo as a head atop a torso with its arms folded across its chest. I am a big proponent of the First Rule of ARIA (don’t use ARIA). But ARIA brings a lot to the table that HTML does not, such as complex widgets and state information that…| Adrian Roselli
AudioEye has dropped its lawsuit against me as part of a settlement agreement. The specific legal details are at the end of this post. Index for this post: Joint Statement Impact, Abridged SLAPP Everybody Lost Legal Details Wrap-up Related CAO Hire: 8 February 2024 Talk References (Added 7 July 2024)…| Adrian Roselli
Others in this sorta-series: Under-Engineered Custom Radio Buttons and Checkboxen Under-Engineered Toggles Under-Engineered Toggles Too This is the latest, and not last, in my informal series of posts on under-engineered controls. Generally I am looking at the minimum amount of CSS necessary to style native HTML controls while also retaining…| Adrian Roselli
This post supplements Browser Video Players Review. There I wade into the de facto accessibility of the element based on the default video players provided by browsers. The results of my testing here update the tables in that post. One of the primary challenges of using the browsers’ default…| Adrian Roselli
Before you get too far into this post, maybe read Browser Video Players Review. There I wade into the accessibility of the element based on the video players browsers provide. Then maybe read Scott Jehl’s How to Use Responsive HTML Video (…and Audio!). I am leaning on support in…| Adrian Roselli
Table of Contents Example The HTML Live Region Button Decoration Accessible Name The Styles Hide the Live Region Color and Contrast Active Animations Text Resize and Reflow Windows High Contrast Mode The Script The Click Event Manipulate Outcomes Screen Reader Output WCAG Success Criteria What This Does Not Do Wrap-up…| Adrian Roselli
Once major browsers started supporting & developers immediately started to play with them to see what sorts of patterns they could enhance or replace. This is a good thing. Experimentation pushes boundaries, improves understanding. However, we need to be careful of christening this new-to-us interaction as the solution…| Adrian Roselli
A disclosure widget is a simple control whose sole purpose is to hide or show stuff. Native HTML has one built in via the and elements. Until recently, if you wanted to use it in modern browsers you needed to use a polyfill. In most cases it was…| Adrian Roselli
Underlines, the standard, built-in signifier of hyperlinks, the core feature of the web, are beautiful. This is objectively true. They are aesthetically one of the most delightful visual design elements ever created. They represent the ideal of a democratized information system. They are a frail monument to the worldwide reach…| Adrian Roselli
As of my 28 January 2024 update at the end of this post, aria-label auto-translation support is seemingly as spotty as when I first wrote this post. It does, actually. Sometimes. One of the big risks of using ARIA to define text content is that it often gets overlooked in…| Adrian Roselli
The Test Page The Code Testing Results Keyboard Screen Readers Voice Control, Forced Colors, Speed Media Queries: 20 December 2023 Audio Description: 20 December 2023 Wrap-up Browsers each provide built-in video players for the element. Nearly four years ago Scott Vinkle wrote How accessible is the HTML video player?,…| Adrian Roselli
Disclaimer: This post and the headline is my opinion. I provide facts throughout to inform that opinion. I say this because accessiBe managed to get $40 million in two rounds of funding from K1 Capital and I am guessing some of that money will be allocated to attorney fees. I…| Adrian Roselli
Low resolution screen shots combined to show the same page as seen using Windows High Contrast Mode and macOS Invert Colors settings. There are different ways to make a web page more easy to read, but there are two options that come directly from the operating system that many developers…| Adrian Roselli