<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>inklusivo</title>
  <subtitle>become and stay inclusive</subtitle>
  <link href="https://inklusivo.nl/feed.xml" rel="self" />
  <link href="https://inklusivo.nl/" />
  <updated>2026-01-23T09:37:04Z</updated>
  <id>https://inklusivo.nl/</id>
  <author>
    <name>inklusivo</name>
  </author>
  <entry>
    <title></title>
    <link href="https://inklusivo.nl/" />
    <updated>2026-01-23T09:37:04Z</updated>
    <id>https://inklusivo.nl/</id>
    <content type="html"></content>
  </entry>
  <entry>
    <title>A glossary of web accessibility terms</title>
    <link href="https://inklusivo.nl/glossary/" />
    <updated>2026-01-23T09:37:04Z</updated>
    <id>https://inklusivo.nl/glossary/</id>
    <content type="html">&lt;p&gt;Web accessibility has lots of specific terms, abbreviations and other jargon. This glossary clarifies some of them, and more. Further resources are added where available.&lt;/p&gt;
&lt;p&gt;This page is very much a &amp;quot;living document&amp;quot;; it&#39;s intended to be updated and improved constantly. Your questions and contributions are much appreciated!&lt;br&gt;
As it&#39;s due to change, bookmarking is probably more valuable than printing. You could also save some trees that way.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Blog</title>
    <link href="https://inklusivo.nl/blog/" />
    <updated>2026-01-23T09:37:04Z</updated>
    <id>https://inklusivo.nl/blog/</id>
    <content type="html">&lt;main id=&quot;main&quot;&gt;
  &lt;article&gt;
      &lt;h1&gt;Blog&lt;/h1&gt;
      &lt;ul&gt;&lt;li&gt;&lt;article aria-labelledby=&quot;the-scaled-accessibility-model-(sam)&quot;&gt;
          &lt;h2 id=&quot;the-scaled-accessibility-model-(sam)&quot;&gt;&lt;a href=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/&quot;&gt;The Scaled Accessibility Model (SAM)&lt;/a&gt;&lt;/h2&gt;          
          &lt;p&gt;This model defines what needs to be in place to create accessible and inclusive products. It does not matter whether you&amp;#39;re aiming for mere compliance or something else entirely. It is a framework for the required processes and resources.&lt;/p&gt;
        &lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article aria-labelledby=&quot;the-anatomy-of-an-accessible-text-field&quot;&gt;
          &lt;h2 id=&quot;the-anatomy-of-an-accessible-text-field&quot;&gt;&lt;a href=&quot;https://inklusivo.nl/blog/accessible-text-field-anatomy/&quot;&gt;The Anatomy of an Accessible Text Field&lt;/a&gt;&lt;/h2&gt;          
          &lt;p&gt;Forms consist of so many parts that they&amp;#39;re easy to get wrong. Let&amp;#39;s dissect the text field.&lt;/p&gt;
        &lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article aria-labelledby=&quot;how-to-make-your-colour-palette-usable-for-accessibility&quot;&gt;
          &lt;h2 id=&quot;how-to-make-your-colour-palette-usable-for-accessibility&quot;&gt;&lt;a href=&quot;https://inklusivo.nl/blog/make-your-colour-palette-usable-accessibility/&quot;&gt;How to make your colour palette usable for accessibility&lt;/a&gt;&lt;/h2&gt;          
          &lt;p&gt;How to make your colour palette usable for accessibility&lt;/p&gt;
        &lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article aria-labelledby=&quot;qr-codes-and-accessibility&quot;&gt;
          &lt;h2 id=&quot;qr-codes-and-accessibility&quot;&gt;&lt;a href=&quot;https://inklusivo.nl/blog/qr-codes-and-accessibility/&quot;&gt;QR codes and accessibility&lt;/a&gt;&lt;/h2&gt;          
          &lt;p&gt;QR codes and accessibility&lt;/p&gt;
        &lt;/article&gt;&lt;/li&gt;&lt;/ul&gt;
  &lt;/article&gt;
&lt;/main&gt;
</content>
  </entry>
  <entry>
    <title></title>
    <link href="https://inklusivo.nl/social/blog/qr-codes-and-accessibility/" />
    <updated>2026-01-23T09:37:04Z</updated>
    <id>https://inklusivo.nl/social/blog/qr-codes-and-accessibility/</id>
    <content type="html">
