Avoid Read-only Controls

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… | Continue reading


@adrianroselli.com | 6 hours ago

A11y Camp: Keynote Slides

Download a 3.6MB tagged PDF of my slides or try the embedded view if your browser displays PDF inline. The text in the slides is set in Atkinson Hyperlegible. The PDF is exported from PowerPoint, after confirming reading order and alternative text. The PDF itself has had no editi … | Continue reading


@adrianroselli.com | 1 month ago

Brief Note on Disclosures in Fieldsets

TL;DR: Probably don’t use disclosure widgets in fieldsets. If you do it anyway, don’t put the trigger in the . Context With / , recent support for the popover attribute, and the never-ending belief that a “clean” page means hiding content, there is a resurgence in stuffing usefu … | Continue reading


@adrianroselli.com | 2 months ago

Under-Engineered Estimated Reading Time Feature

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 … | Continue reading


@adrianroselli.com | 2 months ago

Semi-Annual Reminder to Learn and Hire for Web Standards

This post is part of RSS Club, rewarding those who still use RSS to read and/or share content. These posts are embargoed from my regular post feed and the socials for an arbitrary period of time. You can see all the RSS-only posts at AdrianRoselli.com/category/RSS. Tell your frie … | Continue reading


@adrianroselli.com | 2 months ago

Mountain Chicken!

I am mis-using closed captions for a gag. The following video has an audio track and four sets of captions (for now?). Each set of captions is in English. Only one set of captions represents the spoken dialog, the other two represent dialog not in the video. The tracks are… | Continue reading


@adrianroselli.com | 2 months ago

Talkin’ Tables — WebAIM Conference 2024

I spoke at the 2024 Web Accessibility in Mind Conference (in partnership with PopeTech). As soon as the video is available I will embed it. This post is a stub to hold the slides during my talk and will be updated sometime within a few days after my talk with… | Continue reading


@adrianroselli.com | 2 months ago

Before Filing that Keyboard Bug…

This post is part of RSS Club, rewarding those who still use RSS to read and/or share content. These posts are embargoed from my regular post feed and the socials for an arbitrary period of time. You can see all the RSS-only posts at AdrianRoselli.com/category/RSS. Tell your frie … | Continue reading


@adrianroselli.com | 3 months ago

Things to Do Before Asking “Is This Accessible?”

It is not uncommon for someone to message, call, email, or carrier pigeon me to ask if something is accessible. They almost invariably want a “yes” or “no.” However, I need to understand what the heck they mean and what the other-heck prompted them to ask. Yes, I would be… | Continue reading


@adrianroselli.com | 3 months ago

AT Is More Than Screen Readers

A screen reader is a single element of the overall set of assistive technologies. In practice, however, each is often used as a metonym for the other. Well, hello there. It’s nice to see you. If you’re here because I sent you the link, it’s nothing personal. You’re a lovely… | Continue reading


@adrianroselli.com | 3 months ago

Don’t Use Web•dev for Accessibility Info

Web.dev is a site from Google Chrome developer relations that provides content both to evangelize Chrome and to more broadly support the web platform. Rachel Andrew’s monthly “new to the platform” posts are effectively required reading to try to stay abreast of the browser suppor … | Continue reading


@adrianroselli.com | 4 months ago

Feedback on a Pagination Pattern

This post is part of RSS Club, rewarding those who still use RSS to read and/or share content. These posts are embargoed from my regular post feed and the socials for an arbitrary period of time. You can see all the RSS-only posts at AdrianRoselli.com/category/RSS. Tell your frie … | Continue reading


@adrianroselli.com | 4 months ago

Be Careful Using ‘Grid’

TL;DR: Be careful when using the word grid on its own. Be certain you have chosen the term that accurately describes the pattern you want. If this post looks familiar to you, that is because it is essentially a redress of my 2023 post Be Careful Using ‘Menu’. It is… | Continue reading


@adrianroselli.com | 4 months ago

Disability:IN 2024 Agenda Bookmarklet

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 Re … | Continue reading


@adrianroselli.com | 5 months ago

YouTube and Vimeo Web Component

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… | Continue reading


@adrianroselli.com | 5 months ago

Maybe Don’t Name That Landmark

TL;DR: You probably don’t need to name that landmark. The Ngong Ping Village tourist trap on Hong Kong’s Lantau Island. All the pricey tourist spots have visible named landmarks on the map, but the ones people generally care about (bathrooms, food, that lovely tea house) are not. … | Continue reading


@adrianroselli.com | 5 months ago

My Approach to Alt Text

