{"id":992425,"date":"2026-06-26T06:55:43","date_gmt":"2026-06-26T06:55:43","guid":{"rendered":"https:\/\/ifdb.io\/accessible-error-messages-when-the-form-simply-wont-submit\/"},"modified":"2026-10-12T09:34:10","modified_gmt":"2026-10-12T09:34:10","slug":"accessible-error-messages-when-the-form-simply-wont-submit","status":"publish","type":"post","link":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/","title":{"rendered":"Accessible error messages: when the form simply won\u2019t submit"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">An accessible error message determines whether a person can submit a form \u2013 or is left sitting there at a loss because it \u2018just doesn\u2019t work\u2019. After all, a field with a red border is invisible to a blind user. If the error message is only visual, they\u2019ll click \u2018Submit\u2019, nothing will happen, and they won\u2019t know why. In this guide, I\u2019ll show you, based on practical audit experience, the three key functions every error message must fulfil, which WCAG criteria apply, how to link errors to the relevant field correctly from a technical perspective and make them audible, and how you can test all of this yourself in five minutes.   <\/p>\n\n<h3 id=\"h-was-ist-eine-barrierefreie-fehlermeldung\" class=\"wp-block-heading\">What is an accessible error message?<\/h3>\n\n<p class=\"wp-block-paragraph\">An accessible error message clearly explains to every user what has gone wrong \u2013 regardless of the assistive technology they use. If a user makes an input error, such as leaving a required field blank or using the wrong format, the system must do three things. It must identify the error, explain it and report it to the assistive technology.  <\/p>\n\n<p class=\"wp-block-paragraph\">This is underpinned by several WCAG criteria. Success Criterion 3.3.1 Error Detection (Level A) requires that an error be detectable in text form. Criterion 3.3.3 Error Suggestions (Level AA) additionally requires guidance on how to rectify it.  <\/p>\n\n<p class=\"wp-block-paragraph\">What matters is the reasoning behind it. An error message that only works for sighted mouse users is not a complete error message. After all, it is precisely in forms that it is decided whether a person can complete an order, submit an application or get in touch. That is why the error message is far more than just a detail \u2013 it is often the final hurdle before the finish line.   <\/p>\n\n<h3 id=\"h-das-grosste-problem-die-stille-fehlermeldung\" class=\"wp-block-heading\">The biggest problem: the silent error message<\/h3>\n\n<p class=\"wp-block-paragraph\">The most common and most serious barrier is the \u2018silent error message\u2019. This occurs when an error is visible but is never reported to the screen reader. A blind person fills in the form, clicks \u2018Submit\u2019 \u2013 and hears nothing. The field is highlighted in red; there may even be text next to it, but they are unaware of any of this. They simply have no way of knowing that anything has gone wrong at all.    <\/p>\n\n<p class=\"wp-block-paragraph\">The result is confusion. The user presses the button again, checks their entries, and eventually gives up. From their point of view, the form is simply broken. Yet the solution could have been achieved with just a few lines of code. And that is precisely what makes this barrier so frustrating: it is easy to fix, yet it constantly goes unnoticed.    <\/p>\n\n<p class=\"wp-block-paragraph\">This is exactly where our in-depth <a href=\"https:\/\/ifdb.io\/en\/access-ready\/\">\u2018Access Ready\u2019<\/a> audit comes in. We work with real users of assistive technology to check whether an error message actually gets through \u2013 not just whether it\u2019s present in the code. After all, being present and being audible are two different things.  <\/p>\n\n<h3 id=\"h-wer-auf-gute-fehlermeldungen-angewiesen-ist\" class=\"wp-block-heading\">Who relies on good error messages<\/h3>\n\n<p class=\"wp-block-paragraph\">Clear error messages benefit far more people than just blind users. This is because a colour-coded message is also ineffective for the approximately nine per cent of men with red-green colour blindness. And a vague message can be overwhelming for people with cognitive impairments, as well as for learners whose first language is not German.  <\/p>\n\n<p class=\"wp-block-paragraph\">The method of operation also plays a part. Anyone filling in a form using only the keyboard needs the focus to be in the right place in order to spot the error in the first place. Good error messages therefore help a whole range of people at the same time. What is essential for blind users makes the process easier for everyone else.   <\/p>\n\n<p class=\"wp-block-paragraph\">On top of that, there is a very tangible business reason. Every form that freezes when an error occurs means a lost contact, an abandoned order or an application that is never submitted. Better error messages therefore directly reduce the abandonment rate \u2013 for all users, not just those with disabilities.  <\/p>\n\n<h3 id=\"h-die-drei-aufgaben-jeder-fehlermeldung\" class=\"wp-block-heading\">The three functions of every error message<\/h3>\n\n<p class=\"wp-block-paragraph\">A good error message always fulfils the same three functions. It specifies which field is affected, explains what is wrong with it, and announces this audibly to assistive technology. Each function corresponds to a separate WCAG criterion.  <\/p>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Task<\/th><th class=\"has-text-align-left\" data-align=\"left\">WCAG criteria<\/th><th class=\"has-text-align-left\" data-align=\"left\">Level<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">Identify errors in the text<\/td><td class=\"has-text-align-left\" data-align=\"left\">3.3.1 Fault detection<\/td><td class=\"has-text-align-left\" data-align=\"left\">A<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">Suggest a solution<\/td><td class=\"has-text-align-left\" data-align=\"left\">3.3.3 Error suggestion<\/td><td class=\"has-text-align-left\" data-align=\"left\">AA<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">Audible error notification<\/td><td class=\"has-text-align-left\" data-align=\"left\">4.1.3 Status messages<\/td><td class=\"has-text-align-left\" data-align=\"left\">AA<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">These three elements are interlinked. If any one of them is missing, the message will have no effect on some users. The following sections explain exactly what each task entails. None of them is particularly time-consuming \u2013 but together, they make the difference between frustration and success.   <\/p>\n\n<h3 id=\"h-welches-feld-in-text-nicht-nur-in-farbe\" class=\"wp-block-heading\">Which field? In text, not just in colour <\/h3>\n\n<p class=\"wp-block-paragraph\">An error message must state which field is affected \u2013 in text form. After all, a field with a red border alone is of no help to anyone who cannot see the colour. This affects blind people as well as the approximately nine per cent of men with red-green colour blindness. Both groups need a notification that works regardless of the colour.   <\/p>\n\n<p class=\"wp-block-paragraph\">The relevant criterion is clear. Success Criterion 1.4.1 \u2018Use of Colour\u2019 (Level A) prohibits conveying information through colour alone. A red border is therefore never sufficient.  <\/p>\n\n<p class=\"wp-block-paragraph\">The solution is simple. Always combine the colour with text and, ideally, a symbol. That way, every user will recognise the error \u2013 whether through the colour, the symbol or the text. I explain this in more detail in the guide to <a href=\"https:\/\/ifdb.io\/barrierefreie-farben\/\">colours and contrasts<\/a>. This ensures the warning remains clear even for those who cannot perceive colours at all.    <\/p>\n\n<h3 id=\"h-was-ist-falsch-und-wie-man-es-behebt\" class=\"wp-block-heading\">What\u2019s incorrect \u2014 and how to fix it<\/h3>\n\n<p class=\"wp-block-paragraph\">An error message should not only indicate that something is wrong, but also specify what is wrong. This is precisely what success criterion 3.3.3, \u2018Error Suggestions\u2019 (Level AA), requires. A message such as \u2018Invalid input\u2019 or simply \u2018Error\u2019 does not meet this requirement, as it leaves the user in the dark.  <\/p>\n\n<p class=\"wp-block-paragraph\">Helpful messages are specific. Instead of \u2018Invalid input\u2019, it is better to say: \u2018The email address must contain an @\u2019. Instead of \u2018Error in the date field\u2019, it is better to say: \u2018Please enter a date in the format DD.MM.YYYY\u2019. This way, the user knows immediately what to do.<\/p>\n\n<p class=\"wp-block-paragraph\">The difference is enormous. A vague message leaves the user guessing, whilst a specific one leads straight to the solution. You should therefore word every error message in such a way that it clearly states the next step. And keep the tone friendly: the user hasn\u2019t done anything wrong; they just need a little guidance.   <\/p>\n\n<h3 id=\"h-die-fehlermeldung-horbar-machen\" class=\"wp-block-heading\">Making the error message audible<\/h3>\n\n<p class=\"wp-block-paragraph\">For a screen reader to read out an error message, it must be linked correctly from a technical point of view. Two ARIA attributes ensure this. Use <code>aria-invalid=\"true\"<\/code> to mark the field containing the error, and use <code>aria-describedby<\/code> to link the error message to the input field via its ID.  <\/p>\n\n<p class=\"wp-block-paragraph\">The result is audible. When the user clicks on the field, the screen reader announces the label, the \u2018invalid\u2019 prompt and the error message. This creates a complete, spoken response from three components \u2013 for example: <code><input aria-invalid=\"true\" aria-describedby=\"mail-err\"\/><\/code> with an associated <code><span id=\"mail-err\"><\/span><\/code>. The field\u2019s label must also be correctly linked for this to work; otherwise, the beginning of the announcement will be missing.   <\/p>\n\n<p class=\"wp-block-paragraph\">Dynamic errors require a more sophisticated approach. If a message only appears after submission without the page reloading, use <code>role=\"alert\"<\/code> for immediate, interrupting messages or a section with <code>aria-live=\"polite\"<\/code>. The newer attribute <code>aria-errormessage<\/code> would be a more elegant solution, but is not yet widely supported \u2013 which is why <code>aria-describedby<\/code> remains the safest option for the time being. Find out more in the guide to <a href=\"https:\/\/ifdb.io\/aria-label-wai-aria-richtig-einsetzen\/\">ARIA in web applications<\/a>. The key thing is to implement one variant consistently and correctly.    <\/p>\n\n<h3 id=\"h-beispiel-eine-gute-und-eine-schlechte-fehlermeldung\" class=\"wp-block-heading\">Example: a good error message and a bad one<\/h3>\n\n<p class=\"wp-block-paragraph\">The difference between a poor and a good error message can be illustrated with an example. Both respond to the same incorrect email entry, but only one of them is accessible. In the code, there are often only a few attributes to distinguish between the two versions.  <\/p>\n\n<p class=\"wp-block-paragraph\">The poor option relies solely on visual cues. The field is given a red border, and the word \u2018Error\u2019 appears next to it. For a screen reader, neither of these has any meaning: no link, no specific indication, no audible signal.  <\/p>\n\n<p class=\"wp-block-paragraph\">The best option combines all the elements. The field is labelled <code>aria-invalid=\"true\"<\/code>, the message is linked via <code>aria-describedby<\/code> and marked as <code>role=\"alert\"<\/code>, and the text clearly states: \u201cThe email address must contain an @.\u201d An icon complements the colour. This way, every user \u2013 whether sighted or not \u2013 knows immediately what to do. <\/p>\n\n<h3 id=\"h-den-fokus-an-die-richtige-stelle-setzen\" class=\"wp-block-heading\">Putting the focus in the right place<\/h3>\n\n<p class=\"wp-block-paragraph\">If a form is submitted with errors, the focus determines what happens next. If the focus remains on the \u2018Submit\u2019 button, a screen reader user will often not even notice the error. You should therefore place the focus specifically on the first field containing an error or on an error summary.  <\/p>\n\n<p class=\"wp-block-paragraph\">The tried-and-tested sequence is: first notify, then focus. First, a status message indicates that there are errors. The focus then jumps to the point where the correction begins. This way, the user knows immediately that they need to take action and where.   <\/p>\n\n<p class=\"wp-block-paragraph\">In practice, this step is most often overlooked. Yet it is crucial for keyboard usability. I go into more detail on how to control the focus effectively in the guide to <a href=\"https:\/\/ifdb.io\/en\/accessible-keyboard-navigation-using-a-website-without-a-mouse\/\">keyboard navigation<\/a>.  <\/p>\n\n<h3 id=\"h-die-fehlerubersicht-fur-lange-formulare\" class=\"wp-block-heading\">The error summary for long forms<\/h3>\n\n<p class=\"wp-block-paragraph\">For long forms, it is worth including an additional error summary. This appears at the very top of the form and lists all errors at a glance. Ideally, each entry is a link that takes the user directly to the relevant field.  <\/p>\n\n<p class=\"wp-block-paragraph\">The process is clearly defined. Once submitted, the focus moves to this overview, which is labelled <code>role=\"alert\"<\/code> and is therefore read out immediately. This allows the user to see the full extent of the errors, rather than having to navigate through them one by one.  <\/p>\n\n<p class=\"wp-block-paragraph\">It is best to combine the two. The summary at the top provides an overview, whilst the individual message in the field gives specific guidance on the page itself. This dual approach saves users a great deal of time searching, particularly with multi-page forms. It is important to state the number of errors so that the user can immediately gauge the scale of the issue.   <\/p>\n\n<h3 id=\"h-fehler-vermeiden-bevor-sie-entstehen\" class=\"wp-block-heading\">Preventing errors before they occur<\/h3>\n\n<p class=\"wp-block-paragraph\">The best error message is the one that isn\u2019t needed at all. That is why accessibility starts here, with prevention. State what is expected before the user enters anything \u2013 for example, \u2018Password: at least 8 characters, including one number\u2019. This is also required by Success Criterion 3.3.2 Labels or Instructions (Level A). Use visible labelling for these prompts, not just a placeholder, as this disappears when you start typing.    <\/p>\n\n<p class=\"wp-block-paragraph\">Equally important is how the form handles user input. If you make a mistake, never delete the fields that have been filled in correctly; instead, simply highlight those that need correcting. Nothing is more frustrating than having to start a half-completed form all over again.  <\/p>\n\n<p class=\"wp-block-paragraph\">Timing is also important. It makes sense to validate an entry when the user leaves the field or when the form is submitted, rather than after every single keystroke. For transactions with legal or financial implications, section 3.3.4 on error prevention also requires a means of checking or correcting the entry before it is finally submitted.  <\/p>\n\n<h3 id=\"h-pflichtfelder-klar-kennzeichnen\" class=\"wp-block-heading\">Clearly mark mandatory fields<\/h3>\n\n<p class=\"wp-block-paragraph\">Many errors arise simply because it was unclear which fields needed to be completed. That is why good forms must clearly indicate which fields are mandatory. This is precisely what Success Criterion 3.3.2 \u2018Labels or Instructions\u2019 (Level A) requires.  <\/p>\n\n<p class=\"wp-block-paragraph\">A common stumbling block is the asterisk. A single \u201c*\u201d is a familiar convention for sighted users, but for a screen reader it is often simply \u201cstar\u201d \u2013 with no clear meaning. You should therefore add the word \u201cmandatory field\u201d after the asterisk or mark the field technically with <code>aria-required=\"true\"<\/code>. This ensures that screen reader users can reliably identify which details are mandatory.   <\/p>\n\n<p class=\"wp-block-paragraph\">The combination is the most straightforward approach. A visible marker in the text, an explanatory caption and the technical markup all work together. This way, every user knows right from the start what is important \u2013 and is less likely to make a mistake from the outset.  <\/p>\n\n<h3 id=\"h-auch-der-erfolg-will-gemeldet-werden\" class=\"wp-block-heading\">Success needs to be reported too<\/h3>\n\n<p class=\"wp-block-paragraph\">It is not only errors that require feedback, but also success. After all, once a form has been submitted, a blind user will ask themselves the same question: Did it work? A message such as \u2018Your form has been successfully submitted\u2019 must therefore also be audible.  <\/p>\n\n<p class=\"wp-block-paragraph\">Technically, this works in a similar way to error messages. A section containing <code>role=\"status\"<\/code> or <code>aria-live=\"polite\"<\/code> ensures that the success message is displayed without abruptly interrupting the user. This is precisely what success criterion 4.1.3, \u2018Status Messages\u2019, requires.  <\/p>\n\n<p class=\"wp-block-paragraph\">A silent confirmation can be unsettling. If the confirmation is inaudible, the user won\u2019t know whether they need to resend. You should therefore ensure that every important status change \u2013 whether successful or an error \u2013 is also signalled audibly. Only then can an interaction be considered complete in a way that is clear to everyone.   <\/p>\n\n<h3 id=\"h-neu-in-wcag-2-2-weniger-hurden-in-formularen\" class=\"wp-block-heading\">New in WCAG 2.2: fewer barriers in forms<\/h3>\n\n<p class=\"wp-block-paragraph\">Version 2.2 of the WCAG has introduced two new criteria that make forms significantly easier to use. Both are designed to prevent unnecessary obstacles before errors can even arise. This brings the concept of error prevention even more to the fore.  <\/p>\n\n<p class=\"wp-block-paragraph\">The first concerns repetition. Success criterion 3.3.7, \u2018Redundant input\u2019 (Level A), requires that users should not have to re-enter information within a single transaction. An address that has already been entered should therefore be carried over, rather than being requested a second time.  <\/p>\n\n<p class=\"wp-block-paragraph\">The second point concerns the login process. Success Criterion 3.3.8, \u2018Accessible Authentication (Level AA)\u2019, prohibits making the login process dependent solely on a memory test. You should therefore allow pasting from the clipboard and the use of password managers. I cover these changes in more detail in the guide to<a href=\"https:\/\/ifdb.io\/wcag-2-2-was-hat-sich-geaendert-ifdb\/\"> WCAG 2.2<\/a>.   <\/p>\n\n<h3 id=\"h-der-test-mit-geschlossenen-augen\" class=\"wp-block-heading\">The test with your eyes closed<\/h3>\n\n<p class=\"wp-block-paragraph\">You can carry out the most important test yourself straight away. It costs nothing and reliably detects the silent error message. <\/p>\n\n<p class=\"wp-block-paragraph\"><strong>A practical exercise \u2013 the screen reader test<\/strong>: Switch off your screen or close your eyes and complete your form using only a screen reader such as NVDA or VoiceOver. Deliberately submit it with errors: leave a required field blank, or enter an invalid email address. Now listen carefully. Do you even realise that there\u2019s an error? Can you hear which field is affected and what needs to be done? Move to that field \u2013 is the message read out there? And does the success message play audibly when you fill in the form correctly? If you find yourself stuck at any point, you\u2019ve found the most common barrier. This is exactly how a blind person experiences your form every day.        <\/p>\n\n<h3 id=\"h-haufige-fehler-bei-fehlermeldungen\" class=\"wp-block-heading\">Common mistakes in error messages<\/h3>\n\n<p class=\"wp-block-paragraph\">The same patterns recur time and again across many audits. These are the eight I see most frequently \u2013 and they can all be rectified: <\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Just colour<\/strong>: a red box with no text and no symb<\/li>\n\n\n\n<li>Vague messages such as \u2018Error\u2019 or \u2018Invalid input\u2019.<\/li>\n\n\n\n<li><strong>A silent message <\/strong>that remains inaudible to the screen reader.<\/li>\n\n\n\n<li><strong>No link<\/strong> through <code>aria-describedby<\/code> and <code>aria-invalid<\/code>.<\/li>\n\n\n\n<li><strong>The focus remains<\/strong> on the \u2018Send\u2019 button rather than on the error.<\/li>\n\n\n\n<li><strong>The entries have been deleted<\/strong>, so the user must start again.t.<\/li>\n\n\n\n<li><strong>A test every time you press a key<\/strong>, which constantly interrupts.<\/li>\n\n\n\n<li><strong>A placeholder is the only label<\/strong> that disappears whilst you are typing.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">One thing stands out here. Almost no errors arise from malicious intent. Rather, they arise because the form was tested using only a mouse and the eyes \u2013 and neither of these picks up on these problems. A single test using a screen reader uncovers most of them.   <\/p>\n\n<h3 id=\"h-haufige-fragen-zu-barrierefreien-fehlermeldungen\" class=\"wp-block-heading\">Frequently asked questions about accessible error messages<\/h3>\n\n<p class=\"wp-block-paragraph\">To round off, here are the questions I come across most frequently in my practice. The answers are brief and to the point. <\/p>\n\n<h3 id=\"h-reicht-eine-rote-umrandung-als-fehlerkennzeichnung\" class=\"wp-block-heading\">Is a red border sufficient to indicate an error?<\/h3>\n\n<p class=\"wp-block-paragraph\">No. A border on its own contravenes 1.4.1 Use of colour. Always combine the colour with text and, ideally, a symbol.  <\/p>\n\n<h3 id=\"h-wie-erfahrt-ein-screenreader-von-einem-fehler\" class=\"wp-block-heading\">How does a screen reader detect an error?<\/h3>\n\n<p class=\"wp-block-paragraph\">About the error in the code. Select the field marked <code>aria-invalid=\"true\"<\/code> and link the message via <code>aria-describedby<\/code>. Dynamic errors are indicated by <code>role=\"alert\"<\/code>.  <\/p>\n\n<h3 id=\"h-wohin-soll-der-fokus-nach-einem-fehler-springen\" class=\"wp-block-heading\">Where should the focus move to after a mistake?<\/h3>\n\n<p class=\"wp-block-paragraph\">On the first field containing an error or the error summary. If the focus remains on the \u2018Send\u2019 button, a screen reader user will often not notice the error. The sequence \u2018report first, then focus\u2019 has therefore proven effective.  <\/p>\n\n<h3 id=\"h-so-machen-sie-ihre-fehlermeldungen-barrierefrei\" class=\"wp-block-heading\">How to make your error messages accessible<\/h3>\n\n<p class=\"wp-block-paragraph\">The process begins with measurable issues and ends with the perceived reality. The free <a href=\"https:\/\/ifdb.io\/en\/access-score\/\">Access Score<\/a> provides a quick overview in a matter of minutes. It automatically identifies what can be measured: missing labels, colour-only coding or missing ARIA links.  <\/p>\n\n<p class=\"wp-block-paragraph\">However, it is only when a message is actually used that it becomes clear whether it has been understood. Can a blind person hear what has gone wrong? Can they find the correct field? Do they understand what to do? A scanner alone cannot assess this. With <a href=\"https:\/\/ifdb.io\/en\/access-ready\/\">Access Ready<\/a>, we test your forms using real users of assistive technology and issue a legally compliant certificate.     <\/p>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Approach<\/th><th class=\"has-text-align-left\" data-align=\"left\">Checks code<\/th><th class=\"has-text-align-left\" data-align=\"left\">Checks audibility<\/th><th class=\"has-text-align-left\" data-align=\"left\">Evidence<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">Free scanner<\/td><td class=\"has-text-align-left\" data-align=\"left\">measurable defects<\/td><td class=\"has-text-align-left\" data-align=\"left\">no<\/td><td class=\"has-text-align-left\" data-align=\"left\">no<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">Overlay-Widget<\/td><td class=\"has-text-align-left\" data-align=\"left\">Covers up, does not fix<\/td><td class=\"has-text-align-left\" data-align=\"left\">no<\/td><td class=\"has-text-align-left\" data-align=\"left\">no<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">Access Ready (ifdb)<\/td><td class=\"has-text-align-left\" data-align=\"left\">Code and Experience<\/td><td class=\"has-text-align-left\" data-align=\"left\">yes<\/td><td class=\"has-text-align-left\" data-align=\"left\">yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">The difference lies in our approach. Others check whether a message is included in the code and leave the rest to you. We check whether a person actually hears and understands it. This turns \u2018the error is right there\u2019 into a proven \u2018everyone knows what to do\u2019. And a form that people struggle with becomes one that everyone completes right to the end.    <\/p>\n\n\n\n<p class=\"ifdb-cta wp-block-paragraph\"><strong>Want to know what digital accessibility means for your organisation? In 30 minutes, we will go through your requirements and the most sensible next steps with you.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons ifdb-cta is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/calendly.com\/ifdb\/30min\">Book a 30-minute call<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>An accessible error message determines whether a person can submit&hellip;<\/p>\n","protected":false},"author":1,"featured_media":992426,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[68],"tags":[],"class_list":["post-992425","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-navigation-operation"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.6 (Yoast SEO v28.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Making error messages accessible: Forms for everyone | ifdb<\/title>\n<meta name=\"description\" content=\"Accessible error messages: Why silent errors block forms, which WCAG criteria apply, and how to link errors audibly to the relevant field.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Accessible error messages: when the form simply won\u2019t submit\" \/>\n<meta property=\"og:description\" content=\"For blind people, a red field is invisible. Why silent error messages block forms \u2013 and how to make them audible.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/\" \/>\n<meta property=\"og:site_name\" content=\"ifdb \u2013 digitale Barrierefreiheit &amp; BFSG-Konformit\u00e4t\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-26T06:55:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-12T09:34:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ifdb.io\/wp-content\/uploads\/2026\/06\/Formular.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1280\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Lukas Maximilian Langer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"The silent error message is the most common barrier\" \/>\n<meta name=\"twitter:description\" content=\"Rotes Feld, kein Ton: Ein blinder Nutzer dr\u00fcckt \u201eSenden&quot;, nichts passiert. Wie barrierefreie Fehlermeldungen wirklich funktionieren.\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Maximilian Langer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/accessible-error-messages-when-the-form-simply-wont-submit\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/accessible-error-messages-when-the-form-simply-wont-submit\\\/\"},\"author\":{\"name\":\"Lukas Maximilian Langer\",\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/#\\\/schema\\\/person\\\/3dc6a516bc934cf80a07e460b9c29fab\"},\"headline\":\"Accessible error messages: when the form simply won\u2019t submit\",\"datePublished\":\"2026-06-26T06:55:43+00:00\",\"dateModified\":\"2026-10-12T09:34:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/accessible-error-messages-when-the-form-simply-wont-submit\\\/\"},\"wordCount\":2988,\"publisher\":{\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/accessible-error-messages-when-the-form-simply-wont-submit\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ifdb.io\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Formular.jpg\",\"articleSection\":[\"Navigation &amp; Operation\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/accessible-error-messages-when-the-form-simply-wont-submit\\\/\",\"url\":\"https:\\\/\\\/ifdb.io\\\/en\\\/accessible-error-messages-when-the-form-simply-wont-submit\\\/\",\"name\":\"Making error messages accessible: Forms for everyone | ifdb\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/accessible-error-messages-when-the-form-simply-wont-submit\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/accessible-error-messages-when-the-form-simply-wont-submit\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ifdb.io\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Formular.jpg\",\"datePublished\":\"2026-06-26T06:55:43+00:00\",\"dateModified\":\"2026-10-12T09:34:10+00:00\",\"description\":\"Accessible error messages: Why silent errors block forms, which WCAG criteria apply, and how to link errors audibly to the relevant field.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/accessible-error-messages-when-the-form-simply-wont-submit\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ifdb.io\\\/en\\\/accessible-error-messages-when-the-form-simply-wont-submit\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/accessible-error-messages-when-the-form-simply-wont-submit\\\/#primaryimage\",\"url\":\"https:\\\/\\\/ifdb.io\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Formular.jpg\",\"contentUrl\":\"https:\\\/\\\/ifdb.io\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Formular.jpg\",\"width\":1920,\"height\":1280,\"caption\":\"A person fills in an online form on a laptop \u2013 an accessible error message determines whether the form is successfully submitted\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/accessible-error-messages-when-the-form-simply-wont-submit\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ifdb.io\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Accessible error messages: when the form simply won\u2019t submit\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/ifdb.io\\\/en\\\/\",\"name\":\"ifdb\",\"description\":\"Audit, Zertifizierung und Haftungsschutz f\u00fcr digitale Barrierefreiheit\",\"publisher\":{\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/#organization\"},\"alternateName\":\"ifdb GmbH\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ifdb.io\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/#organization\",\"name\":\"ifdb GmbH\",\"alternateName\":\"ifdb\",\"url\":\"https:\\\/\\\/ifdb.io\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/ifdb.io\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ifdb_logo.png\",\"contentUrl\":\"https:\\\/\\\/ifdb.io\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ifdb_logo.png\",\"width\":1366,\"height\":590,\"caption\":\"ifdb GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/ifdb.io\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/ifdb-io\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/ifdb.io\\\/en\\\/#\\\/schema\\\/person\\\/3dc6a516bc934cf80a07e460b9c29fab\",\"name\":\"Lukas Maximilian Langer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cdcdadbe9ee8fc0e930f7635b7f8ed5e82ca93088e944c2a2caec91811b70e6d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cdcdadbe9ee8fc0e930f7635b7f8ed5e82ca93088e944c2a2caec91811b70e6d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cdcdadbe9ee8fc0e930f7635b7f8ed5e82ca93088e944c2a2caec91811b70e6d?s=96&d=mm&r=g\",\"caption\":\"Lukas Maximilian Langer\"},\"description\":\"Als Gr\u00fcnder der ifdb GmbH setzt sich Lukas Maximilian Langer daf\u00fcr ein, digitale Barrierefreiheit vom Pflichtthema zum Selbstverst\u00e4ndnis zu machen. Sein Ziel: Websites, Apps und Dokumente, die f\u00fcr alle zug\u00e4nglich sind \u2013 unabh\u00e4ngig von Einschr\u00e4nkungen.\",\"sameAs\":[\"https:\\\/\\\/ifdb.io\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/lukasmaximilianlanger\"],\"gender\":\"m\u00e4nnlich\",\"knowsAbout\":[\"Design\",\"Development\",\"digitale Barrierefreiheit\",\"EAA\",\"BFSG\",\"Marketing\",\"EN301549\"],\"knowsLanguage\":[\"Deutsch\",\"Englisch\",\"Spanisch\"],\"jobTitle\":\"Gr\u00fcnder\",\"worksFor\":\"IFDB GmbH\",\"url\":\"https:\\\/\\\/ifdb.io\\\/en\\\/author\\\/l-langerifdb-op\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Making error messages accessible: Forms for everyone | ifdb","description":"Accessible error messages: Why silent errors block forms, which WCAG criteria apply, and how to link errors audibly to the relevant field.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/","og_locale":"en_US","og_type":"article","og_title":"Accessible error messages: when the form simply won\u2019t submit","og_description":"For blind people, a red field is invisible. Why silent error messages block forms \u2013 and how to make them audible.","og_url":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/","og_site_name":"ifdb \u2013 digitale Barrierefreiheit &amp; BFSG-Konformit\u00e4t","article_published_time":"2026-06-26T06:55:43+00:00","article_modified_time":"2026-10-12T09:34:10+00:00","og_image":[{"width":1920,"height":1280,"url":"https:\/\/ifdb.io\/wp-content\/uploads\/2026\/06\/Formular.jpg","type":"image\/jpeg"}],"author":"Lukas Maximilian Langer","twitter_card":"summary_large_image","twitter_title":"The silent error message is the most common barrier","twitter_description":"Rotes Feld, kein Ton: Ein blinder Nutzer dr\u00fcckt \u201eSenden\", nichts passiert. Wie barrierefreie Fehlermeldungen wirklich funktionieren.","twitter_misc":{"Written by":"Lukas Maximilian Langer","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/#article","isPartOf":{"@id":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/"},"author":{"name":"Lukas Maximilian Langer","@id":"https:\/\/ifdb.io\/en\/#\/schema\/person\/3dc6a516bc934cf80a07e460b9c29fab"},"headline":"Accessible error messages: when the form simply won\u2019t submit","datePublished":"2026-06-26T06:55:43+00:00","dateModified":"2026-10-12T09:34:10+00:00","mainEntityOfPage":{"@id":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/"},"wordCount":2988,"publisher":{"@id":"https:\/\/ifdb.io\/en\/#organization"},"image":{"@id":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/#primaryimage"},"thumbnailUrl":"https:\/\/ifdb.io\/wp-content\/uploads\/2026\/06\/Formular.jpg","articleSection":["Navigation &amp; Operation"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/","url":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/","name":"Making error messages accessible: Forms for everyone | ifdb","isPartOf":{"@id":"https:\/\/ifdb.io\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/#primaryimage"},"image":{"@id":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/#primaryimage"},"thumbnailUrl":"https:\/\/ifdb.io\/wp-content\/uploads\/2026\/06\/Formular.jpg","datePublished":"2026-06-26T06:55:43+00:00","dateModified":"2026-10-12T09:34:10+00:00","description":"Accessible error messages: Why silent errors block forms, which WCAG criteria apply, and how to link errors audibly to the relevant field.","breadcrumb":{"@id":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/#primaryimage","url":"https:\/\/ifdb.io\/wp-content\/uploads\/2026\/06\/Formular.jpg","contentUrl":"https:\/\/ifdb.io\/wp-content\/uploads\/2026\/06\/Formular.jpg","width":1920,"height":1280,"caption":"A person fills in an online form on a laptop \u2013 an accessible error message determines whether the form is successfully submitted"},{"@type":"BreadcrumbList","@id":"https:\/\/ifdb.io\/en\/accessible-error-messages-when-the-form-simply-wont-submit\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ifdb.io\/en\/"},{"@type":"ListItem","position":2,"name":"Accessible error messages: when the form simply won\u2019t submit"}]},{"@type":"WebSite","@id":"https:\/\/ifdb.io\/en\/#website","url":"https:\/\/ifdb.io\/en\/","name":"ifdb","description":"Audit, Zertifizierung und Haftungsschutz f\u00fcr digitale Barrierefreiheit","publisher":{"@id":"https:\/\/ifdb.io\/en\/#organization"},"alternateName":"ifdb GmbH","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ifdb.io\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ifdb.io\/en\/#organization","name":"ifdb GmbH","alternateName":"ifdb","url":"https:\/\/ifdb.io\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ifdb.io\/en\/#\/schema\/logo\/image\/","url":"https:\/\/ifdb.io\/wp-content\/uploads\/2026\/06\/ifdb_logo.png","contentUrl":"https:\/\/ifdb.io\/wp-content\/uploads\/2026\/06\/ifdb_logo.png","width":1366,"height":590,"caption":"ifdb GmbH"},"image":{"@id":"https:\/\/ifdb.io\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.instagram.com\/ifdb.io\/","https:\/\/www.linkedin.com\/company\/ifdb-io\/"]},{"@type":"Person","@id":"https:\/\/ifdb.io\/en\/#\/schema\/person\/3dc6a516bc934cf80a07e460b9c29fab","name":"Lukas Maximilian Langer","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/cdcdadbe9ee8fc0e930f7635b7f8ed5e82ca93088e944c2a2caec91811b70e6d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/cdcdadbe9ee8fc0e930f7635b7f8ed5e82ca93088e944c2a2caec91811b70e6d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cdcdadbe9ee8fc0e930f7635b7f8ed5e82ca93088e944c2a2caec91811b70e6d?s=96&d=mm&r=g","caption":"Lukas Maximilian Langer"},"description":"Als Gr\u00fcnder der ifdb GmbH setzt sich Lukas Maximilian Langer daf\u00fcr ein, digitale Barrierefreiheit vom Pflichtthema zum Selbstverst\u00e4ndnis zu machen. Sein Ziel: Websites, Apps und Dokumente, die f\u00fcr alle zug\u00e4nglich sind \u2013 unabh\u00e4ngig von Einschr\u00e4nkungen.","sameAs":["https:\/\/ifdb.io","https:\/\/www.linkedin.com\/in\/lukasmaximilianlanger"],"gender":"m\u00e4nnlich","knowsAbout":["Design","Development","digitale Barrierefreiheit","EAA","BFSG","Marketing","EN301549"],"knowsLanguage":["Deutsch","Englisch","Spanisch"],"jobTitle":"Gr\u00fcnder","worksFor":"IFDB GmbH","url":"https:\/\/ifdb.io\/en\/author\/l-langerifdb-op\/"}]}},"_links":{"self":[{"href":"https:\/\/ifdb.io\/en\/wp-json\/wp\/v2\/posts\/992425","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ifdb.io\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ifdb.io\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ifdb.io\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ifdb.io\/en\/wp-json\/wp\/v2\/comments?post=992425"}],"version-history":[{"count":3,"href":"https:\/\/ifdb.io\/en\/wp-json\/wp\/v2\/posts\/992425\/revisions"}],"predecessor-version":[{"id":992899,"href":"https:\/\/ifdb.io\/en\/wp-json\/wp\/v2\/posts\/992425\/revisions\/992899"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ifdb.io\/en\/wp-json\/wp\/v2\/media\/992426"}],"wp:attachment":[{"href":"https:\/\/ifdb.io\/en\/wp-json\/wp\/v2\/media?parent=992425"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ifdb.io\/en\/wp-json\/wp\/v2\/categories?post=992425"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ifdb.io\/en\/wp-json\/wp\/v2\/tags?post=992425"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}