&lt;html&gt;
  &lt;head&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://inklusivo.nl/assets/style.css&quot;&gt;
    &lt;style&gt;
      * {
        box-sizing: border-box;
      }

      body {
        background-color: white;
      }

      .social * {
        margin: 0;
        padding: 0;
      }

      .box {
        background-color: whitesmoke;
        color: var(--color-dark);
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        width: 1200px;
        height: 630px;
        padding: 3rem;        
      }

      main {
        display: block;
        background-color: inherit;
        height: 500px;
      }

      .title {
        max-height: 500px;   
      }

      .title span {
        background-color: var(--color-dark);
        color: whitesmoke;
        box-decoration-break: clone;
        padding: .5rem 1rem;   
        line-height: 1.1;
        /* box-shadow: 10px 0 0px 0px #EDC330, -10px 0 0px 0px #EDC330; */
      }

      footer {
        height: 130px;
        display: flex;      
        justify-content: flex-start;  
        align-items: flex-end;
      }

      .logo {        
        height: 3.5rem;
        width: auto;                        
      }

      .tagline {
        font-size: 2.5rem;
        margin-left: 2rem;     
        line-height: normal;
        width: 100%;        
      }
           
      .author {
        display: flex;       
        align-self: flex-end;
        align-items: center;
        flex-direction: column;
        column-gap: 0;
      }

      .avatar {
        display: block;
        height: 120px;
        width: auto;        
        border-radius: 50%;
        margin: 0px auto;
        border: 2px solid var(--color-dark);
      }

      .name {
        font-size: 2.5rem;
        line-height: normal;        
      }
    &lt;/style&gt;
    &lt;script src=&quot;https://inklusivo.nl/assets/fitty.min.js&quot;&gt;&lt;/script&gt;
  &lt;/head&gt;
  &lt;body class=&quot;social&quot;&gt;
    &lt;div class=&quot;box&quot;&gt;
      &lt;main&gt;
        &lt;h2 class=&quot;title&quot; id=&quot;title&quot;&gt;&lt;span&gt;QR codes and accessibility&lt;/span&gt;&lt;/h2&gt;
      &lt;/main&gt;
      &lt;footer&gt;
        &lt;img src=&quot;https://inklusivo.nl/assets/media/inklusivo-logo.svg&quot; alt=&quot;&quot; class=&quot;logo&quot;&gt;
        &lt;span class=&quot;tagline&quot;&gt;inklusivo - become and stay inclusive&lt;/span&gt;
        &lt;div class=&quot;author&quot;&gt;
                     
          &lt;img src=&quot;https://inklusivo.nl/assets/media/erik.jpg&quot; alt=&quot;&quot; class=&quot;avatar&quot;&gt;  
          &lt;span class=&quot;name&quot;&gt;Erik &lt;/span&gt;        
          
        &lt;/div&gt;
      &lt;/footer&gt;
    &lt;/div&gt;
    &lt;script&gt;
      fitty(&#39;#title&#39;, {
        minSize: 108,
        maxSize: 400,
      });
      
    &lt;/script&gt;
  &lt;/body&gt;
&lt;/html&gt;</content>
  </entry>
  <entry>
    <title>The Scaled Accessibility Model (SAM)</title>
    <link href="https://inklusivo.nl/blog/scaled-accessibility-model/" />
    <updated>2026-01-22T00:00:00Z</updated>
    <id>https://inklusivo.nl/blog/scaled-accessibility-model/</id>
    <content type="html">&lt;p&gt;This model defines what needs to be in place to create accessible and inclusive products. It does not matter whether you&#39;re aiming for mere compliance or something else entirely. It is a framework for the required processes and resources.&lt;/p&gt;