This post is part of RSS Club, rewarding those who still use RSS to read and/or share content. These posts are embargoed from my regular post feed and the socials for an arbitrary period of time. You can see all the RSS-only posts at AdrianRoselli.com/category/RSS. Tell your frie … | Continue reading


@adrianroselli.com | 5 months ago

Level-Setting Heading Levels

TL;DR: Avoid setting heading levels greater than six (6). This applies whether using aria-level or the proposed headingstart HTML attribute. Use HTML elements whenever possible. ARIA The aria-level attribute, when applied to headings (or nodes with the heading role) lets authors … | Continue reading


@adrianroselli.com | 6 months ago

A Brief Note on Highlighted Text

TL;DR: If you plan to style text highlighted by the browser, you must give it sufficient contrast — 3:1 for the highlight block against its background and (probably) 4.5:1 for the text within that highlighted block against that background. CSS Context CSS provides methods to styl … | Continue reading


@adrianroselli.com | 6 months ago

What You Can Do as a Web Builder on Earth Day

One easy thing you can do for the earth is not use “AI” tools. Consider this as a programmer, web developer, web designer, copywriter, webmaster, etc. The tools include anything branded as generative AI, LLMs, computer vision tools, ChatGPT, Bard, Grok, Dall-e, Midjourney, and so … | Continue reading


@adrianroselli.com | 7 months ago

Long Alt

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… | Continue reading


@adrianroselli.com | 7 months ago

CSUNATC: WCAGmire

Download a 4.4MB tagged PDF of my slides or try the embedded view if your browser displays PDF inline. The text in the slides is set in Atkinson Hyperlegible. The outdoor images are generated from Midjourney. The PDF is exported from PowerPoint, after confirming reading order and … | Continue reading


@adrianroselli.com | 8 months ago

The Ultimate Ideal Bestest Base Font Size That Everyone Is Keeping a Secret, Especially Chet

It’s none. Clarification Let me clarify: don’t set a base font size. body { /* font-size: yeah, no */ } Got a linter or code checker or boss-man hassling you that you need to set something? Ok, use this: body { font-size: 100%; } Because This approach has the advantage… | Continue reading


@adrianroselli.com | 8 months ago

Web Turns 35, Seems Popular

The world wide web has officially lasted 35 consecutive years, which means it’s catching up to its parent, the Internet, which itself is bearing down on 55. That’s an important distinction. The Internet is not the web; it is the foundation on which the web was born. Prior Years F … | Continue reading


@adrianroselli.com | 8 months ago

Jakob Has Jumped the Shark

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 … | Continue reading


@adrianroselli.com | 8 months ago

Check-All / Expand-All Controls

Controls that can operate other controls in bulk are not new. One common example is a single checkbox that allows you to check or uncheck a group of checkboxes. Another example is a single button that lets you expand or collapse a set of disclosure widgets. When the user operates … | Continue reading


@adrianroselli.com | 8 months ago

Techniques to Break Words

Photo by studio tdes. Used under CC BY 2.0 Deed. Image cropped and contrast enhanced. A few days ago Benjy Stanton asked about breaking long words in tables. I offered a suggestion, which may or may not have worked. I never asked. My failure to follow up aside, it reminded… | Continue reading


@adrianroselli.com | 8 months ago

My WebAIM 10th SR User Survey Takeaways

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 commen … | Continue reading


@adrianroselli.com | 9 months ago

ARIA `note`

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… | Continue reading


@adrianroselli.com | 9 months ago

Don’t Disable Form Controls

Just another usability and accessibility pro telling authors not to do the thing they continue to do. It’s Ok to Disable Buttons There are plenty of cases where you want to disable a button until a user takes a conscious action to enable it, such as when launching nuclear missile … | Continue reading


@adrianroselli.com | 9 months ago

Under-supported and Underpaid

This post is part of RSS Club, rewarding those who still use RSS to read and/or share content. These posts are embargoed from my regular post feed and the socials for an arbitrary number of weeks. You can see all the RSS-only posts at AdrianRoselli.com/category/RSS. Tell your fri … | Continue reading


@adrianroselli.com | 10 months ago

Using abbr Element with title Attribute

This post is part of RSS Club, rewarding those who still use RSS to read and/or share content. These posts are embargoed from my regular post feed and the socials for an arbitrary number of weeks. You can see all the RSS-only posts at AdrianRoselli.com/category/RSS. Tell your fri … | Continue reading


@adrianroselli.com | 10 months ago

Embed Slides, YouTube Videos, and More

