Fonts and web accessibility go hand in hand, other than font and background contrast ratio. Font sizing is as important for users with visual impairments and for user experience. Optimizing font size for accessibility will result in a more engaging content experience for all users.

Generally speaking, an accessible font is one that does not slow down the reader. The reading experience should be seamless, letters should be easily distinguishable from one another and easy on the eyes to avoid eye strain.

It has to be easy to see, read and understand by everyone, disabled or not.

Minimum Font Size Requirement

While there aren’t any minimum font size requirements according to the Web Content Accessibility Guidelines (WCAG), it is recommended to use a font size of at least 16px. Going too small or too large with website fonts can lead to accessibility issues and negative user experience. WCAG recommends that website users be able to zoom in on text to make it 200% larger without any loss in clarity.

Being able to reflow content on a web page and resize text are both important criteria according to WCAG, for users with low vision.

A web browser default font size is set at 16px, people with cognitive or visual disabilities will often increase the default font size to make text legible using the web browser zoom feature or change the default font size directly in the web browser settings. To ensure that fonts are resized correctly, it is the web developer’s job to use accessible coding practices. So that it does not interfere with the way the browser displays text.

Why Should You Use Relative Scaling Units In Font Sizing?

One of the easiest ways to make sure that textual content is resized according to the user’s preferences is to use relative scaling units instead of absolute ones. Fonts on websites using relative scaling units will increase according to the browser’s default font size, while fonts on websites using absolute units won’t.

In web design, we commonly use pixels(px) when sizing elements such as fonts. Using px is straightforward and sizes fonts exactly how we want it. However the issue with using absolute units such as px is that they are non-scalable. Meaning that whenever the value of another element changes, absolute units don’t. They are fixed and stay the same irrespective of the web browser settings.

Which is bad news if absolute units are used for font sizing, when a user increases its browser default font size or uses the web browser zoom feature, fonts using px stay the same and are not affected.

The alternative is to use relative scaling units such as em and rem, which can solve that issue and offer an adaptable, accessible and responsive font sizing.

Another reason why relative scaling units are important is the wide variety of devices used to access websites. All those devices render web pages differently and using relative units will help make sure that texts are rendered at a readable size.

What is an EM Unit?

em is a unit relative to the nearest parent element. It enables you to adjust the font size of a relative element to the font size of a parent element. When the font size of the parent element changes, the font size of the relative element changes as well.

For example, if the body element font size is set to 16px, then 1em = 16px. If a paragraph element is nested inside the body with a font size of 0.5em, it becomes half the font size of the body element, 0.5em = 8px.

Here’s a code example of how em units work when used for font sizing:

<!DOCTYPE html>
        /* Set the base font size for body element */

        body {
            font-size: 18px;

        h1 {
            font-size: 2em; <- This will be 36px (2*18px)


As we see in the example above, the <body> tag is set at 18px and the <h1> tag is set at 2em.

Here 1em equals 18px so text in the <h1> tag will be sized at 36px.

If font size is not specified in the <body> it defaults to the browser’s default font size, which is 16px.

Compounding issue with CSS EM units

Using em units gives a more modular control over specific parts of a web page, which is great for responsive and adaptable websites. But we can get into issues if we keep nesting elements inside one another. This will lead to em units compounding and make the text unintendedly larger.

Here’s an example where divs are nested within each other which compounds the em units value and makes the text larger:

.primary {
  font-size: 15px;
.secondary {
  font-size: 2em;

<div class="primary">
  I'm 15px
  <div class="secondary">
  I'm 30px, it's all good.
    <div class="secondary">
    I'm 60px, what's going on?!
      <div class="secondary">
      I'm 120px, this is too big!

Here’s the output of the code above:

I’m 15px

I’m 30px, it’s all good.

I’m 60px, what’s going on?!

I’m 120px, this is too big!

The solution to em units compounding when nesting elements is to use rem units instead.

What Is A REM Unit?

rem is a unit relative to the root element which is the <html> element on a web page. When font size is not specified, it defaults to 16px. Similarly to em units, 1rem = 16px and 2rem = 32px. They are more predictable in how they size elements on a web page.

Unlike em units, rem units are relative to the root element which makes them impossible to compound.

Here’s a code example of how rem units work when used for font sizing:

<!DOCTYPE html>
        /* Set the base font size for html element */
        html {
            font-size: 18px;

        body {
            font-size: 1rem; <- This will be 18px (1*16px)


As we can see, rem and em units are no different in how they function when used for font sizing. Only difference being em units will relate to its closest parent and rem units will relate to the <html> or root element.

None is better than the other, em is great for modularity when we want certain parts of the web page to size fonts in a particular way. While rem is more predictable in the way it sizes fonts but gives you less flexibility and modularity.


Regular text, images or text-based form controls not resizing upon zooming the viewport to 200% is a common WCAG violation we encountered during our manual audits. Making sure that web pages size fonts correctly when users zoom or increase font size is important for web accessibility and responsive web design. 

And this starts with web developers and designers using accessible coding practices like replacing absolute units with relative sizing units when designing websites and setting font size. 
Write to us at and talk to one of our engineers if you need help conducting a manually accessible audit of your web or mobile application.

Text is the most present and distinctive visual element on a web page and it often falls behind in terms of accessibility. 

Web Accessibility isn’t only about adding alt-text to images or having the right design layout. Small details such as the font and typeface used on a website can make or break user experience.

Choosing the right font is important for text legibility and readability. Not only does it help the reader distinguish individual characters and words, it also makes the reading experience pleasurable and easier on the eyes of the reader.

Accessible fonts make texts easy to read and understand to users with visual and cognitive disabilities, such as loss of vision, color blindness and dyslexia

There are approximately 32 million Americans living with impaired vision, and that number keeps rising as the population grows older and experiences more vision-related diseases.

Taking in consideration how a visually impaired audience experiences content on your website is important in this day and age.

Choosing An Accessible Font

Fonts come in multitudes of shapes, sizes and colors, and not all of them were designed for web accessibility.

An accessible font typography is one that is legible, clear and understandable to the wider audience disabled or not. Generally speaking, It should not slow down the reading speed of a website visitor.

Avoid using decorative fonts such as hand-written, cursive or custom made. When choosing an inclusive font it is important to choose one that is simple and unembellished.

Here are some key features of an accessible font:

Here are some examples of accessible fonts:

Keep in mind that when choosing an accessible font it is important to consider how it will look on different displays and resolutions such as a tablet or phone. Some fonts are easier to read on bigger displays than smaller ones. And the font should be optimized for mobile viewports and screen readers.

Displaying text with images is generally not recommended, firstly because screen readers are unable to read aloud text on images, and secondly when those images are scaled for different resolutions the quality deteriorates making it harder to read.

Using a smaller font size isn’t recommended if you’re planning on making your website accessible. This can cause eye strain and give a cluttered look, resulting in a negative user experience. You shouldn’t make your font size too big either, opting for a medium sized font is advisable.

Running A/B tests and trying different font sizes across web pages is another great way to find the optimal font size for conversion by tracking analytics and user feedback.

Scaling Accessible Fonts with Em and Rem Units In CSS

According to the Web Content Accessibility Guidelines (WCAG) it is recommended to use relative font sizes instead of absolute when designing a website. This can be done using CSS em and rem units when setting units of size, both are relative and scalable units.

While rem units are easier to work with and more predictable in general, since they follow the root element in terms of font size. It lacks flexibility if we need to only scale and control a certain area of a web page.

em on the other hand is more modular and offers detailed control over specific areas of a web page since it follows its nearest parent font size.

em and rem units offer more flexibility when modifying the visual representation of a web page. 

They both have their pros and cons when it comes to scaling font size on a webpage.

The Benefits Of Accessible Fonts

Most of the information found online is conveyed through text, and this is important especially if you’re selling a product or offering a service to your customers.

The value proposition and messaging of your business has to be clearly understood by your customers and this starts with an accessible font.

Inclusivity with your content also means more potential customers since you’re targeting an underrepresented and often untapped segment of the market. This also makes website visitors satisfied and increases browsing sessions which is tracked by Google Search when assessing for SEO score and performance. Conversion and engagement rate is also significantly higher with accessible web pages.

Not being inclusive with your textual content puts you at risk of losing brand trust and endangers your reputation. And this translates into lower customer conversion rate and sales.

Using accessible fonts is also part of the Americans with Disability Act (ADA) compliance guidelines, and not following them puts your business at risk of a lawsuit and being sued for an ADA violation which can go up to $75,000 for the first violation.


Accessible fonts play a crucial role in the digital accessibility landscape. It ensures that everyone experiences content the same way without any barriers in readability and legibility, disabled or not. From choosing a clear and legible font to choosing the right font size, both are important factors in web accessibility.

Opting for an accessibility font benefits businesses and website users alike, by creating an inclusive and comfortable digital environment for both parties.

Shopify has the largest eCommerce market share in the USA with millions of buyers and sellers using the platform every single day. As of writing this, Shopify sites fall behind in terms of accessibility. Shopify themes are not fully ADA-compliant. Making them hard to use by people living with disabilities.

Shopify websites are not ADA-compliant by design. They often lack core features of an accessible website, such as being keyboard accessible. Shopify delegates the matter to the owner of the website, since each jurisdiction has its own laws and regulations related to web accessibility.

The closest you can get to meet ADA compliance are Shopify’s free OS 2.0 themes, though they are not fully ADA compliant. The good news is Shopify’s Checkout went through a full audit and meets WCAG 2.1 AA requirements, but Shopify themes are far from it.

Shopify does offer some guidance in making themes more accessible, but it doesn’t solve the main issue. Website owners need to make those changes and adjustments themselves; not everyone is technically capable. Which leaves millions of Shopify sites inaccessible to the disabled and impaired, especially those built by third parties.

This puts business owners using Shopify in a vulnerable position financially, by the threat of getting sued for ADA violations and losing millions in sales.

The Benefits Of Having Your Shopify Website ADA Compliant

More Profitable

An ADA compliant Shopify website means a better reach and a wider audience. Approximately 42.5 million Americans are living with a disability, facing limitations with inaccessible websites and web content.

Having your Shopify website ADA compliant benefits you and your customers. It opens your Shopify business to an underserved market that otherwise wouldn’t be able to use your website, and you would be missing out on business.

Every year, businesses lose billions from having inaccessible eCommerce websites, losing customers and their reputation. In 2021 alone, retailers expectedly lost $828 million due to having inaccessible websites. 

Being ADA compliant can be a great marketing feature for your brand, promoting it as accessible and ADA compliant will definitely make your Shopify website stand out and attract more clicks. Today, a brand is everything, customers want to do business with inclusive brands that take their customers seriously. Failing to be an ADA compliant eCommerce website can result in lower sales and a damaged brand reputation.

Large retailers like Amazon are spending millions to make their websites accessible and have dedicated accessibility teams. Which isn’t always the case with small to medium retailers using Shopify websites to sell online, most of them ignore the legal requirements of web accessibility and some aren’t aware that it’s a problem on their Shopify site. Making them vulnerable to hefty ADA lawsuits which can bankrupt their online business.

Ultimately, making your Shopify website accessible translates into a better experience for your customers and more money for you.

3 Best Practices To Make Your Shopify Website ADA Compliant

Here are some best practices that you can implement today on your Shopify website.

1. Images

Making sure that images on your Shopify websites are responsive is important for a smoothly running and fast website load time. It also helps us avoid layout shifts on web pages which can negatively affect user experience.

This also includes icons, when displaying icons on your website you should preferably use them in SVG format. Which is a format for vector graphics, enabling us to display icons at any scale without image distortion. Something which raster images like JPG and PNG cannot do.

Unfortunately, not all images can be in SVG format especially if your initial picture was in raster format. The solution is to use Shopify’s liquid template language image_url and image_tag filters.

image_url is how we generate images using Shopify’s image API which are sent from Shopify’s CDN. Using it we can resize, crop, add padding and generate different file formats.

Older browsers display images differently from modern browsers which is where image_url comes in handy. It will automatically generate the right size and format depending on the client’s browser and at the same time load those images in the CDN offering a better load speed. 

Image_tag will generate the HTML <img> tag when given an image URL and the markups needed such as srcset, sizes and much more to display responsive images on all devices.

Here’s a plain example of using image_url and image_tag in liquid template language:

{% assign image_url = 'Assigning_Your_Image_Name.jpg' | image_url: 'medium' %}

{{ image_url | image_tag: alt: 'Image alt text goes here' }}

And here’s the resulting <img> tag from the query:

<img src="//" alt="Image alt text">

2. Pricing

Pricing can be displayed in many ways on a Shopify website, with or without decimals and even using HTML superscripts for dollar cents.

This makes it difficult for screen readers to make sense of all the different ways pricing is displayed on Shopify sites. Especially if different HTML tags are used for displaying a single price such as the case with <sup> for superscripts.

One way we can solve that is by simply hiding the price value from the user in a second <span> which screen readers will read. While the first <span> is shown visually to the user but hidden from screen readers.

Here’s an example using HTML <sup> tag for displaying superscript:

<span id="productPrice">
	<span aria-hidden="true">199<sup>99</sup></span>
	<span class="visually-hidden">$199.99</span>

By doing so you can display the price in any way you like, as long the first span is hidden from screen readers using aria-hidden=true.

3. Forms

Forms are widely used across Shopify sites, for email subscriptions, comment sections, product reviews and at checkouts. Adding form errors is a great way to make your website more accessible and ADA compliant. 

One easy way to do that is by using Shopify’s liquid template form.errors to check for validation issues with forms and display an error message.

Here’s an example with an email input field:

    <title>Email Form with Liquid Errors</title>
    <h1>Contact Us</h1>
    <p>Please fill out the form below to get in touch.</p>

    <form action="/contact" method="post">
        <label for="email">Email:</label>
        <input type="email" id="email"
name="contact[email]" value="{{ }}" required>

        <-- Display Form Error -->
        {% if form.errors %}
            <ul style="color: red;">
                {% for error in form.errors %}
                    <li>{{ error.message }}</li>
                {% endfor %}
        {% endif %}

        <input type="submit" value="Submit">


Having an ADA compliant Shopify website is more important than ever today, Shopify doesn’t offer much assistance in making your website accessible and delegates the matter to the website owner. This puts your organization at risk of losing thousands in lawsuits and lost revenue from customers with accessibility needs.  Need help auditing your Shopify store? Let our accessibility engineers help you. Write to us at or reach out to us by filling out our contact form

Using single sign on or password managers for sites that don’t allow SSO is a common practice to make account sign up or logins faster. You don’t have to use a screen reader when filling out forms to know how difficult it can get when it comes to the password fields. As someone with cognitive impairments, I often struggle with remembering all the requirements to fulfill a password strength meter. What’s worse – the placeholders disappear as soon as you begin typing. 

The non-inclusivity of password requirements is what fueled this article today. 

We do witness more single password inputs in today’s design trends, however there needs to be a mechanism to confirm the intended password is typed correctly. Show/Hide buttons address this gap, usually designed as an eye icon, but sometimes the words “Show” and “Hide” are also used. The show button is not only a blessing for users like myself but also benefits users with mobility impairments, seniors, and users of assistive technology.  

How to code the show/hide button can be a contentious topic in accessibility circles

During my auditing work, I’ve come across the use of Disclosure widgets and Toggle Switches. I don’t believe either method is wrong but comes down to a matter of preference for users of assistive technology.  

A Disclosure button will cause AT to announce “button show password expanded/collapsed”. If coded as a Switch the nature of the announcement will change to “button show password on/off.” 

Note: Older implementations of switches may have been announced as checkboxes. First reported in 2020, there was an NVDA issue that caused it to announce a switch as a checkbox. This was due to lack of support to differentiate the aria-checked attribute between role=”checkbox” and role=”switch”. This is now fixed. 

Simple Password Toggle Design Pattern 

The toggle button can be as simple as using the text “Show” and “Hide”. We see a lot of <div> elements being used for switches. While it is not wrong, and at the expense of sounding like a broken record I insist on using the native HTML <button> element. It will automatically receive focus and remain in the DOM tab order, avoiding the need of a tabindex=”0” global attribute keeping your code clean.

The aria-checked attribute is required when using role=”switch” and the values are “True” or “False”. These values need to be updated via Javascript when turned On or Off. 

The Space and Enter key should activate the switch. If using a native <button> element this will be taken care of via HTML automatically. 


<button id=”show-password” type=”button” role=”switch” aria-checked=”false”> 

<span> Show Password</span><span>Hide Password</span>

Password Instructions Design Pattern

We can start to get fancy by adding password instructions required to create an account. Undoubtedly, this pattern is more user friendly and helps all users meet the requirements. 

How do we make this accessible for assistive technology? 

  1. list our password requirements somewhere on around the form field for all users to access
  2. Assign an id to the text e.g. “instructions” 
  3. Use aria-describedby = “instructions” on the input. This will allow AT to announce them when the users reach the password input field. 
  4. Write password messages e.g. “Show Password” “Hide Password” and set an id 
  5. Apply a live region aria-live=”polite” to the password message id. When the text updates the state changes and the user is informed. The Polite attribute ensures that the user is not interrupted while typing. 
  6. If icons are informative, use aria-label as their accessible names, and aria-describedby to connect them to the “instructions”. The icons could also be marked decorative as there is enough information conveyed via aria-describedby

Password Instructions with Icon Design Pattern

Using the eye icon is popular with today’s design trends, and it follows the same coding pattern as using Show/Hide text with the exception of using alt text for the icon. The visible instructions can be placed inline to make use of the real estate on the page. 

Optionally, the instructions can be completely hidden for visual users through the visually-hidden or sr-only CSS classes. But that won’t make it inclusive would it? If the instructions are important enough for one group of users, everyone should be able to access them. 



<p id="instructions">Password: Must be at least 8 characters. Must have at least 1 number. Must have at least 1 uppercase letter. Must have at least 1 special character.</p> 

<p aria-live="polite" id="password-message" >Hide password.</p> 

<div class="input-with-button"> 

<button id="show-password" type="button" role="switch" aria-checked="false"> 

<img class=" show-icon" src="icon.png" alt="Show password"> 


<label for="password">Password</label> 

<input aria-required="true" type="password" aria-describedby="instructions" > 



We hope that helps you build inclusive components accessible for all your users. If you need help with accessibility design reviews, our engineers review the code on your existing components and perform accessibility design reviews in Figma with annotations on new component designs. Reach out to us at Happy coding!

Automated accessibility testing utilizes software to scan websites and applications for accessibility violations against WCAG guidelines. While they don’t cover all the specified standards, software covers up to 20-25% of them. This is better than 0. Automated testing is a great first step in identifying and fixing the low-hanging fruit, and those same series of steps can be applied to reporting to complete the cycle.

Web Accessibility Automation

Automation is a trend that shows no sign of slowing down; leveraging automation technology instead of human capital is changing the business landscape like never before. Saving businesses millions and lowering overhead expenses of running an online business.

Web accessibility testing is easier than ever with automation tools, such as LERA. There are countless benefits of automating your web accessibility testing.

Some of which are:

Let’s have a look at the benefits of automating your web accessibility testing and reporting. And how they can leave a positive impact on your business processes in the long run.

Web Accessibility Testing

Manual Testing or Automated Accessibility Testing?

Web accessibility testing can be divided into two groups: manual and automated.

Manually looking for accessibility violations on each page of your website takes a lot of time and money out of your pocket.

Instead of asking manual auditors to test your website every year giving you late feedback, using automation tools gives you near-real-time feedback on changes made on your website pages. And doing so on a consistent basis enables you to catch accessibility issues early in the development process.

This makes the whole testing process consistent across all your website pages, which translates into a consistent user experience for users with disabilities which is another key benefit. Automation also makes it easier for your development team to debug and fix accessibility issues.

Web Accessibility Crawl Scan

There are multiple ways you can scan your website for accessibility issues, one way is to run a crawl scan. Which starts by scanning a base URL, it then finds links leading to other webpages, scans them and so on and so forth until the whole website has been scanned for accessibility violations.

Running an automated web accessibility test is a great way to analyze parts of your websites that you probably had no idea existed. You can run them as much as you want and whenever you want.

What if a crawler detects no issues on your website, does that mean you don’t have any? Not necessarily, crawlers are a great way to find non-ambiguous issues on your web pages, this is not the case with ambiguous issues.

Some accessibility deficiencies will require a manual review from an auditor to verify. One such example is alternate text for images. It’s easy to run an automated scan and test whether an image has an alternate text or not, but how do you validate if the alternate text is appropriate? This can only be verified manually.

Talk to an Accessibility Auditor for help with manual code review of your web application.

Web Accessibility Reporting

Generating accessibility reports is often ignored or not given enough attention, yet it’s a crucial part of web accessibility. With automation tools, accessibility reports can be generated as often as you want depending on your business needs. Scheduling automatic reports helps keep accessibility top of mind for your whole team.

Legal And Compliance

It helps legal and compliance teams monitor risk, consent decree requirements and prevent legal actions against your business. It also helps them make sure that your organization respects accessibility compliance standards, the most common ones being WCAG 2.0 Level A/AA and WCAG 2.1 Level A/AA.


Accessibility reports are useful for development teams as well, more often than not developers don’t think much about accessibility and are unfamiliar with WCAG rules. These reports can be used by developers to prioritize resources and focus their development efforts into solving high impacts issues first. It also helps in pinpointing where exactly these issues are occurring, and what proactive measures they can take to avoid them in the future.


For leadership, accessibility reports and dashboards that focus on summarization are a great way to manage and have a birds eye view of an organization’s efforts towards accessibility.

Some of the default information that we track at AdvancedBytez are:

Contact Us Today to learn more about Custom Accessibility Reporting Dashboards!


Automating your web accessibility testing and reporting enables you to test your website as a whole, you get quick feedback and it’s easily scalable. Fixing accessibility issues at later stages of development is difficult. Running these tests early in the design and development process will save you time and money.

Generating automated accessibility reports enables your legal and compliance team to assess, monitor, and ensure that your organization respects accessibility standards. It helps your development team understand, troubleshoot and prioritize their development resources towards resolving urgent accessibility issues. And take proactive actions to avoid them in the future. It also helps leadership manage and stay updated on the organization’s accessibility compliance level.

Whether your development team is looking to QA bugs or convince your leadership that you are on the right track, we have an end-to-end solution to meet your needs – Manual, Automation and Managed Accessibility Services.

Talk to an Accessibility Engineer today to explore your needs.

Code linters are automated tools that evaluate source code for errors, bugs, and other issues. They identify common mistakes and coding styles that do not adhere to best practices, helping to identify and fix problems in your code before it is compiled.

An accessibility linter is a software program that analyzes the source code of a website or application and checks it against particular criteria, usually related to accessibility, to identify issues and potential problems.

Accessibility testing is a critical part of any software development lifecycle and the use of accessibility linters can be an invaluable tool to help catch and fix accessibility bugs before they become a problem. 

Benefits of Using Accessibility Linters 

Using accessibility linters is a great way to detect and fix accessibility bugs in source code before projects are compiled and deployed. Most linters are free, making them a low barrier of entry for developers to start using. They are also simple to use, and will integrate with your IDE and start finding and helping you fix bugs. 

The benefits of using accessibility linters include

Reduction of errors in production –

Using an accessibility linter is also a great way to prevent accessibility issues before they become a problem. By integrating an accessibility linter into the automated pull-request process, developers can ensure that all code is checked for accessibility issues before it is merged into the main branch. This helps to ensure that any code that is merged into the main branch is as accessible as possible.

Increased knowledge of accessible code –

In addition to helping prevent accessibility issues from becoming a problem, accessibility linters can also help developers learn how to write accessible code. By providing references to help developers better understand the accessibility issue, they can learn how to avoid making the same mistake in the future. This can be especially helpful for developers who are new to coding or are unfamiliar with accessibility.

Consistency of code –

Increased readability, maintainability and consistency of the production of code is possible by using the strict linting framework.

Consistency of style –

Linters ensure fewer debates concerning code style during code reviews.

Objective assessments –

Linters can provide an objective and measurable evaluation of code quality, which can help to prevent debates regarding code quality from descending into subjectivity.

As the overall quality of code improves this will reduce the level of effort required for manual accessibility testing. 

Popular Accessibility Linters 

Popular Accessibility Linters are open source tools used to detect and fix accessibility bugs in source code. These linters are typically integrated into IDEs and can also be used in automated processes such as pull requests and continuous integration and delivery (CI/CD). 

Some popular accessibility linters include ESLint, AccessLint, and Axe Accessibility Linter.

1. ESLint

ESLint is one of the most popular JavaScript linter which has a wide selection of library rules to help developers detect and fix common accessibility issues. It can be used in both Node.js and browser-based projects. 

There are different accessibility add-ons for each framework allowing you flexibility. ESLint supports React, Angular, Vue and JSX.

2. AccessLint

AccessLint is a linter that finds accessibility issues in your pull requests available as an app for GitHub. You can use AccessLint when a pull request is made, reviewing the changes and comments for accessibility issues, before code is manually reviewed. 

3. Axe

Axe Accessibility Linters is another popular accessibility linter. It is a free and open source automated testing library that can be used to detect and report on accessibility issues on 40 rules based on the axe-core rule engine. It is available for both web and mobile applications and can be integrated into IDEs, pull requests, and CI/CD pipelines.

The Axe linter supports linting for React, Vue, Angular, Markdown and HTML and is available for both Github and VS Code.

By integrating these linters into IDEs and automated processes, developers can ensure that their code is as accessible as possible.

How to Use Accessibility Linters?

These tools can be integrated with development environments and integrated into the automated pull-request process to detect and fix accessibility bugs before the project is compiled and deployed. 

Often, these tools can even provide references to help developers better understand the accessibility issue and prevent them from making the same mistake in the future. Accessibility linters can also provide valuable insight.

For example, some tools will detect and report on which accessibility criteria have been met and which have not. This can be a valuable resource for developers to identify areas of improvement or potential issues that may have otherwise gone unnoticed. 

They will then report any errors they find, and suggest ways to fix them. For example, if a linter finds missing alt text, it will suggest adding the appropriate alt text. Linters can also be used to detect potential keyboard traps, and flag any missing labels or form elements. Linters can be used to scan code in a variety of languages, such as HTML, CSS, JavaScript, and more.

Considerations When Using Accessibility Linters 

When using accessibility linters, there are a few things to consider. 

To get started with accessibility linters, first you need to choose which linter is best for your project. Once you’ve selected a linter, you can install it into your IDE and/or automated PR process. Once the linter is installed, you can start running it against your source code. 

The linter will then scan your code and report any accessibility bugs that it finds. Depending on the linter, it may also automatically fix some of the bugs. When using accessibility linters, it’s important to remember that they may not be able to detect all accessibility bugs. After all, automation only catches up to 25% of the bugs.


Accessibility linters are a powerful tool in the fight against accessibility bugs, and they offer a low barrier of entry for developers to detect and fix these bugs before they can impact users. However, linters can be limited in scope and not detect all accessibility bugs, so it is important to supplement them with other automated tools. Browser extensions are a great way to supplement linters, as they are usually accessible, simple to use, and can detect and reference a third of the WCAG Success Criteria.

With the right linter, you can start making your development process more accessible and make your applications more usable for all users.

Accessibility testing is crucial given the abundance of cross-platform mobile apps on the market. Testing professionals must make sure that mobile apps are well-tested from all user viewpoints because platforms, browsers, software, and tools are always improving. 

What exactly do we mean by evaluating mobile apps for accessibility?

A website or app’s usability for all internet users, including those with special needs or disabilities, is evaluated through software testing. Accessibility testing ensures that fixed conditions do not prevent someone with a disability from using online resources like everyone else. Usability testing is generally thought of as being within this category.

By testing mobile apps with actual users, usability testing ensures that users get the best possible experience. It assesses how user-friendly the mobile application is to navigate through and how well it matches user experience. 

Mobile App Accessibility: What does it mean?

A mobile app that is said to be accessible can be utilized by someone who has a disability. It’s possible that someone using software that reads web pages and apps aloud may suffer from vision impairment or have a reading disability. Or a person who watches videos with captions on because they are unable to hear well. For the more than 1 billion people with disabilities globally, it is crucial to develop mobile applications or mobile websites for smartphones, tablets, and wearables that they can use without any barriers. This is known as mobile app accessibility.

All of these users can use mobile websites and apps when they are created properly. Mobile technology, however, is frequently not created with accessibility best practices in mind. How come? Often, it is due to lack of awareness. Nobody wants to exclude any group from using an application intentionally. The best practices for mobile accessibility were taught to many developers without including the need for accessibility. When this is the case people with impairments are impacted. They also want to utilize online banking, buy, read the news, and communicate with friends and family online.

Accessible applications can make a big difference.  For example, engagement can be increased by doing something as easy as adding captions. Over the past eight years, captioning has improved video engagement by over 500%. And today we consume the most amount of media through our phones be it social media, OTT platforms or YouTube. The market for apps that make use of these forms of assistive technology will expand as more people continue to consume content over mobile devices. These functions and apps are available on even entry-level smartphones for those with disabilities.

Mobile App Accessibility: Why is it needed?

Millions of people use the internet every day, and many of them are active users who depend on the availability of internet powered applications on their fingertips. Literally. We all use our mobile devices for a variety of things made possible on the go. This calls for the development of apps that are quick and simple to use in remote locations and networks with poor connectivity. The inclusion of the broadest user base is a goal of designing accessible mobile and online apps, in addition to physical impairment.

A physical or mental condition that restricts a person’s movements, senses, or activities is referred to as a disability.  A disability can be cognitive, developmental, intellectual, mental, physical, sensory or even a combination of these types of impairments. Some users who require accessibility include:

Mobile App Accessibility Testing: Why It’s Important?

One of the abilities a capable mobile app tester should have is the ability to assess a mobile app’s accessibility. One reason for undertaking accessibility testing for mobile apps is to ensure that an application is usable by everyone. 

In a variety of circumstances, including legal, mandated, and inclusion, digital accessibility is becoming more and more crucial. Everyone, not just those with restrictions, benefits from it and it is the right thing to do.

The Checklist to Follow while Mobile App Accessibility Testing

1. General Instructions:

2. Touch Targets and Placement

Mobile devices’ increased resolution enables numerous interactive elements to coexist on a small screen. These components must be sufficiently large and spaced apart for users to reach them by touch. Especially when users need to use the mobile with quick gestures, the tap targets in the app should be large enough for user to interact with accuracy and confidence. The following are recommended touch target sizes:

Regardless of how the device is held, interactive elements in mobile apps should be placed where they are simple to access. Developers should think about how a button location that is simple for certain users might be challenging for others. Use with the left or right hand, for instance, or how far the thumb can move. The following are ideas for where to set touch targets:

3. Color Choice and Color Contrast

Verify the foreground-to-background color contrast ratio. To check if the ratio is more than 4.5:1 for normal text and 3:1 for large text and icons, you can use a tool like a Color contrast analyzer for iOS or the iOS Accessibility Inspector and Accessibility Scanner by Google for Android.  A low color contrast ratio makes the material harder to read. Avoid color combos like red and green when choosing a color as they may be challenging for those who are color-blind.

4. Different Designs for Different Screen Sizes

Mobile devices are distinguished by their smaller screens and unique aspect ratios. That needs to be considered by designers when creating native apps. The amount of information that can be viewed on a tiny screen is constrained, especially when the user needs to zoom in on the content owing to eyesight problems. The following ideas will assist users in getting the most out of small screens:

5. Consistent Navigation and Layouts 

Consistency in content, layout, and navigation are all important components of user experience. Those with weaker motor skills could have trouble using a mouse or keyboard. They frequently avoid using web browsers in favor of mobile apps. Users of all kinds can benefit from mobile apps with assisted navigation that leads them from one option to the next.

Additionally, layouts are a crucial factor in determining whether mobile apps are accessible to all types of users. 

6. Simple Data Entry Methods

Another distinguishing feature of mobile devices and native applications is multi-modal data entry, which allows users to enter data using a variety of methods, such as speech, a wireless keyboard, and an on-screen keyboard.

Other data entry methods can take the place of text entry, which can be time-consuming and difficult for some users. Simply integrate select menus, radio buttons, and checkboxes, or have information like date, time, and location auto-fill to lessen the amount of text entry needed. Since typing takes time, offering alternatives like data exchange between apps, autofill, or even dictation enhances the whole app experience and prevents mistakes.

What to use: Mobile Accessibility Testing Tools

There are several tools available to test for mobile accessibility on both Android and iOS platforms. Here are a few options:


  1. Accessibility Inspector: Accessibility Inspector is a tool that shows all the actions that can be performed by selecting and interacting with the elements on the screen.
  2. VoiceOver: A built-in screen reader for iOS that provides spoken descriptions of on-screen content and allows users to navigate through apps using gestures and voice commands.
  3. A11yTools: A suite of web accessibility testing tools coupled into an extension built by Paul J Adams, includes a mobile scanner for both Android and iOS devices. It checks for issues with color contrast, font size, and other accessibility features.
  4. Axe DevTools Mobile: A mobile version of the popular Axe accessibility testing tool by Deque. It is available as a free app on both Android and iOS platforms and provides detailed reports on accessibility issues within mobile apps.
  5. WAVE Web Accessibility Tool: This tool allows you to test the accessibility of mobile websites on both Android and iOS platforms. It checks for common issues like missing alt text and provides guidance on how to fix any problems found.
  6. Color Contrast Analyzer: A tool that allows you to test the color contrast of elements within your mobile app or website. It is available as a free app for both Android and iOS platforms.


  1. TalkBack: A built-in screen reader for Android that provides similar functionality to VoiceOver. This is included by default in the Android Accessibility Suite. 
  2. Accessibility Scanner: A free Android app from Google that checks the accessibility of other Android apps on your device. It offers suggestions for improvements and provides links to relevant accessibility settings.
  3. Android Accessibility Suite: Android Accessibility Suite is a collection of accessibility services that help you use your Android device eyes-free or with a switch device.

Android Accessibility Suite includes 

It’s important to note that automated testing tools can only catch a portion of accessibility issues, and manual testing is also necessary to ensure that your mobile app or website is fully accessible to all users.

Ending Note:

Traditionally, web accessibility has been neglected. In recent times we have seen an uptick in the importance of removing barriers to the web due to rising lawsuits and inclusion movements. However mobile app accessibility still has a way to go in terms of its importance. Spending money and time upfront on accessibility is far more cost and time effective than resolving accessibility problems after the application has been launched. A more extensive audience will be exposed to an app with good accessibility than one with bad accessibility. Additionally, it will enhance user experience and hence support a wider user base.

Get in touch with our accessibility auditors to help you evaluate the accessibility of your mobile app today.

Why Should You Automate Web Accessibility Testing?

Simply because manual testing takes time and is costly. Automation saves you time, effort and money. Leveraging automated tools and software is a great way to offload that workload. By automating your web accessibility tests, you will have more time to focus on what matters the most for your business. 

5 Great Benefits Of Automated Web Accessibility:

What Is Axe-Core?

Axe-core is the world’s leading automated accessibility testing engine, it’s simple to use, lightweight and highly configurable.

It is used for checking accessibility violations on websites and HTML-based user interfaces. Axe-core can find 57% of WCAG issues automatically. It will also return elements as ‘incomplete’ where Axe-core is not certain, for further manual review. Axe-core needs a browser to run, which is why it’s often used with automation tools like Selenium.

The Benefits Of Using Axe-Core: 

Axe-core supports the following web browsers:

It supports the following accessibility standards:

What Is Selenium?

Selenium is an open-source user interface automation testing suite for web applications. Selenium can automate all modern web browsers and it runs on all major operating systems. Selenium scripts can be written in Python, Java, C# and more.

Three Main components for the Selenium suite:

Selenium WebDriver

The Selenium WebDriver is a tool that allows developers to automate web browsers. It’s mainly used for automating testing of web applications. You can create scripts that automate tasks in a web browser, such as clicking buttons and links, filling forms and verifying that certain elements are present on a page. It allows you to quickly and easily test the functionality of a website. Selenium also gives you the option of either running a web browser headless or non-headless. The key difference being that a headless browser runs in the background without a graphical user interface (GUI) and is usually faster. And a non-headless browser runs as a real browser with a graphical user interface.

Selenium IDE

The Selenium IDE is a browser extension for Google Chrome and Firefox. It’s beginner friendly and works out of the box. With its simple UI, you can easily automate website testing in a couple of clicks. It has extensive control flow commands like if, while and times. It can also be extended with plugins for more commands and integration with third-party services. 

Selenium Grid

The Selenium Grid is used to run multiple instances of WebDriver scripts on remote machines. This is useful if you need more processing power, it’s also a great way to test on different browser and platform versions.

Setting Up Environment to run an Automated Web Accessibility Audit

Let’s see how you can set up your environment to run an automated web accessibility test using Axe-core, Selenium and Chrome Driver in Java:

1. You should already have Java JDK installed and downloaded ChromeDriver, as we will be using Chrome as our web browser to test web accessibility.

2. We will be using Maven as our project manager, so you should already have created a Maven project.

3. Now let’s open the pom.xml file inside the Maven project you’ve just created and add the following dependencies:



4. Now run nvm install inside your Maven project directory to install the dependencies.

5. Now you should be able to run Axe-core and Selenium inside your Maven project. 

Let’s run a test script! 

Running A Basic Test In Java

Here’s a simple script written in Java that uses Axe core, Selenium and Chrome Driver.

import org.openqa.selenium.WebDriver;

import com.deque.axe.AXE;
import org.json.JSONArray;
import org.json.JSONObject;

public class AccessibilityTest {
public static void main(String[] args) {
    // Set up Chrome driver
    System.setProperty("", "/path/to/chromedriver");
    WebDriver driver = new ChromeDriver();

    // Open the page to test

    // Run Axe-Core
    JSONObject response = new AXE.Builder(driver, "axe.min.js").analyze();

    // Print the results
    JSONArray violations = response.getJSONArray("violations");
    if (violations.length() > 0) {
        System.out.println("Accessibility issues found:");
        for (int i = 0; i < violations.length(); i++) {
            JSONObject violation = violations.getJSONObject(i);
    } else {
        System.out.println("No accessibility issues found.");

    // Close the driver

This is how the script works:

1. This script launches a Chrome Driver instance.

2. It loads the website we want to test.

3. It then runs Axe-core and injects axe.min.js into the webpage.

4. Finally, it outputs the results to the console.


Running automated web accessibility tests is easier than ever with Axe core and Selenium. Manual testing takes time, effort and money. Implementing an automated solution is the best thing you do for the future of your business.

Overall, automating web accessibility tests will improve the accessibility of your website and make it more inclusive for users with disabilities.

ARIA stands for Accessible Rich Internet Application. ARIA is a collection of attributes and roles that act as add-ons to complement HTML for complex web applications, particularly those built using Javascript. 

It helps make the applications accessible for assistive technology that is otherwise not possible with the use of native HTML alone. Some examples are dynamic content and user controls like error messages, tool tips, live regions. 

Becoming ever so popular with web developers looking to make applications accessible, ARIA if misused can cause an inaccessible experience for a user. Which is the case today, as we see code stuffed with ARIA. It helps understanding the WAI-ARIA rules, which are not easy to decipher so we have tried to explain it in simple language. 

Let’s take a look at the 5 rules of ARIA below with some examples. 

ARIA rule # 1: Don’t use ARIA!

If you can use a native HTML element or attribute instead, then do so.

If you shouldn’t use ARIA, then when can you use it?

If it’s not possible use a native HTML element or attribute because:

Here is one common example of incorrect ARIA usage, I’ve seen:

(I had to mediate an argument between a dev and a tester just last week 🙂)

𝗛𝗲𝗿𝗲 𝗶𝘀 𝘁𝗵𝗲 𝘀𝗮𝗺𝗽𝗹𝗲 𝗰𝗼𝗱𝗲:

<a href=”/” role=”button”> Read more </a>

𝗪𝗵𝘆 𝗶𝘀 𝘁𝗵𝗶𝘀 𝗶𝗻𝗰𝗼𝗿𝗿𝗲𝗰𝘁?

Role = button tells a screen reader it is a button element,

But it doesn’t provide the functionality of a button.

So they tried to “fake” it as a button by using an <a> tag.

𝗧𝗵𝗲 𝗰𝗼𝗿𝗿𝗲𝗰𝘁 𝘄𝗮𝘆:

<button type=”button”>Read more about ARIA </button>


<button> is a native HTML element and is perfectly accessible.

Here is a Link to ARIA cheat sheet. One of the best I’ve seen in the industry and I’d highly advise you to refer to it when in doubt. 

ARIA rule # 2 : Do not change native semantics, unless you really, really, truly have to.

For example: A developer wants to build a heading that’s a tab.

Do not do this:

<𝗵𝟮 𝗿𝗼𝗹𝗲=𝘁𝗮𝗯>heading tab</𝗵𝟮>

Do this:

<div 𝗿𝗼𝗹𝗲=𝘁𝗮𝗯><𝗵𝟮>heading tab</𝗵𝟮></div>

The Role feature: Defines what an element does.

Some roles duplicate the semantic value of HTML5 elements : nav, aside

Others describe the page structure : banner, search, tablist, tab

ARIA attributes don’t affect the web page itself.

They only provide information to screen readers.

Use ARIA wisely.

ARIA rule # 3 : All interactive ARIA controls must be usable with a keyboard.

Native HTML interactive elements are keyboard accessible.

A custom control, needs to receive focus and the user be able to activate it with:

Enter (Windows) or Return (Mac) keys, and Space key

What this means in simple terms is:

A custom control like a button for example, must work with the keyboard as a native button element would.

𝗖𝗼𝗺𝗺𝗼𝗻 𝗺𝗶𝘀𝘁𝗮𝗸𝗲 1

Buttons created using <span> or <div>

𝗛𝗼𝘄 𝘁𝗼 𝗳𝗶𝘅:

Create button using <button> or <input>

Common mistake 2:

Links created using <span> or <div>

How to fix:

Create links using <a>

Common mistake 3:

tabindex = “-1”

How to fix:

tabindex = “0”

𝗤𝘂𝗶𝗰𝗸 𝗻𝗼𝘁𝗲 𝗮𝗯𝗼𝘂𝘁 𝘁𝗮𝗯𝗶𝗻𝗱𝗲𝘅:

If you create an interactive element yourself, use tabindex to make it focusable

tabindex = “0” adds focus

tabindex = “-1” removes it from the tab order

screenshot of code using div with tabindex=0 to make an element focusable.

ARIA rule # 4: Don’t use role = “presentation” or aria-hidden = “true” on a focusable element.

Let’s understand the attributes first.

role=”presentation ” or role =”none” removes the ARIA semantics from the accessibility tree.

When is it used?

When an element is used for presentation only and does not have accessibility purposes.

aria-hidden is also used to hide non-interactive content from a screen reader.

When is it used?

When you want to hide elements like:

Decorative items like icons or images that have no meaning/context

Collapsed items such as menus

Duplicate content

When are the attributes used?

aria-hidden =”true” will remove the entire element from the accessibility tree.

role=”presentation ” and role=”none” will remove the meaning of the element but still expose its content to a screen reader.

ARIA Rule # 5: All interactive elements must have an accessible name.

Accessible names help assistive technology users understand how to interact with an element.

Let’s look at what interactive elements are. 

Interactive elements are:

An accessible name can be generated from a native HTML element’s content:

<button> uses the content between the opening and closing tags as its accessible name </button>

The <label> in a form will pull the content associated with its input as its accessible name.

If none of these options are available, use aria-label to define the accessible name of the element:

aria-label – text that labels the element is not visible.

aria-labelledby – visible text that labels the element.

aria-describedby – additional instructions for the input to users.


Now we understand what ARIA is and how it is used. We’ve also seen the benefits of using native HTML to make applications accessible out-of-the-box. 

My key takeaway to prevent “excessive” ARIA use is by remembering one thing:

You don’t always need to provide instructions to screen readers only.

If the instructions are important enough, provide them to every user.

That’s what makes the best user experience.

Accessible products don’t just happen. They start well before development, at the planning and design stages. It’s essential to start thinking about accessibility early and ensure you’re testing for it at all stages of the design and development lifecycle, including wireframes.

In this post, we’re focusing on steps to ensure that wireframe designs for new websites or apps are created with accessibility in mind. Make sure your team is trained to review wireframes thoroughly and that developers understand

How to translate clear wireframe designs into accessible HTML CSS content.

Cost-effective design

A good incentive when reminding designers to incorporate and check for accessible features is understanding the cost benefits. “Shifting left” to review and address accessibility issues early reduces the number of changes and fixes required down the road.

Annotations and explanations

Include annotations to explain the intent of design details. These can be provided as textual notes or as graphical flow charts or images. Be sure to explain the design intent so developers can decide how to create features in a way that is accessible for all users. For example, use annotations to describe the preferred appearance of the hover and focus states for buttons, so keyboard users will have a visual indication of the currently focused control.

Clear labels

When creating label names in the wireframe, think about the purpose and function of controls and links for the user, not the developer. Ensure that label names are logical and intuitive. Make sure they’re also unique on each form, for both usability and easier searches.

Labels should use plain language, avoid uncommon slang, acronyms, or terminology, and be simple and easy to understand for all users. For example, if an assistive technology user hears a screen reader describe a label or control as “previous” or “current,” this is not as helpful as clarifying “Previous Employer” or “Current Employer.” Similarly, links should describe briefly what the link will lead to or open, rather than just indicating, “Click here.”

Heading structure

Assistive devices like screen readers use tagged headings and subheadings to navigate web pages and sections of digital content. This helps individuals with low vision or those using assistive devices to search or scan content, by choosing to hear all the headings on the page.

Nested heading structure is an essential feature for content accessibility and organization. The wireframe designer should include a clear list and description of all headings and subheadings. Without documentation, a developer likely will not be able to determine the structure. Take time to double-check that the heading structure is consistent and logical, with subheadings nested in the appropriate order. 

Focus order

Focus order – clarifying the order that elements on a page receive keyboard focus – is essential information for keyboard accessibility. Wireframes should indicate the focus order information clearly and specify the visible focus state.

Document hidden wayfinding cues

Users of screen readers benefit from wayfinding cues that can help them navigate a webpage. For example, including instructions for when to include “Bypass block links” allows screen reader users to skip over repetitive and unnecessary blocks of content rather than tabbing through unnecessary information. Refer to WCAG 2.4.1 for more information.

Describe these repetitive blocks in the wireframe so that developers can include these wayfinding cues. This helps ensure that users can tab once into a content area, but then skip to the next content area if they choose.

Testing wireframes

It’s challenging to do usability testing on a non-existing system, particularly with people with different types of disabilities (for example, dexterity, visual, hearing, cognitive). If it’s early in the design stage, try to find a similar tool or task on a functioning system and test its accessibility with users with disabilities.

If issues arise that are identified as “accessibility” bugs, ensure that these are prioritized and included with the rest of the workload and not as lower priorities that can be addressed after “core” features.

Taking the time to design clear wireframes and consider the accessibility for all design elements helps ensure that the wireframe is complete and usable for developers. Ideally, tested and approved wireframe designs can then be used as templates to help create accessible products with similar branding.

How AdvancedBytez can help

Beginning design review and testing as early as possible can solve or prevent up to 67% of potential bugs. This number is frequently referenced in the accessibility industry, and refers to a Deque case study

The typical steps to review wireframe designs include (1) a site map design review, (2) a review of the layout with no color, followed by (3) a review of the layout with color. 

1. Site map design review 

Following a Shift-Left approach, AdvancedBytez encourages our clients to begin their accessibility design review at the site map stage. 

Technically, the site map is a hierarchical listing of a website’s pages. Practically, it should act as an ongoing guide for developers for each project, providing details about each page’s purpose, content, functionality, and flow.

AdvancedBytez can review your sitemap design and help ensure that it includes all items needed for clear and accessible utility navigation, main page and secondary pages, and footer navigation. We can provide recommendations for clear guidelines, logical page content, and suggestions for combining or eliminating pages. 

A sitemap design review will help ensure a clear, concise, and accessible flow to help your developers create a user-friendly, accessible website.

2. Review of wireframe layout with no color

Also referred to as a low-fidelity wireframe review, AdvancedBytez tests low-fidelity wireframes (the foundation of visual designs but without colors or images) by focusing on accessible placement of assets and content for each template. 

screenshots of Low fidelity wireframe without color indicating displaying page layout and elements.

Working with designers and design teams, elements such as buttons and interface widgets are tested with a screen reader.   

3. Review of wireframe layout with color

High-fidelity wireframe testing involves reviewing a more complete representation of the end product. 

After any design changes are made based on earlier site maps and low-fidelity review feedback, we then test color contrast, font usage, and complex interactions. In this third stage, we review usability and provide results of user interaction testing with the graphics, spacing, and user interface (UI).

screenshot of hi fidelity wireframe with colors for all the elements including background and font.

Sitemaps and wireframes take time to create because they’re essential tools in helping developers create usable and accessible websites and apps. 

Make sure your team is trained to review wireframes thoroughly and create clear and complete guidelines for your developers. Consider having AdvancedBytez test these tools–we can help ensure developers have everything they need to translate design wireframes into accessible HTML CSS and user-friendly content.

Skip to content