&lt;p&gt;This model is how we work at inklusivo. We&#39;ve translated decades of experience to a model that can support different organisations and goals. We don&#39;t like reinventing the wheel.&lt;br&gt;
The Scaled Accessibility Model (SAM) sketches a goal state that can be guiding for creating roadmaps and setting up milestones. It aligns very well with the practice of &lt;a href=&quot;https://en.wikipedia.org/wiki/Backcasting&quot;&gt;backcasting&lt;/a&gt;: &amp;quot;if we want to attain a certain goal, what actions must be taken to get there?&amp;quot;&lt;/p&gt;
&lt;h2 id=&quot;table-of-contents&quot; tabindex=&quot;-1&quot;&gt;Table of Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/#table-of-contents&quot;&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/#the-model&quot;&gt;The model&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/#resources&quot;&gt;Resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/#skills&quot;&gt;Skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/#direction&quot;&gt;Direction&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/#the-role-of-management&quot;&gt;The role of management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-model&quot; tabindex=&quot;-1&quot;&gt;The model&lt;/h2&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/N_EHeWu80f-2408.webp 2408w&quot;&gt;&lt;img src=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/N_EHeWu80f-2408.jpeg&quot; alt=&quot;The Scaled Accessibility Model visualised. Mission and vision come through management. Practitioners are supported by a mandate and requirements from management, resources, goals and community and culture.&quot; width=&quot;2408&quot; height=&quot;1688&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Central to this model are the practitioners. They are the people who create and build. In the context of digital experiences this means people like developers, designers and content writers. It can translate to other (non-digital) practices as well. For practicality, we&#39;ve restricted the scope of this article to focus on the digital.&lt;br&gt;
The practitioners are like the engine of creation. Motivating, directing and facilitating practitioners is at the core of getting results. Modern leadership is &lt;a href=&quot;https://en.wikipedia.org/wiki/Servant_leadership&quot;&gt;servant leadership&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;How do we do this? Our method comes from experience and aligns with the book &lt;a href=&quot;https://openlibrary.org/books/OL24055782M/Drive&quot;&gt;&amp;quot;Drive: The Surprising Truth About What Motivates Us&amp;quot;&lt;/a&gt; by Daniel H. Pink. This bestseller explains there are 3 factors that motivate people: autonomy, mastery and purpose. SAM was not invented to copy this practice. It comes from experience and insights, but does align perfectly.&lt;/p&gt;
&lt;p&gt;The following sections cover the various parts of this model:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;resources&lt;/strong&gt; that practitioners depend on&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;skills&lt;/strong&gt; that practitioners depend on&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;direction&lt;/strong&gt; that practitioners get from a mission/vision, from requirements and mandate from management, and from peers through community and culture&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;resources&quot; tabindex=&quot;-1&quot;&gt;Resources&lt;/h3&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/FD9iFcDPnU-1864.webp 1864w&quot;&gt;&lt;img src=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/FD9iFcDPnU-1864.jpeg&quot; alt=&quot;Practitioners depend on resources&quot; width=&quot;1864&quot; height=&quot;328&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In computer science, garbage in, garbage out (GIGO) is the concept that flawed, biased or poor quality (&amp;quot;garbage&amp;quot;) information or input produces a result or output of similar (&amp;quot;garbage&amp;quot;) quality.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;― &lt;a href=&quot;https://en.wikipedia.org/wiki/Garbage_in,_garbage_out&quot;&gt;Garbage in, garbage out&lt;/a&gt; on Wikipedia&lt;/p&gt;
&lt;p&gt;You might be familiar with the expression &amp;quot;garbage in, garbage out&amp;quot;. It&#39;s very hard to build good things with bad parts. It&#39;s hard to build a straight tower with crooked building materials. Or to build a solid building without a strong foundation.&lt;br&gt;
Accessibility is not very different in this. It&#39;s very hard to build an accessible website when the component library or Design System doesn&#39;t offer the right building blocks. It&#39;s hard to design a contrasty experience without a useful palette. And it&#39;s very hard to test that same contrast when you don&#39;t have the right tools for testing.&lt;br&gt;
If you want to make it easy to produce accessible experiences, the route to accessibility should be paved and without barriers. &lt;strong&gt;If accessibility takes too much time, effort or energy, verify that proper resources are offered.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This need for resources aligns with the need for &lt;strong&gt;Autonomy&lt;/strong&gt; as mentioned in the book Drive. By giving people proper resources, you give them the means to act autonomous. They can strive for accessibility on their own as they have everything they need.&lt;/p&gt;
&lt;p&gt;Resources might include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tooling&lt;/li&gt;
&lt;li&gt;Branding&lt;/li&gt;
&lt;li&gt;A component library&lt;/li&gt;
&lt;li&gt;A Design System&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, the accessibility guild at VodafoneZiggo has a list of tools that are tested and approved for use on their hardware. No demotivating search for tools that may or may not work, but a shared effort that makes things easier for everybody.&lt;/p&gt;
&lt;h3 id=&quot;skills&quot; tabindex=&quot;-1&quot;&gt;Skills&lt;/h3&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/bL1cl6uKUf-1864.webp 1864w&quot;&gt;&lt;img src=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/bL1cl6uKUf-1864.jpeg&quot; alt=&quot;Practitioners depend on skills &quot; width=&quot;1864&quot; height=&quot;328&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Resources are great, but you need to know how to utilise them as well. Skills need to be built and supported. This can be done in many ways. It can come from conversations with others, onboarding, internal education, external training and even good supportive documentation can help.&lt;/p&gt;
&lt;p&gt;The need for skills aligns with the need for &lt;strong&gt;Mastery&lt;/strong&gt; as mentioned in the book Drive. By supporting people to improve their skills, you give them the means to obtain mastery. They can apply and display their skills in creating accessible experiences.&lt;/p&gt;
&lt;p&gt;Skills can be supported with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Training&lt;/li&gt;
&lt;li&gt;Awareness (general accessibility training)&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, the accessibility guild at ING has their own internal training program. The documentation of their Design Systems does not just tell people what to do, but also why certain things are important for accessibility. Two points that both contribute to skills.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If the effort to create accessible products is considered hard and complicated, verify that proper skills are facilitated.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;direction&quot; tabindex=&quot;-1&quot;&gt;Direction&lt;/h3&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/nxAjloVMYn-1320.webp 1320w&quot;&gt;&lt;img src=&quot;https://inklusivo.nl/blog/scaled-accessibility-model/nxAjloVMYn-1320.jpeg&quot; alt=&quot;Practitioners depend on mission/vision from the organisation, and on mandate and requirements from management. They can also get direction from their peers through community and culture.&quot; width=&quot;1320&quot; height=&quot;1688&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;If a person is like a captain, then they now have the right boat and equipment, and the skills to get it moving. But where should they be going?&lt;/p&gt;
&lt;p&gt;People appreciate direction. This aligns with the need for &lt;strong&gt;Purpose&lt;/strong&gt; as mentioned in the book Drive. It is about the desire to do something that has meaning and importance.&lt;br&gt;
Meaning can be fully intrinsic. A person can have an ethical drive to make accessible experiences and build something that is inclusive. This can be further strengthened, awakened or fostered by having a community and culture of accessibility. A group of people with the same purpose can share experiences and frustrations. Together they can be more effective, often even negating issues with resources or skills. A strong drive can overcome barriers. If you recognise yourself in this, find people who are like-minded.&lt;/p&gt;
&lt;p&gt;Importance can also be extrinsic. By making accessibility part of requirements, it is communicated as being something of importance. Making clear what an organisation values is adding importance.&lt;/p&gt;
&lt;p&gt;Direction can come from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A company-wide mission or vision&lt;/li&gt;
&lt;li&gt;A mandate from management&lt;/li&gt;
&lt;li&gt;Requirements&lt;/li&gt;
&lt;li&gt;Intrinsic motivation&lt;/li&gt;
&lt;li&gt;Community and culture (be part of online communities and/or visit meetups!)&lt;/li&gt;
&lt;li&gt;Feedback from users&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, the vision of IKEA is &amp;quot;to create a better everyday life for the many people&amp;quot;. That&#39;s a great vision that ties in perfectly with creating inclusive products and services.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If there is a clear effort to create accessible products, but the efforts come across as ad hoc, disorganised or uncoordinated, verify that proper direction is given and supported.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;the-role-of-management&quot; tabindex=&quot;-1&quot;&gt;The role of management&lt;/h2&gt;
&lt;p&gt;A lot of this model focuses on the practitioners, and their needs. The goal of management is the model. The goal is to make sure the model and its factors are in order. Make sure everybody has the right resources and skills. Give people a mandate, add accessibility to your requirements, and make sure people are connected with their colleagues. Maybe join that community to show people they are being seen (in a good way).&lt;br&gt;
Facilitate intrinsically driven people and guide their individual efforts to support. It is your task to make sure all aspects are taken care of.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot; tabindex=&quot;-1&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;SAM sketches a picture of what needs to be in order for people to flourish and build accessible. This model was previously presented at &lt;a href=&quot;https://www.ncdt.nl/&quot;&gt;NCDT&lt;/a&gt; in 2025 as &lt;a href=&quot;https://www.ncdt.nl/programma/presentatie/35/scaled-accessibility-how-big-dutch-companies-manage-accessibility/&quot;&gt;Scaled Accessibility: How Big Dutch Companies Manage Accessibility&lt;/a&gt;. This article expands on that thanks to the eyes, minds, feedback and insights of other people. If you want to work with this model (either with or without us) please let us know. We&#39;ve got more where this came from, and your shared experience can only improve it further!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>The Anatomy of an Accessible Text Field</title>
    <link href="https://inklusivo.nl/blog/accessible-text-field-anatomy/" />
    <updated>2025-12-19T00:00:00Z</updated>
    <id>https://inklusivo.nl/blog/accessible-text-field-anatomy/</id>
    <content type="html">&lt;p&gt;Forms are complicated. Or rather, forms consist of so many parts that they&#39;re easy to get wrong. Talking from experience: the odds of a website with forms having accessibility issues are nearly guaranteed. The limited automated test of &lt;a href=&quot;https://webaim.org/projects/million/#wcag&quot;&gt;the WebAIM Million&lt;/a&gt; already finds issues with labels on nearly half of all pages.&lt;br&gt;