There are plenty of use cases for embedding third-party content on a site, as well as local content that may not be in HTML. Perhaps you gave a talk and want to share your slides. Sometimes you want to reference a video that exists only on YouTube. Maybe you have… | Continue reading


@adrianroselli.com | 10 months ago

#AudioEye Has Dropped Its Suit Against Me

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 Joint Statement The Parties are AudioEye … | Continue reading


@adrianroselli.com | 10 months ago

2.5.8: Adversarial Conformance

This post is part of RSS Club, rewarding those who still use RSS to read and/or share content. These posts are embargoed from my regular post feed and the socials for an arbitrary number of weeks. You can see all the RSS-only posts at AdrianRoselli.com/category/RSS. Tell your fri … | Continue reading


@adrianroselli.com | 10 months ago

AD Support in HTML Video

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 brow … | Continue reading


@adrianroselli.com | 11 months ago

Baseline Does Not Really Cover Baseline Support

Yeah, that’s not exactly a helpful title. The relatively new Web Platform Baseline offering does not track browser support for accessibility features built into the web platform. If you need to understand whether browsers support accessibility features as your own base level set … | Continue reading


@adrianroselli.com | 11 months ago

Media Queries in HTML Video

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 … | Continue reading


@adrianroselli.com | 11 months ago

Web Development Advent Calendars for 2023

Generated by Midjourney using the prompt “a Pagan advent calendar for Christmas, made of natural wood.” It seemed more appropriate for the season than the neon synthwave version (which I want to hire someone to make). Web developers around the world have for years given a nod to … | Continue reading


@adrianroselli.com | 11 months ago

Øredev 2023: Under-Engineered Patterns

Download a 2.6MB tagged PDF of my slides or try the embedded view if your browser displays PDF inline. I was invited Malmö, Sweden to present two talks at Øredev. Well, they asked me to do one but then suggested that hey, since I’m already there and stuff, how about… | Continue reading


@adrianroselli.com | 1 year ago

Øredev 2023: WCAGmire

Download a 5.3MB tagged PDF of my slides or try the embedded view if your browser displays PDF inline. I was invited Malmö, Sweden to present two talks at Øredev. Well, they asked me to do one but then suggested that hey, since I’m already there and stuff, how about… | Continue reading


@adrianroselli.com | 1 year ago

Don’t Turn a Table into an ARIA Grid Just for a Clickable Row

This post is part of RSS Club, rewarding those who still use RSS to read and/or share content. These posts are embargoed from my regular post feed and the socials for an arbitrary number of weeks. You can see all the RSS-only posts at AdrianRoselli.com/category/RSS. Tell your fri … | Continue reading


@adrianroselli.com | 1 year ago

Splitting within Selects

The native HTML is renowned for its styling limitations. Even with control over the closed state and trigger appearance, the options themselves are still defined primarily by the browser and the OS. While I think this is generally fine (preferred, even), the (nee ) hopes to cha … | Continue reading


@adrianroselli.com | 1 year ago

2.4.11: Adversarial Conformance

This post is part of RSS Club, rewarding those who still use RSS to read and/or share content. These posts are embargoed from my regular post feed and the socials for an arbitrary number of weeks. You can see all the RSS-only posts at AdrianRoselli.com/category/RSS. Tell your fri … | Continue reading


@adrianroselli.com | 1 year ago

Obligatory WCAG 2.2 Launch Post

This post is part of RSS Club, rewarding those who still use RSS to read and/or share content. These posts are embargoed from my regular post feed and the socials for an arbitrary number of weeks. You can see all the RSS-only posts at AdrianRoselli.com/category/RSS. Tell your fri … | Continue reading


@adrianroselli.com | 1 year ago

Paris Web 2023: WCAGmire

Download a 5.3MB tagged PDF of my slides or try the embedded view if your browser displays PDF inline. I was invited to the 2023 edition of Paris Web as one of two presenters speaking solely English. I did my best to script my talk to hopefully make it easier… | Continue reading


@adrianroselli.com | 1 year ago

The Children Are Driving the Bus

This post is part of RSS Club, rewarding those who still use RSS to read and/or share content. These posts are embargoed from my regular post feed and the socials for an arbitrary number of weeks. You can see all the RSS-only posts at AdrianRoselli.com/category/RSS. Tell your fri … | Continue reading


@adrianroselli.com | 1 year ago

Browser Video Players Review

Browsers each provide built-in video players for the element. Nearly four years ago Scott Vinkle wrote How accessible is the HTML video player?, where he compared these to one video player product. I decided it was time to test for myself. I structured my test and reporting a bi … | Continue reading


@adrianroselli.com | 1 year ago