Web accessibility expertise, integrated into your workflow

Includdy transforms EAA non-conformities into clear action plans.
For your devs. For your designers. For your QA testers

Before
With Includdy

Backed by accessibility and innovation leaders

  • They talk about us at Tribune Côte d'Azur
  • We participate in the translation of WCAG 2.2 into French at W3C
  • Our experts are certified by Access42 in accessibility audit and development
  • We participated in the French Tech Trampoline 2025 program
  • Our experts are certified in web quality by Opquast
  • We were incubated in 2025 at the Provence Côte d'Azur Incubator

Is your site affected by the EAA ?

No more need to deal with hundreds of criteria, thousands of pages of documentation. Includdy turns them into clear actions for your team.

A language your team truly understands

Each non-compliance is explained with its business impact and user impact. No more reports that no one reads.

Includdy generates the fix tailored to your stack

No more need to google each criterion or rig together ten ChatGPT prompts. The fix is tailored to your CMS or framework.

Build expertise without depending on an expert

Everyone on the team progresses through corrections. Knowledge remains, even when someone leaves.

Your EAA audit should not end up in a drawer

Half of the non-conformities detected during a standard audit are never corrected. When your team understands the problem, its impact, and the fix to apply, everything moves faster. Scan your site and let Includdy do the rest.

Autocomplete not suited to field
ARIA progressbar node without accessible name
ARIA role without required attributes
Nested interactive elements
ARIA attributes with invalid values
Field with multiple labels
Non-unique ARIA id / label attribute
Header cell without data reference
Autocomplete not suited to field
ARIA progressbar node without accessible name
ARIA role without required attributes
Nested interactive elements
ARIA attributes with invalid values
Field with multiple labels
Non-unique ARIA id / label attribute
Header cell without data reference
main region within another region
Identical summary and caption in table
<img> element without text alternative
<video> elements without captions
Non-unique landmark
<audio> elements without captions
ARIA treeitem node without accessible name
Content not localized within region
main region within another region
Identical summary and caption in table
<img> element without text alternative
<video> elements without captions
Non-unique landmark
<audio> elements without captions
ARIA treeitem node without accessible name
Content not localized within region
<blink> element used
ARIA toggle field without label
select element without accessible name
Server-side responsive images used
Focusable element with inappropriate role
aria-roledescription on element without role
Invalid role value
Semantically incorrect heading hierarchy
<blink> element used
ARIA toggle field without label
select element without accessible name
Server-side responsive images used
Focusable element with inappropriate role
aria-roledescription on element without role
Invalid role value
Semantically incorrect heading hierarchy
headers attribute referencing invalid cell
Tabindex greater than 0
Heading level without perceptible text
banner region within another region
ARIA attributes not allowed for this role
HTML document without <title> element
ARIA meter node without accessible name
lang attribute with invalid value
headers attribute referencing invalid cell
Tabindex greater than 0
Heading level without perceptible text
banner region within another region
ARIA attributes not allowed for this role
HTML document without <title> element
ARIA meter node without accessible name
lang attribute with invalid value
Data cell without header cell
SVG with role=img without accessible text
Skip link without focusable target
ARIA dialog or alertdialog without accessible name
Invalid aria- attributes
Non-unique id attribute value
Link without perceptible text
Insufficient contrast (WCAG 2 AAA)
Data cell without header cell
SVG with role=img without accessible text
Skip link without focusable target
ARIA dialog or alertdialog without accessible name
Invalid aria- attributes
Non-unique id attribute value
Link without perceptible text
Insufficient contrast (WCAG 2 AAA)
Incorrect scope attribute in table
Navigation not pointing to main content
Content restricted to screen orientation
Button control without text value
More than one banner region
meta viewport disabling zoom
Invalid role attribute for this element
<dl> elements poorly structured
Incorrect scope attribute in table
Navigation not pointing to main content
Content restricted to screen orientation
Button control without text value
More than one banner region
meta viewport disabling zoom
Invalid role attribute for this element
<dl> elements poorly structured
contentinfo region within another region
<marquee> element used
Scrolling content not keyboard accessible
More than one main landmark
HTML document without lang attribute
<p> elements styled as headings
Touch target too small
meta refresh used for delayed refresh
contentinfo region within another region
<marquee> element used
Scrolling content not keyboard accessible
More than one main landmark
HTML document without lang attribute
<p> elements styled as headings
Touch target too small
meta refresh used for delayed refresh
Page without level 1 heading
aria-hidden on focusable element
Form labeled only by title
role=text with focusable descendants
<area> elements without text alternative
ARIA button, link, or menuitem without accessible name
Focusable iframe with tabindex=-1
No navigation bypass mechanism
Page without level 1 heading
aria-hidden on focusable element
Form labeled only by title
role=text with focusable descendants
<area> elements without text alternative
ARIA button, link, or menuitem without accessible name
Focusable iframe with tabindex=-1
No navigation bypass mechanism
Table with caption without <caption> element
Non-unique id attribute on active element
Form element without label
More than one contentinfo region
Links with same name without same purpose
Poorly structured lists
Audio or video with autoplay
<object> elements without text alternative
Table with caption without <caption> element
Non-unique id attribute on active element
Form element without label
More than one contentinfo region
Links with same name without same purpose
Poorly structured lists
Audio or video with autoplay
<object> elements without text alternative
ARIA form field without accessible label
Input type=image without text alternative
<dt> and <dd> elements outside <dl>
iframe or frame without title attribute
ARIA role without required child roles
<li> elements used outside semantics
Table header without perceptible text
lang attribute with invalid value
ARIA form field without accessible label
Input type=image without text alternative
<dt> and <dd> elements outside <dl>
iframe or frame without title attribute
ARIA role without required child roles
<li> elements used outside semantics
Table header without perceptible text
lang attribute with invalid value
Visible text absent from accessible name
role=img element without text equivalent
Text spacing not adjustable
Image alternative repeating link text
ARIA role outside required parent role
Accesskey attribute value not unique
aside landmark outside top level
iframe or frame without unique title attribute
Visible text absent from accessible name
role=img element without text equivalent
Text spacing not adjustable
Image alternative repeating link text
ARIA role outside required parent role
Accesskey attribute value not unique
aside landmark outside top level
iframe or frame without unique title attribute
role=none or role=presentation causing conflict
meta viewport preventing zoom in
Inconsistent lang and xml:lang values
Button without perceptible text
Links not distinguishable without color
Insufficient contrast (WCAG 2 AA)
ARIA tooltip node without accessible name
aria-hidden='true' present on body
role=none or role=presentation causing conflict
meta viewport preventing zoom in
Inconsistent lang and xml:lang values
Button without perceptible text
Links not distinguishable without color
Insufficient contrast (WCAG 2 AA)
ARIA tooltip node without accessible name
aria-hidden='true' present on body
Next.js