Let&#39;s find out what we can do to avoid these and many other issues with forms. We&#39;re going to dissect the most common form-specific element: the text field.&lt;/p&gt;
&lt;div class=&quot;table-of-contents&quot;&gt;&lt;h2&gt;Table of Contents&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/accessible-text-field-anatomy/#the-result&quot;&gt;The result&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/accessible-text-field-anatomy/#the-elements&quot;&gt;The elements&lt;/a&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/accessible-text-field-anatomy/#the-label&quot;&gt;The label&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/accessible-text-field-anatomy/#the-hint-or-instructions&quot;&gt;The hint or instructions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/accessible-text-field-anatomy/#the-text-field&quot;&gt;The text field&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/accessible-text-field-anatomy/#the-error-message&quot;&gt;The error message&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/accessible-text-field-anatomy/#other-considerations&quot;&gt;Other considerations&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://inklusivo.nl/blog/accessible-text-field-anatomy/#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;This article gives you a starting point for designing and coding text fields. The solutions given are not the only way to meet accessibility requirements and user needs, but they do offer a solid and proven approach. These examples should help you meet compliance with WCAG 2 AA.&lt;br&gt;
A form can consist of many more parts. This article does not focus on other elements or form validation. It touches upon a lot of WCAG criteria already, just by dissecting an invalid required text field.&lt;/p&gt;
&lt;h2 id=&quot;the-result&quot; tabindex=&quot;-1&quot;&gt;The result&lt;/h2&gt;
&lt;p&gt;This is the &amp;quot;too long; didn&#39;t read&amp;quot;-version of this article. The resulting code should be something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;label for=&amp;quot;text-field&amp;quot;&amp;gt;[Descriptive name] (required)&amp;lt;/label&amp;gt;
&amp;lt;span id=&amp;quot;hint&amp;quot;&amp;gt;Put your instructions here&amp;lt;/span&amp;gt;
&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;text-field&amp;quot; aria-required=&amp;quot;true&amp;quot; aria-invalid=&amp;quot;true&amp;quot; aria-describedby=&amp;quot;hint error&amp;quot; autocomplete=&amp;quot;[to be determined]&amp;quot;&amp;gt;&amp;lt;/input&amp;gt;
&amp;lt;span id=&amp;quot;error&amp;quot; role=&amp;quot;alert&amp;quot;&amp;gt;⚠️ The required field &amp;quot;name&amp;quot; is empty.&amp;lt;/span&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Which should result in something with visuals like these:&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://inklusivo.nl/blog/accessible-text-field-anatomy/nNw5nkbs21-566.webp 566w&quot;&gt;&lt;img src=&quot;https://inklusivo.nl/blog/accessible-text-field-anatomy/nNw5nkbs21-566.jpeg&quot; alt=&quot;The result of the mentioned code. A label, a hint, a text field and an error message&quot; width=&quot;566&quot; height=&quot;244&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Your version will probably look different when it comes to things like fonts, spacing and colours. Consider this a wireframe more than a visual design.&lt;/p&gt;
&lt;h2 id=&quot;the-elements&quot; tabindex=&quot;-1&quot;&gt;The elements&lt;/h2&gt;
&lt;p&gt;Let&#39;s go through all the parts that make up a text field.&lt;/p&gt;
&lt;h3 id=&quot;the-label&quot; tabindex=&quot;-1&quot;&gt;The label&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;label for=&amp;quot;text-field&amp;quot;&amp;gt;[Descriptive name] (required)&amp;lt;/label&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The label is the element, both visually and in code, to name an element.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Action without a name, a who attached to it, is meaningless.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;― Hannah Arendt&lt;/p&gt;
&lt;p&gt;Everything needs a name. A name helps you identify an element. It helps you distinguish one from another. It can tell you what its purpose is. It also tells you how to refer to an element. Common labels include texts like &amp;quot;Name&amp;quot;, &amp;quot;Password&amp;quot; and &amp;quot;Email&amp;quot;.&lt;br&gt;
&lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/labels-or-instructions.html&quot;&gt;WCAG SC 3.3.2 Labels or Instructions&lt;/a&gt; requires you to provide labels or instructions when user input is required. In theory, this could be any &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;. &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships&quot;&gt;WCAG SC 1.3.1 Info and Relationships&lt;/a&gt; requires that it&#39;s marked up properly. The most appropriate element to do that with is the &lt;code&gt;&amp;lt;label&amp;gt;&lt;/code&gt;-element.&lt;br&gt;
Visually, a label and a text field should have a clear relationship. By adding the &lt;code&gt;for&lt;/code&gt;-attribute, you create a relationship between the &lt;code&gt;&amp;lt;label&amp;gt;&lt;/code&gt; and the &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; in the code as well (which satisfies WCAG SC 1.3.1). This works by using the &lt;code&gt;id&lt;/code&gt; of the &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; as a value.  Added bonus, the label is now interactive. When activated, the focus is put on the text field.&lt;br&gt;
By creating this relationship, you also give the text field an accessible name. Naming a text field is needed for &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html&quot;&gt;WCAG SC 4.1.2 Name, Role, Value&lt;/a&gt;. Using this method to name a text field results in the visible label being the same as the name in the code. This satisfies &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/label-in-name.html&quot;&gt;WCAG SC 2.5.3 Label in Name&lt;/a&gt;.&lt;br&gt;
There is also a success criterion related to the size of interactive elements. By making the label at least 24 by 24 pixels, you won&#39;t have to consider &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html&quot;&gt;WCAG SC 2.5.8 Target Size (Minimum)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As you might expect from what&#39;s written so far, the label needs a nice descriptive name. This is also mentioned in &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/headings-and-labels.html&quot;&gt;WCAG SC 2.4.6 Headings and Labels&lt;/a&gt;. It does not need to be unique across pages. It does need to be consistent to satisfy &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/consistent-identification.html&quot;&gt;WCAG SC 3.2.4 Consistent Identification&lt;/a&gt;.&lt;br&gt;
For this example, we assume the text field is required. This is the ideal location to visually indicate a text field is required. A simple &amp;quot;(required)&amp;quot; is a great way to do this. This is much easier to understand than an asterisk (which might introduce new issues).&lt;/p&gt;
&lt;h3 id=&quot;the-hint-or-instructions&quot; tabindex=&quot;-1&quot;&gt;The hint or instructions&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;span id=&amp;quot;hint&amp;quot;&amp;gt;Put your instructions here&amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Form fields often, but not always, have additional information. This could be about the expected format of the input, like how to format a date. It can also state specific requirements, like the number of characters in a password.&lt;br&gt;
Any additional information, besides the name/label, that is known before the user provides input, should be put into this area. This means you should state password requirements before validation. This avoids frustrating guessing games where users provide input, they get feedback, they adjust their input, they get new feedback, they adjust their input again, and so forth. Such an opaque feedback loop makes a form unusable.&lt;br&gt;
Like the label, instructions can help satisfy WCAG SC 3.3.2 Labels or Instructions.&lt;/p&gt;
&lt;h3 id=&quot;the-text-field&quot; tabindex=&quot;-1&quot;&gt;The text field&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;text-field&amp;quot; aria-required=&amp;quot;true&amp;quot; aria-invalid=&amp;quot;true&amp;quot; aria-describedby=&amp;quot;hint error&amp;quot; autocomplete=&amp;quot;[to be determined]&amp;quot;&amp;gt;&amp;lt;/input&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;We add &lt;code&gt;type=&amp;quot;text&amp;quot;&lt;/code&gt; to declare this input to be a text field. There are different values that might be relevant for you. Use &lt;code&gt;type=&amp;quot;password&amp;quot;&lt;/code&gt; for a password that will be obscured. If you can add a button to toggle visibility of a password, that&#39;s great. I wish this were a WCAG-requirement and/or implemented in all browsers.&lt;br&gt;
Watch out with values like &lt;code&gt;type=&amp;quot;number&amp;quot;&lt;/code&gt; as they can limit the keyboard that is shown on mobile and can introduce different interactions like spinners.&lt;br&gt;
The &lt;code&gt;id&lt;/code&gt; is important. We&#39;ve used that value in the &lt;code&gt;for&lt;/code&gt;-attribute of our &lt;code&gt;label&lt;/code&gt;. That&#39;s how we&#39;ve created a relationship in our code.&lt;br&gt;
&lt;code&gt;aria-required&lt;/code&gt; is a way to indicate this field is required. It is also mentioned in WCAG as &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA2&quot;&gt;Technique ARIA2:Identifying a required field with the aria-required property&lt;/a&gt;. It&#39;s related to WCAG SC 1.3.1 Info and Relationships, WCAG SC 3.3.1: Error Identification and WCAG SC 3.3.2 Labels or Instructions. Unlike the HTML-attribute &lt;code&gt;required&lt;/code&gt;, &lt;code&gt;aria-required&lt;/code&gt; does not trigger built-in validation messages.&lt;br&gt;
Likewise, &lt;code&gt;aria-invalid&lt;/code&gt; can be used to indicate an invalid field. This is mentioned in WCAG as &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA21&quot;&gt;Technique ARIA21:Using aria-invalid to Indicate An Error Field&lt;/a&gt; and is related to WCAG SC 3.3.1: Error Identification.&lt;br&gt;
&lt;code&gt;aria-describedby&lt;/code&gt; adds a description to the text field. Screen readers often pronounce this (or these) after the essential name, role and values of an element. The attribute takes an &amp;quot;ID reference list&amp;quot; which means it can concatenate multiple IDs. In this case we refer to the hint or instructions, and any error message that might be present. We do this with WCAG SC 1.3.1 Info and Relationships in mind.&lt;br&gt;
The &lt;code&gt;autocomplete&lt;/code&gt;-attribute helps people input information they have used before. It identifies what type of input is expected. All possible &lt;a href=&quot;https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill&quot;&gt;autocomplete-values&lt;/a&gt; are listed in the specification. If there is no fitting value, consider using &lt;code&gt;on&lt;/code&gt; instead. This way a tool like a browser or password manager can still attempt to assist the user, but it might use other metrics or information besides the autocomplete-value.&lt;/p&gt;
&lt;p&gt;And whatever you do, don&#39;t use placeholders. &lt;a href=&quot;https://www.nngroup.com/articles/form-design-placeholders/&quot;&gt;Placeholders in Form Fields Are Harmful&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;the-error-message&quot; tabindex=&quot;-1&quot;&gt;The error message&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;span id=&amp;quot;error&amp;quot; role=&amp;quot;alert&amp;quot;&amp;gt;⚠️ The required field &amp;quot;name&amp;quot; is empty.&amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The error message needs an &lt;code&gt;id&lt;/code&gt; so it can be referred to by &lt;code&gt;aria-describedby&lt;/code&gt;. We do this for WCAG SC 1.3.1 Info and Relationships. The &lt;a href=&quot;https://w3c.github.io/aria/#alert&quot;&gt;&lt;code&gt;role=&amp;quot;alert&amp;quot;&lt;/code&gt;&lt;/a&gt; gives the &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; semantics, and is there to announce the error much like &lt;code&gt;aria-live&lt;/code&gt; would do. This makes sure errors are harder to miss, and helps with &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/status-messages.html&quot;&gt;WCAG SC 4.1.3 Status Messages&lt;/a&gt;.&lt;br&gt;
Then there&#39;s the content itself. Often we start with an icon, pictogram or whatever image. A lot of people appreciate visual cues like these. Making sure to give them an alternative where needed (&lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/non-text-content.html&quot;&gt;WCAG SC 1.1.1 Non-text Content&lt;/a&gt;). Preferably something that describes what the image communicates (a word like &amp;quot;error&amp;quot; or &amp;quot;warning&amp;quot;) and not a description of the image.&lt;br&gt;
An image also helps with &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/use-of-color.html&quot;&gt;WCAG SC 1.4.1: Use of Color&lt;/a&gt;. It avoids a form field where only colour differentiates a state like an error.&lt;br&gt;
There&#39;s a book to be written about what makes an error message good. As a starting point, don&#39;t tell the user anybody they (could) know already and support them in fixing the issue. This means it should be human-readable, helpful and rules out issues with formatting. The formatting can be communicated beforehand.&lt;/p&gt;
&lt;h2 id=&quot;other-considerations&quot; tabindex=&quot;-1&quot;&gt;Other considerations&lt;/h2&gt;
&lt;p&gt;There are considerations for the visual design as well. Hopefully obvious are &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html&quot;&gt;WCAG SC 1.4.3 Contrast (Minimum)&lt;/a&gt; and &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/non-text-contrast.html&quot;&gt;WCAG SC 1.4.11: Non-text Contrast&lt;/a&gt;. Both text and non-text should have sufficient contrast. This is another reason to avoid placeholders.&lt;br&gt;
The order of elements in this article is &lt;a href=&quot;https://www.w3.org/WAI/tutorials/forms/labels/#visual-position-of-label-text&quot;&gt;not accidental&lt;/a&gt;. Putting label and instructions first reduces the odds of people missing them before reaching a text field. This assumes using a left-to-right language. It also avoids an on-screen keyboard blocking this information when inputting information.&lt;br&gt;
Make sure elements are grouped close together. When they&#39;re far apart, they&#39;re easy to miss for people zooming in (both digitally and using a magnifying glass).&lt;br&gt;
When text fields are used to input information that needs to be verified, like a validation code through SMS, make sure verification happens &lt;strong&gt;after&lt;/strong&gt; submission. Pages that &amp;quot;change on their own&amp;quot; can be very confusing and conflict with &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/on-input.html&quot;&gt;WCAG SC 3.2.2: On Input&lt;/a&gt;&lt;br&gt;
While this article focuses heavily on web and HTML, the same principles apply for mobile and native code.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot; tabindex=&quot;-1&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Forms can be extensive. They&#39;re fragile when it comes to both Web Accessibility and Usability. Both many things can be done wrong, and many parts can be built better than how other build forms.&lt;br&gt;
The text field specified here is your starting point. Take this and iterate on it for your own use cases. Improve and adjust when you are certain you need to deviate. Otherwise take this example as your accessible default.&lt;br&gt;
A form field is much more than just text fields, but you can&#39;t build accessible forms when the building blocks fail already. Solidify your foundation before building further.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>How to make your colour palette usable for accessibility</title>
    <link href="https://inklusivo.nl/blog/make-your-colour-palette-usable-accessibility/" />
    <updated>2025-12-11T00:00:00Z</updated>
    <id>https://inklusivo.nl/blog/make-your-colour-palette-usable-accessibility/</id>
    <content type="html">&lt;p&gt;Colour palettes are the building blocks of visual design. Having a practical palette makes a world of difference when creating accessible experiences. But how can we make our palettes as usable as possible?&lt;/p&gt;
&lt;h2 id=&quot;what-does-wcag-say-about-colour-and-contrast&quot; tabindex=&quot;-1&quot;&gt;What does WCAG say about colour and contrast&lt;/h2&gt;
&lt;p&gt;The Web Content Accessibility Guidelines (WCAG) mentions two &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html#dfn-contrast-ratio&quot;&gt;contrast ratios&lt;/a&gt;. There’s 4.5∶1. That’s the minimum contrast requirement for regular text as mentioned in &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html&quot;&gt;WCAG Success Criterion 1.4.3 Contrast (Minimum)&lt;/a&gt;. This means that when you measure the contrast of regular text on a background, it should have a contrast of at least 4.5∶1.&lt;/p&gt;
&lt;p&gt;You can measure this contrast in the developer tools of your favourite browser like Firefox or Chrome. You can also measure it inside Figma. If your software can’t measure contrast, then there are external tools like the &lt;a href=&quot;https://github.com/ThePacielloGroup/CCAe/&quot;&gt;Colour Contrast Analyser&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The other contrast ratio that WCAG mentions is 3∶1. This is the minimum for large text, which is defined as text that is 14 points (about 18.5 pixels) and bold, or 18 points (24 pixels).&lt;br&gt;
It is also mentioned in &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/quickref/#non-text-contrast&quot;&gt;WCAG Success Criterion 1.4.11 Non-text Contrast&lt;/a&gt;. It is the minimum contrast for &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/non-text-contrast.html#dfn-user-interface-component&quot;&gt;User Interface Components&lt;/a&gt; (things like form elements, buttons and links) and &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/Understanding/non-text-contrast.html#graphical-objects&quot;&gt;Graphical Objects&lt;/a&gt; (like icons and parts of charts).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note 1:&lt;/strong&gt; Every state of a component (like a focused button or a visited link) should have enough contrast with the background. States do not need to contrast with other states of the same component.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note 2:&lt;/strong&gt; When discussing User Interface Components, the part that makes the component recognizable is the part that has contrast requirements. For example, a button with a light gray outline on a white background might be very low contrast. But if it contains contrasty dark gray text that makes it recognisable as a button, then it meets contrast requirements.&lt;/p&gt;
&lt;h2 id=&quot;how-to-simplify-wcag-compliance-for-designers&quot; tabindex=&quot;-1&quot;&gt;How to simplify WCAG-compliance for designers&lt;/h2&gt;
&lt;p&gt;For many designers, their colour palette is like a toolkit. It helps when they’re not severely limited in the tools they can pick. And it helps when they know when each tool can be used or applied.&lt;br&gt;
To translate this to WCAG-compliance: It helps when designers have a clear selection of colours, with guidance on when they can use which.&lt;/p&gt;
&lt;h2 id=&quot;visualizing-the-usability-of-a-palette&quot; tabindex=&quot;-1&quot;&gt;Visualizing the usability of a palette&lt;/h2&gt;
&lt;p&gt;My favourite tool for achieving these goals is &lt;a href=&quot;https://contrast-grid.eightshapes.com/&quot;&gt;Contrast Grid&lt;/a&gt; by &lt;a href=&quot;https://www.directededges.com/&quot;&gt;Directed Edges&lt;/a&gt; (formerly, EightShapes).&lt;br&gt;
In this tool, you can enter a set of colours. It will generate a grid (hence the name) with those colours. It will show the contrast ratios of all combinations of colours.&lt;br&gt;
If you enter a palette of 6 colours. It will generate a grid of 36 (6 times 6) squares. It will show you the contrast of each of those 6 colours, when combined with one of the others (and itself).&lt;/p&gt;
&lt;p&gt;See for yourself: &lt;a href=&quot;https://contrast-grid.eightshapes.com/?version=1.1.0&amp;amp;background-colors=&amp;amp;foreground-colors=%23FFFFFF%2C%20White%0D%0A%23F2F2F2%0D%0A%23767676%0D%0A%23555%0D%0A%23000000%0D%0A%0D%0A&amp;amp;es-color-form__tile-size=compact&amp;amp;es-color-form__show-contrast=aaa&amp;amp;es-color-form__show-contrast=aa&amp;amp;es-color-form__show-contrast=aa18&amp;amp;es-color-form__show-contrast=dnp&quot;&gt;Contrast Grid with white, off-white, light gray, medium gray, dark gray and black&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://inklusivo.nl/blog/make-your-colour-palette-usable-accessibility/0MNnMUvpUI-762.webp 762w&quot;&gt;&lt;img src=&quot;https://inklusivo.nl/blog/make-your-colour-palette-usable-accessibility/0MNnMUvpUI-762.jpeg&quot; alt=&quot;A contrast grid with the input mentioned.&quot; width=&quot;762&quot; height=&quot;744&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;h3 id=&quot;what-does-it-say%3F&quot; tabindex=&quot;-1&quot;&gt;What does it say?&lt;/h3&gt;
&lt;p&gt;From top to bottom in the column with white on top. Off-white on white gives a very low contrast of 1.1∶1. Medium gray gives 4.5∶1, which is enough for complying with regular text. Dark gray gives a respectable 7.4∶1 on white. Black on white gives the maximum contrast of 21∶1.&lt;br&gt;
Taking off-white as a background gives slightly lower values, as the contrast is worse on a less bright background.&lt;br&gt;
Besides the numbers, the grid also has labels. DNP means Does Not Pass. This combination is low contrast and is not usable in any situation. AA18 means the contrast is enough to comply with WCAG for large text (3∶1 or more). This is also sufficient for user interface components. Anything marked AA can be used for regular text. AAA means it’s sufficient for regular text following the stricter AAA-level of WCAG.&lt;/p&gt;
&lt;h3 id=&quot;what-we-can-do-with-this-part-1%3A-improve&quot; tabindex=&quot;-1&quot;&gt;What we can do with this part 1: improve&lt;/h3&gt;
&lt;p&gt;When you generate a grid like this, and see a lot of DNP, that means your designers have very few combinations to work with. This is where the tool will help you out. If you see some shades just below the minimum for compliance (2.8? 2.9?), you can change them slightly and improve contrast. Of course, 3∶1 is a minimum set by WCAG, but you’re free to have your own goals here.&lt;br&gt;
The same goes for regular text. Maybe you can improve it to work not only on a white background, but also that off-white you’re using everywhere, or that slightly colourful bright background you’re using.&lt;br&gt;
It’s also possible to see shortcomings in your selection of shades. If you have white, off-white, and your next darkest colour is medium gray at 4.6∶1, maybe add something in between for more flexibility.&lt;br&gt;
Getting this visual representation of your palette and the useful combinations can really help you understand how rich or poor your toolkit is. It’s not impossible to have a very large grid with very few usable combinations. And with just a bit of fine tuning, this can be changed a lot.&lt;/p&gt;
&lt;h3 id=&quot;what-we-can-do-with-this-part-2%3A-share&quot; tabindex=&quot;-1&quot;&gt;What we can do with this part 2: share&lt;/h3&gt;
&lt;p&gt;Now that you have your ideal palette, it’s time to put it into action. The tool can help with this as well. Take the output of the tool, and put it somewhere where designers are. The data can be put in an Excel. But it might get overlooked. Maybe you have a shared Figma- or Penpot-file where this information would be fitting. Or you have a Design System with an extensive page on the colours you use. It would be perfect there. And in addition, you can even encode it in your Design System and its tokens.&lt;br&gt;
Don’t tell people what they can’t do, but make it clear what options they do have. And showing all usable combinations is doing just that!&lt;/p&gt;
&lt;h2 id=&quot;i%E2%80%99ve-followed-the-steps%2C-am-i-now-wcag-compliant%3F&quot; tabindex=&quot;-1&quot;&gt;I’ve followed the steps, am I now WCAG-compliant?&lt;/h2&gt;
&lt;p&gt;WCAG is more than contrast, and contrast is more than having a useful palette. But this does help a lot. Having a useful palette is the foundation of an inclusively designed brand. You can’t expect people to build inclusive experiences when their building blocks have issues.&lt;br&gt;
The most common contrast issues that still pop up with a proper palette include:&lt;br&gt;
Low-contrast placeholders in input fields: don’t use placeholders.&lt;br&gt;
Custom form elements: sticking to native makes life easier. Be prepared to thoroughly test when you don’t.&lt;br&gt;
Non-default states with low contrast: design and test beyond the happy flow.&lt;br&gt;
Images being used as background: avoid text over images.&lt;br&gt;
External tools, vendors and embeds that deviate: good luck. A challenge in tight process management and communication.&lt;br&gt;
Non-consistent implementation of the palette: this might be a challenge beyond accessibility.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>QR codes and accessibility</title>
    <link href="https://inklusivo.nl/blog/qr-codes-and-accessibility/" />
    <updated>2025-06-01T00:00:00Z</updated>
    <id>https://inklusivo.nl/blog/qr-codes-and-accessibility/</id>
    <content type="html">&lt;h2 id=&quot;introduction&quot; tabindex=&quot;-1&quot;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This is a guideline for printing QR codes. These guidelines are part technical, but there is a strong people-part to QR codes as well. QR codes are computer-readable and very much opaque for people. Not knowing what something is and/or does, adds a fear for many people. That fear can be a barrier for people.&lt;/p&gt;