Declare the language on <html lang>

export default
function RootLayout({
  children
}) {
  return (
    <html lang="en">
      <body>{children}</body>
    </html>
  );
}
Camille, Content designer

Define the main language of the site

Thomas, Frontend

Add the lang attribute on the html tag

Noah, Tester

Check the pronunciation with screen reader

Angular

Link label and input via for/id

<label for="consent">
  I accept the Terms of Use
</label>
<input id="consent"
  type="checkbox"
  formControlName=
    "consent" />
Marie, UX Designer

Design a visible label for each field

Thomas, Frontend

Link label and input via for/id

Noah, Tester

Test keyboard navigation

Vue

Describe each image with an alt

<img
  v-for="p in gallery"
  :key="p.id"
  :src="p.thumbnail"
  :alt="p.caption"
/>
Camille, Content designer

Write descriptive alt texts for the gallery

Thomas, Frontend

Map photo.caption to the alt attribute

Lea, Tester

Check the rendering with screen reader

React

Add aria-label to this icon button

<IconButton
  aria-label="Delete"
  onClick={() =>
    removeItem(id)
  }
>
  <TrashIcon />
</IconButton>
Marie, UX Designer

Define the label for the delete button

Thomas, Frontend

Implement IconButton with aria-label

Lea, Tester

Validate the label with screen reader

The expertise of a consultant, the speed of a machine

Includdy combines an expert knowledge base with AI to generate reliable fixes, tailored to your stack. You apply directly instead of deciphering an EAA report.

ReactVueAngularNext.jsWordPressDrupalShopify
AI Fixes

Move from « we'll see later » to « it's underway »

Includdy creates tickets that speak the language of each member of your team : the what, the why, the how. Integrated into your Jira, GitLab or Trello, prioritized by impact and effort. Start with the quick wins and advance sprint after sprint.

JiraLinearTrelloGitHubGitLabExcel
Tickets

From diagnosis to correction, without changing tools

Start with a complete diagnosis to see the whole picture. Then switch to development mode : scan a page locally, focus on one component at a time. Everything happens in your browser, even before deploying.

Complete scan
Locally

« The real problem with accessibility isn't detecting non-conformities. It's not drowning in them when nobody knows what to do with them. »

Misha
CEO and Founder, Includdy

For teams taking action

Accessibility has become mandatory, but your team hasn't changed overnight. Deadlines remain the same, and the subject lands on someone's desk who has never opened the EAA.

Web Agencies

Accessibility is a market opportunity. Includdy closes the gap between your team and compliance.

Development Teams

Includdy makes the team autonomous and trains them along the way, without putting everything on a single point of contact.