&lt;h2 id=&quot;definition&quot; tabindex=&quot;-1&quot;&gt;Definition&lt;/h2&gt;
&lt;p&gt;A printed QR code (quick-response code) is a square two-dimensional barcode used for, in this case, representing a URL.&lt;/p&gt;
&lt;h2 id=&quot;checklist&quot; tabindex=&quot;-1&quot;&gt;Checklist&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Text&lt;/strong&gt; - Always show the URL in plain text and add enticing microcopy that clarifies what to expect from the URL. Remove uncertainty and fear where possible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Placement&lt;/strong&gt; -&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Preferred&lt;/strong&gt;. When there is space next to the url, place a QR code with the text &amp;quot;QR code&amp;quot; in the center. This text clarifies there is a QR code present for scanning tools and for people who do not recognize QR codes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alternative&lt;/strong&gt;. When horizontal space is not enough but vertical is plenty, place a QR code with the URL in the center.&lt;/li&gt;
&lt;li&gt;When space is limited, print no QR code (but do print a URL).&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Size&lt;/strong&gt; - Width/height at least 2cm, and preferably around 1/10th of the scanning distance. – The technical minimum is around 1cm. Complex/long URLS (more data), error correction, sub-optimal printing and variation in user devices add a lot of uncertainty and variance. This makes double the minimum reasonable. &lt;a href=&quot;https://www.qrcode.com/en/howto/code.html&quot;&gt;https://www.qrcode.com/en/howto/code.html&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Printing&lt;/strong&gt; - Print on non-reflective and flat surfaces where possible. Reflections can optically break the pattern, and non-flat surfaces deform it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;URLs&lt;/strong&gt; - Create the shortest human-readable URL possible (IE: domain.ext/text) without external shorteners. - External shorteners lessen trust. Longer URLs require more data and increase complexity of the QR Code. This makes them harder to scan and recognize. &lt;a href=&quot;https://www.qrcode.com/en/about/version.html&quot;&gt;https://www.qrcode.com/en/about/version.html&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Position&lt;/strong&gt; - Place QR codes consistently and at the end of a message. - A QR code is used for exceptional URLs and acts like a call to action.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Target&lt;/strong&gt; - The URL must be a website that works on all resolutions as QR codes are often scanned with phones. - (Shouldn’t be an issue in theory, as this is part of WCAG-conformance)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Test&lt;/strong&gt; - Test the QR code before sending it out. - As the code can&#39;t be understood by looking at it, issues creep in easily.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Format&lt;/strong&gt; - Use a black and white QR code with squares when possible. Set error correction to H (high) when possible. A different bright background is possible but impacts both scanability and recognizability. - This is the most conventional shape of a QR code. It is closest to following the standard (ISO/IEC18004). It is the easiest to scan because of contrast and formatting, but it&#39;s also the easiest to recognize. The error correction allows for damage and distortion (and removing the center).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Spec&lt;/strong&gt; - Include an outline with the same color as the background, with a width of at least 4 blocks. – This is also called a quiet zone, as mentioned in the standard (ISO/IEC18004).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Spacing&lt;/strong&gt; – Avoid multiple QR codes on the same page or surface. Multiple QR codes can confuse devices.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
</content>
  </entry>
</feed>