Skip to main content

Compliance · France

RGAA, France's digital accessibility standard

The Référentiel général d'amélioration de l'accessibilité (RGAA) is how France measures whether a website, intranet or app is accessible. Version 4.1.2, published by the interministerial digital directorate (DINUM), turns WCAG 2.1 Level AA into 106 criteria in 13 themes, each with its own tests. This page explains who the law requires to use it, what they must publish, how it is enforced, and which of the 106 criteria an automated scan can check. It is a summary, not legal advice.

In short

  • Public bodies and companies with an average turnover in France of at least EUR 250 million must publish an accessibility statement, a plan of up to three years and a homepage mention.
  • Arcom enforces it: up to EUR 50,000 for failing the accessibility requirement and EUR 25,000 for the statement, plan or mention, renewable if the breach persists six months.
  • Of the 106 criteria, our scan tests 14 on every page, catches some failures of 53 more, and cannot test 39. An RGAA conformity rate still needs an audit by a person.

Who must comply

Article 47 of loi n° 2005-102 of 11 February 2005 requires the online services of these organisations to be accessible:

  • Public-law bodies: the State, local authorities and public establishments.
  • Private bodies with a public-service mission, or created for a need of general interest and mostly funded, controlled or appointed by public bodies.
  • Companies whose turnover exceeds the threshold set by decree: an average turnover in France of EUR 250 million over the last three financial years (décret n° 2019-768, article 2).

"Online services" is broad: the law names websites, intranets, extranets, mobile apps, software packages and the interactive part of digital street furniture. Non-profits that provide neither essential services nor services for disabled people are outside it. Consumer services such as e-commerce and banking are also covered, below that threshold too and unless the provider is a microenterprise, by the European Accessibility Act, which France has applied since 28 June 2025.

What you must publish

  1. An accessibility statement (déclaration d'accessibilité), following DINUM's model: the conformity status, the content that is not accessible and why, and a way to report a barrier or ask for an accessible alternative. DINUM says it must be updated after a substantial redesign and at least every three years.
  2. A multi-year plan (schéma pluriannuel) of no more than three years, made public and broken down into annual action plans.
  3. A clearly visible mention on the homepage stating whether the service conforms, such as Accessibilité : partiellement conforme, with direct access to the statement, the plan and the current year's action plan.

The status comes from an RGAA audit. DINUM defines three: fully conformant when every RGAA criterion is met; partially conformant when at least 50% are; and not conformant below 50%, or when there is no valid audit.

Enforcement and fines

Since the ordinance of 6 September 2023, article 47-1 makes Arcom, the French audiovisual and digital regulator, responsible for enforcement. Its sworn agents investigate, Arcom gives formal notice with a deadline, and if the breach continues it can fine:

  • up to EUR 50,000 for failing the accessibility requirement itself;
  • up to EUR 25,000 for failing to publish the statement, the plan or the homepage mention;
  • and again if the same breach persists six months after a sanction.

Arcom states that for companies above the turnover threshold it checks the publication obligations only, while for public bodies it also checks conformity with the RGAA. On 24 June 2026 it gave the Ministry of Public Action and Accounts formal notice over www.impots.gouv.fr, citing inaccessible PDFs, keyboard failures, hidden menu content and badly marked-up table headers, plus a statement that overstated conformity. The ministry was given nine months for the accessibility defects and two months for the statement and action plan.

What changed in 2026, and RGAA 5

Décret n° 2026-816, in force since 27 August 2026, rewrote the 2019 decree. Accessibility is now defined by the harmonised standards cited in the EU's Official Journal under the Web Accessibility Directive, today EN 301 549 V3.2.1, and the RGAA must be kept in line with them. The minister for disabled people now monitors public bodies' sites every year, with information from Arcom.

RGAA 5 is expected at the end of 2026. DINUM has announced WCAG 2.2, new criteria and tests for mobile apps and office documents, simpler criteria that clarify rather than contradict 4.1.2, and a new service for filing statements. Statements made before it is published stay valid for 18 months, within their three-year limit. DINUM's advice is not to wait: work done against 4.1.2 carries over. Fixing to WCAG 2.2 Level AA now covers the extra criteria RGAA 5 is expected to add.

All 106 criteria, and what a scan checks

Each row gives DINUM's criterion in French, a plain English summary, the WCAG criteria it maps to, and what an Accessibility Pro scan does with it. Each row lists every rule in our public rule catalogue that reports under it, which is how a report files its findings. A test fails our build if a listed rule does not exist, tests a different WCAG criterion without a stated reason, or if a catalogue rule for a WCAG criterion RGAA uses is left unlisted.

Automated
14 criteria. A rule tests the condition on every page we scan.
Partly
53 criteria. Rules catch some failures; a person checks the rest, usually whether something is relevant.
Needs a person
39 criteria. No rule we run tests them, such as captions, site maps and office documents.

So a scan cannot give you an RGAA conformity rate, and nobody's can: the rate counts every applicable criterion, and 39 of them need a person. What it gives you is every failure it can measure, on every page and every scan, so an auditor's time goes to the criteria only a person can judge. On the Team plan, each report's Compliance tab files its findings under these criteria.

1. Images

RGAA theme 1, Images: 9 criteria
No.CriterionWCAGOur scan
1.1Every image that carries information has a text alternative. Chaque image porteuse d’information a-t-elle une alternative textuelle ?1.1.1Automated
  • image-alt
  • input-image-alt
  • ibm-area_alt_exists
  • svg-img-alt
  • role-img-alt
  • ibm-canvas_content_described
7 more rules
  • ibm-imagebutton_alt_exists
  • ibm-imagemap_alt_exists
  • ibm-img_ismap_misuse
  • ibm-svg_graphics_labelled
  • svg-accessible-name
  • server-side-image-map
  • area-alt
1.2Decorative images are hidden from assistive technology. Chaque image de décoration est-elle correctement ignorée par les technologies d’assistance ?1.1.1, 4.1.2Partly
  • ibm-img_alt_decorative
  • ibm-img_alt_null
Whether an image is decorative is a human judgement; we flag markup that contradicts itself.
1.3The text alternative of an informative image is relevant. Pour chaque image porteuse d’information ayant une alternative textuelle, cette alternative est-elle pertinente (hors cas particuliers) ?1.1.1, 4.1.2Partly
  • alt-text-inaccurate
  • ibm-img_alt_redundant
  • ibm-img_alt_valid
  • ibm-img_alt_misuse
The vision check that compares alt text with the image runs on the Team and Business plans.
1.4A CAPTCHA or test image's alternative identifies its nature and function. Pour chaque image utilisée comme CAPTCHA ou comme image-test, ayant une alternative textuelle, cette alternative permet-elle d’identifier la nature et la fonction de l’image ?1.1.1Needs a person
1.5A CAPTCHA offers an alternative way to access its content or function. Pour chaque image utilisée comme CAPTCHA, une solution d’accès alternatif au contenu ou à la fonction du CAPTCHA est-elle présente ?1.1.1Needs a person
1.6An informative image has a detailed description when it needs one. Chaque image porteuse d’information a-t-elle, si nécessaire, une description détaillée ?1.1.1Partly
  • ibm-img_longdesc_misuse
Invalid longdesc references are caught; whether an image needs a detailed description needs a person.
1.7That detailed description is relevant. Pour chaque image porteuse d’information ayant une description détaillée, cette description est-elle pertinente ?1.1.1Needs a person
1.8Images of text are replaced with styled text where possible. Chaque image texte porteuse d’information, en l’absence d’un mécanisme de remplacement, doit si possible être remplacée par du texte stylé. Cette règle est-elle respectée (hors cas particuliers) ?1.4.5Needs a person
1.9Image captions are correctly tied to their image. Chaque légende d’image est-elle, si nécessaire, correctement reliée à l’image correspondante ?1.1.1, 4.1.2Partly
  • ibm-figure_label_exists

2. Frames (Cadres)

RGAA theme 2, Frames: 2 criteria
No.CriterionWCAGOur scan
2.1Every frame has a title. Chaque cadre a-t-il un titre de cadre ?4.1.2Automated
  • frame-title
  • ibm-frame_title_exists
2.2Each frame title is relevant. Pour chaque cadre ayant un titre de cadre, ce titre de cadre est-il pertinent ?4.1.2Partly
  • frame-title-unique
Duplicate titles are caught; whether a title describes its frame needs a person.

3. Colours (Couleurs)

RGAA theme 3, Colours: 3 criteria
No.CriterionWCAGOur scan
3.1Information is not given by colour alone. Dans chaque page web, l’information ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ?1.3.1, 1.4.1Partly
  • ibm-style_color_misuse
  • ibm-form_font_color
3.2Text has enough contrast with its background. Dans chaque page web, le contraste entre la couleur du texte et la couleur de son arrière-plan est-il suffisamment élevé (hors cas particuliers) ?1.4.3Automated
  • color-contrast
  • ibm-text_contrast_sufficient
Text over images and gradients still needs a person.
3.3Interface components and informative graphics have enough contrast. Dans chaque page web, les couleurs utilisées dans les composants d’interface ou les éléments graphiques porteurs d’informations sont-elles suffisamment contrastées (hors cas particuliers) ?1.4.11Needs a person No rule we run measures non-text contrast yet.

4. Multimedia (Multimédia)

RGAA theme 4, Multimedia: 13 criteria
No.CriterionWCAGOur scan
4.1Pre-recorded media has a transcript or audio description where needed. Chaque média temporel pré-enregistré a-t-il, si nécessaire, une transcription textuelle ou une audiodescription (hors cas particuliers) ?1.2.1, 1.2.3Partly
  • ibm-media_audio_transcribed
  • ibm-media_track_available
We find the media and flag it; a person checks the alternative.
4.2That transcript or audio description is relevant. Pour chaque média temporel pré-enregistré ayant une transcription textuelle ou une audiodescription synchronisée, celles-ci sont-elles pertinentes (hors cas particuliers) ?1.2.1, 1.2.3Needs a person
4.3Pre-recorded synchronised media has captions where needed. Chaque média temporel synchronisé pré-enregistré a-t-il, si nécessaire, des sous-titres synchronisés (hors cas particuliers) ?1.2.2Partly
  • video-caption
  • ibm-caption_track_exists
A missing caption track is caught; burned-in or external captions need a person.
4.4Those captions are relevant. Pour chaque média temporel synchronisé pré-enregistré ayant des sous-titres synchronisés, ces sous-titres sont-ils pertinents ?1.2.2Needs a person
4.5Pre-recorded media has synchronised audio description where needed. Chaque média temporel pré-enregistré a-t-il, si nécessaire, une audiodescription synchronisée (hors cas particuliers) ?1.2.5Needs a person
4.6That audio description is relevant. Pour chaque média temporel pré-enregistré ayant une audiodescription synchronisée, celle-ci est-elle pertinente ?1.2.5Needs a person
4.7Every time-based medium is clearly identifiable. Chaque média temporel est-il clairement identifiable (hors cas particuliers) ?1.1.1Partly
  • ibm-media_alt_exists
  • ibm-media_alt_brief
Media with no label is caught; whether it is clearly identifiable needs a person.
4.8Non-time-based media (such as embedded objects) have an alternative where needed. Chaque média non temporel a-t-il, si nécessaire, une alternative (hors cas particuliers) ?1.1.1Partly
  • object-alt
  • ibm-object_text_exists
  • ibm-embed_alt_exists
  • ibm-applet_alt_exists
  • ibm-noembed_content_exists
4.9That alternative is relevant. Pour chaque média non temporel ayant une alternative, cette alternative est-elle pertinente ?1.1.1Needs a person
4.10Sound that plays automatically can be controlled. Chaque son déclenché automatiquement est-il contrôlable par l’utilisateur ?1.4.2Partly
  • ibm-media_autostart_controllable
4.11Time-based media can be operated by keyboard and any pointing device. La consultation de chaque média temporel est-elle, si nécessaire, contrôlable par le clavier et tout dispositif de pointage ?2.1.1, 2.1.2Partly
  • ibm-media_keyboard_controllable
4.12Non-time-based media can be operated by keyboard and any pointing device. La consultation de chaque média non temporel est-elle contrôlable par le clavier et tout dispositif de pointage ?2.1.1, 2.1.2Needs a person
4.13Media is compatible with assistive technology. Chaque média temporel et non temporel est-il compatible avec les technologies d’assistance (hors cas particuliers) ?4.1.2Needs a person

5. Tables (Tableaux)

RGAA theme 5, Tables: 8 criteria
No.CriterionWCAGOur scan
5.1Every complex data table has a summary. Chaque tableau de données complexe a-t-il un résumé ?1.3.1Needs a person
5.2That summary is relevant. Pour chaque tableau de données complexe ayant un résumé, celui-ci est-il pertinent ?1.3.1Partly
  • ibm-table_summary_redundant
A summary that repeats the caption is caught; whether a summary is relevant needs a person.
5.3A layout table still makes sense when linearised. Pour chaque tableau de mise en forme, le contenu linéarisé reste-t-il compréhensible ?1.3.2, 4.1.2Partly
  • ibm-table_layout_linearized
IBM flags layout tables for a linearisation check; the reading order needs a person.
5.4A data table's title is correctly associated with it. Pour chaque tableau de données ayant un titre, le titre est-il correctement associé au tableau de données ?1.3.1Partly
  • table-fake-caption
  • ibm-table_caption_empty
  • ibm-table_caption_nested
5.5That table title is relevant. Pour chaque tableau de données ayant un titre, celui-ci est-il pertinent ?1.3.1Needs a person
5.6Column and row headers of data tables are correctly declared. Pour chaque tableau de données, chaque en-tête de colonne et chaque en-tête de ligne sont-ils correctement déclarés ?1.3.1Partly
  • th-has-data-cells
  • ibm-table_headers_exists
Header markup is checked; a header cell marked up as data needs a person.
5.7Data cells are associated with their headers by the right technique. Pour chaque tableau de données, la technique appropriée permettant d’associer chaque cellule avec ses en-têtes est-elle utilisée (hors cas particuliers) ?1.3.1Automated
  • td-headers-attr
  • td-has-header
  • ibm-table_headers_related
  • ibm-table_scope_valid
  • ibm-table_headers_ref_valid
5.8Layout tables do not use data-table elements. Chaque tableau de mise en forme ne doit pas utiliser d’éléments propres aux tableaux de données. Cette règle est-elle respectée ?1.3.1Partly
  • ibm-table_structure_misuse

6. Links (Liens)

RGAA theme 6, Links: 2 criteria
No.CriterionWCAGOur scan
6.1Every link is explicit: its purpose is clear. Chaque lien est-il explicite (hors cas particuliers) ?1.1.1, 2.4.4, 2.5.3Partly
  • ibm-a_text_purpose
  • label-content-name-mismatch
  • ibm-label_name_visible
  • label-in-name-non-latin
Whether link text is clear in context needs a person.
6.2Every link has a name. Dans chaque page web, chaque lien a-t-il un intitulé ?1.1.1, 2.4.4Automated
  • link-name
  • empty-button-link
  • area-alt

7. Scripts

RGAA theme 7, Scripts: 5 criteria
No.CriterionWCAGOur scan
7.1Scripts are compatible with assistive technology where needed. Chaque script est-il, si nécessaire, compatible avec les technologies d’assistance ?2.5.3, 4.1.2Partly
  • aria-roles
  • aria-required-attr
  • aria-valid-attr-value
  • aria-allowed-attr
  • button-name
  • nested-interactive
45 more rules
  • label-content-name-mismatch
  • ibm-label_name_visible
  • label-in-name-non-latin
  • aria-required-children
  • aria-required-parent
  • aria-command-name
  • aria-conditional-attr
  • aria-deprecated-role
  • aria-prohibited-attr
  • aria-role-invalid
  • aria-valid-attr
  • aria-tab-name
  • aria-tooltip-name
  • aria-meter-name
  • aria-progressbar-name
  • aria-name-missing
  • nested-role-<role>
  • summary-name
  • ibm-application_content_accessible
  • ibm-aria_parent_required
  • ibm-aria_child_valid
  • ibm-aria_accessiblename_exists
  • ibm-aria_activedescendant_valid
  • ibm-aria_attribute_allowed
  • ibm-aria_attribute_conflict
  • ibm-aria_attribute_exists
  • ibm-aria_attribute_redundant
  • ibm-aria_attribute_required
  • ibm-aria_attribute_valid
  • ibm-aria_attribute_value_valid
  • ibm-aria_descendant_valid
  • ibm-aria_eventhandler_role_valid
  • ibm-aria_role_allowed
  • ibm-aria_role_valid
  • ibm-aria_widget_labelled
  • ibm-combobox_active_descendant
  • ibm-combobox_autocomplete_valid
  • ibm-combobox_design_valid
  • ibm-combobox_focusable_elements
  • ibm-combobox_haspopup_valid
  • ibm-combobox_popup_reference
  • ibm-element_tabbable_role_valid
  • ibm-input_haspopup_conflict
  • ibm-list_children_valid
  • ibm-table_aria_descendants
ARIA names, roles and states are checked; whether a widget behaves as its role promises needs a person.
7.2A script's alternative is relevant. Pour chaque script ayant une alternative, cette alternative est-elle pertinente ?1.1.1, 4.1.2Needs a person
7.3Scripts can be controlled by keyboard and any pointing device. Chaque script est-il contrôlable par le clavier et par tout dispositif de pointage (hors cas particuliers) ?1.3.1, 2.1.1, 2.4.7Partly
  • ibm-aria_keyboard_handler_exists
  • ibm-script_onclick_misuse
  • button-keyboard
  • frame-focusable-content
  • scrollable-region-focusable
  • ibm-aria_activedescendant_tabindex_valid
7 more rules
  • ibm-aria_child_tabbable
  • ibm-element_mouseevent_keyboard
  • ibm-iframe_interactive_tabbable
  • ibm-script_focus_blur_review
  • ibm-script_onclick_avoid
  • ibm-widget_tabbable_exists
  • ibm-widget_tabbable_single
7.4The user is warned about, or controls, a script's change of context. Pour chaque script qui initie un changement de contexte, l’utilisateur est-il averti ou en a-t-il le contrôle ?3.2.1, 3.2.2Partly
  • ibm-script_select_review
  • ibm-input_onchange_review
  • ibm-form_submit_button_exists
  • ibm-a_target_warning
  • ibm-form_interaction_review
7.5Status messages are announced by assistive technology. Dans chaque page web, les messages de statut sont-ils correctement restitués par les technologies d’assistance ?4.1.3Partly
  • form-error-announcement-advisory
We flag form errors that are not announced, as advice; other status messages need a person.

8. Required elements (Éléments obligatoires)

RGAA theme 8, Required elements: 10 criteria
No.CriterionWCAGOur scan
8.1Every page has a document type. Chaque page web est-elle définie par un type de document ?4.1.1Needs a person Not checked by any rule we run.
8.2The generated code is valid for its document type. Pour chaque page web, le code source généré est-il valide selon le type de document spécifié ?4.1.1, 4.1.2Partly
  • duplicate-id
  • ibm-element_id_unique
  • nested-interactive
  • duplicate-id-aria
  • ibm-aria_id_unique
We do not run a full HTML validator. WCAG 2.2 removed the matching criterion, 4.1.1, but RGAA 4.1.2 keeps it.
8.3Every page has a default language. Dans chaque page web, la langue par défaut est-elle présente ?3.1.1Automated
  • html-has-lang
  • ibm-html_lang_exists
8.4That language code is valid and relevant. Pour chaque page web ayant une langue par défaut, le code de langue est-il pertinent ?3.1.1Automated
  • html-lang-valid
  • lang-page-mismatch
  • ibm-html_lang_valid
  • html-xml-lang-mismatch
8.5Every page has a title. Chaque page web a-t-elle un titre de page ?2.4.2Automated
  • document-title
  • ibm-page_title_exists
8.6That page title is relevant. Pour chaque page web ayant un titre de page, ce titre est-il pertinent ?2.4.2Partly
  • ibm-page_title_valid
8.7Every change of language is marked in the code. Dans chaque page web, chaque changement de langue est-il indiqué dans le code source (hors cas particuliers) ?3.1.2Partly
  • lang-part-undeclared
8.8Each language-change code is valid and relevant. Dans chaque page web, le code de langue de chaque changement de langue est-il valide et pertinent ?3.1.2Automated
  • valid-lang
  • ibm-element_lang_valid
  • lang-part-mismatch
8.9Tags are not used for presentation only. Dans chaque page web, les balises ne doivent pas être utilisées uniquement à des fins de présentation. Cette règle est-elle respectée ?1.3.1Partly
  • ibm-heading_markup_misuse
8.10Changes of reading direction are marked. Dans chaque page web, les changements du sens de lecture sont-ils signalés ?1.3.2Partly
  • ibm-dir_attribute_valid

9. Structure (Structuration de l’information)

RGAA theme 9, Structure: 4 criteria
No.CriterionWCAGOur scan
9.1Information is structured with appropriate headings. Dans chaque page web, l’information est-elle structurée par l’utilisation appropriée de titres ?1.3.1, 2.4.1, 2.4.6, 4.1.2Partly
  • heading-order
  • empty-heading
  • ibm-heading_content_exists
  • ibm-text_block_heading
  • page-has-heading-one
9.2The document structure is coherent. Dans chaque page web, la structure du document est-elle cohérente (hors cas particuliers) ?1.3.1Partly
  • region
  • landmark-one-main
  • landmark-unique
  • ibm-aria_content_in_landmark
9.3Every list is correctly structured. Dans chaque page web, chaque liste est-elle correctement structurée ?1.3.1Partly
  • list
  • listitem
  • definition-list
  • dlitem
  • ibm-list_structure_proper
  • ibm-list_markup_review
List markup is checked; text that looks like a list but is not marked up needs a person.
9.4Every quotation is correctly marked. Dans chaque page web, chaque citation est-elle correctement indiquée ?1.3.1Partly
  • ibm-blockquote_cite_exists
  • ibm-text_quoted_correctly

10. Presentation (Présentation de l’information)

RGAA theme 10, Presentation: 14 criteria
No.CriterionWCAGOur scan
10.1Style sheets control the presentation of information. Dans le site web, des feuilles de styles sont-elles utilisées pour contrôler la présentation de l’information ?1.3.1, 1.3.2Partly
  • ibm-text_whitespace_valid
Spaces used to lay out text are caught; whether style sheets control all presentation needs a person.
10.2Visible information remains when style sheets are turned off. Dans chaque page web, le contenu visible porteur d’information reste-t-il présent lorsque les feuilles de styles sont désactivées ?1.1.1, 1.3.1Partly
  • ibm-img_alt_background
  • ibm-style_background_decorative
  • ibm-style_highcontrast_visible
We flag CSS background images that may carry information.
10.3Information stays understandable when style sheets are turned off. Dans chaque page web, l’information reste-t-elle compréhensible lorsque les feuilles de styles sont désactivées ?1.3.2, 2.4.3Needs a person
10.4Text stays readable at 200% text size. Dans chaque page web, le texte reste-t-il lisible lorsque la taille des caractères est augmentée jusqu’à 200 %, au moins (hors cas particuliers) ?1.4.4Partly
  • meta-viewport
  • mobile-viewport-zoom-blocked
  • ibm-style_viewport_resizable
  • ibm-meta_viewport_zoomable
Blocked zoom is caught; what breaks at 200% needs a person.
10.5CSS background and text colour declarations are used correctly. Dans chaque page web, les déclarations CSS de couleurs de fond d’élément et de police sont-elles correctement utilisées ?1.4.3Needs a person
10.6A link whose nature is not obvious is visible against the surrounding text. Dans chaque page web, chaque lien dont la nature n’est pas évidente est-il visible par rapport au texte environnant ?1.4.1Automated
  • link-in-text-block
10.7Focus is visible on every element that receives it. Dans chaque page web, pour chaque élément recevant le focus, la prise de focus est-elle visible ?1.4.1, 2.4.7Automated
  • focus-indicator-invisible
  • ibm-element_tabbable_visible
  • ibm-style_focus_visible
We tab through the page and compare pixels before and after focus.
10.8Hidden content is meant to be ignored by assistive technology. Pour chaque page web, les contenus cachés ont-ils vocation à être ignorés par les technologies d’assistance ?1.3.2, 4.1.2Partly
  • aria-hidden-focus
  • aria-hidden-body
  • aria-hidden-focus-honeypot
  • ibm-aria_hidden_nontabbable
10.9Information is not given by shape, size or position alone. Dans chaque page web, l’information ne doit pas être donnée uniquement par la forme, taille ou position. Cette règle est-elle respectée ?1.3.3, 1.4.1Partly
  • ibm-text_sensory_misuse
10.10That rule is implemented appropriately. Dans chaque page web, l’information ne doit pas être donnée par la forme, taille ou position uniquement. Cette règle est-elle implémentée de façon pertinente ?1.3.3, 1.4.1Partly
  • ibm-text_sensory_misuse
10.11Content reflows at 320 px wide and 256 px high without loss. Pour chaque page web, les contenus peuvent-ils être présentés sans perte d’information ou de fonctionnalité et sans avoir recours soit à un défilement vertical pour une fenêtre ayant une hauteur de 256 px, soit à un défilement horizontal pour une fenêtre ayant une largeur de 320 px (hors cas particuliers) ?1.4.10Partly
  • reflow-horizontal-scroll
  • mobile-horizontal-scroll
Horizontal scrolling at 320 px is measured; the 256 px height case needs a person.
10.12Users can change text spacing without losing content or function. Dans chaque page web, les propriétés d’espacement du texte peuvent-elles être redéfinies par l’utilisateur sans perte de contenu ou de fonctionnalité (hors cas particuliers) ?1.4.12Partly
  • avoid-inline-spacing
  • ibm-text_spacing_valid
10.13Content that appears on hover or focus can be controlled by the user. Dans chaque page web, les contenus additionnels apparaissant à la prise de focus ou au survol d’un composant d’interface sont-ils contrôlables par l’utilisateur (hors cas particuliers) ?1.4.13Partly
  • ibm-style_hover_persistent
10.14CSS-only extra content can be shown by keyboard and any pointing device. Dans chaque page web, les contenus additionnels apparaissant via les styles CSS uniquement peuvent-ils être rendus visibles au clavier et par tout dispositif de pointage ?2.1.1Needs a person

11. Forms (Formulaires)

RGAA theme 11, Forms: 13 criteria
No.CriterionWCAGOur scan
11.1Every form field has a label. Chaque champ de formulaire a-t-il une étiquette ?1.3.1, 2.4.6, 3.3.2, 4.1.2Automated
  • label
  • input-label-missing
  • aria-input-field-name
  • select-name
  • ibm-input_label_exists
  • ibm-form_label_unique
4 more rules
  • ibm-label_ref_valid
  • ibm-label_content_exists
  • input-label-placeholder-only
  • aria-toggle-field-name
11.2Each field label is relevant. Chaque étiquette associée à un champ de formulaire est-elle pertinente (hors cas particuliers) ?2.4.6, 2.5.3, 3.3.2Partly
  • label-content-name-mismatch
  • label-in-name-non-latin
  • ibm-label_name_visible
  • form-field-multiple-labels
  • ibm-input_label_visible
11.3Labels of fields with the same function are consistent across pages. Dans chaque formulaire, chaque étiquette associée à un champ de formulaire ayant la même fonction et répétée plusieurs fois dans une même page ou dans un ensemble de pages est-elle cohérente ?3.2.4Needs a person
11.4Each label sits next to its field. Dans chaque formulaire, chaque étiquette de champ et son champ associé sont-ils accolés (hors cas particuliers) ?3.3.2Partly
  • ibm-input_label_before
  • ibm-input_label_after
11.5Related fields are grouped where needed. Dans chaque formulaire, les champs de même nature sont-ils regroupés, si nécessaire ?1.3.1, 3.3.2Partly
  • ibm-input_checkboxes_grouped
  • ibm-input_fields_grouped
11.6Each group of related fields has a legend. Dans chaque formulaire, chaque regroupement de champs de même nature a-t-il une légende ?1.3.1, 3.3.2Partly
  • ibm-fieldset_legend_valid
  • ibm-fieldset_label_valid
11.7Each group legend is relevant. Dans chaque formulaire, chaque légende associée à un regroupement de champs de même nature est-elle pertinente ?1.3.1, 3.3.2Needs a person
11.8Related options in a choice list are grouped appropriately. Dans chaque formulaire, les items de même nature d’une liste de choix sont-ils regroupés de manière pertinente ?1.3.1Partly
  • ibm-select_options_grouped
11.9Each button's name is relevant. Dans chaque formulaire, l’intitulé de chaque bouton est-il pertinent (hors cas particuliers) ?2.5.3, 4.1.2Partly
  • button-name
  • input-button-name
  • label-content-name-mismatch
  • ibm-label_name_visible
  • label-in-name-non-latin
A missing name is caught; whether a name is meaningful needs a person.
11.10Input validation is used appropriately. Dans chaque formulaire, le contrôle de saisie est-il utilisé de manière pertinente (hors cas particuliers) ?3.3.1, 3.3.2Partly
  • form-error-association
  • ibm-error_message_exists
  • form-error-aria-invalid
11.11Input errors come with suggestions for correcting them where needed. Dans chaque formulaire, le contrôle de saisie est-il accompagné, si nécessaire, de suggestions facilitant la correction des erreurs de saisie ?3.3.3Needs a person
11.12Legal, financial and data submissions can be reviewed, corrected or recovered. Pour chaque formulaire qui modifie ou supprime des données, ou qui transmet des réponses à un test ou à un examen, ou dont la validation a des conséquences financières ou juridiques, les données saisies peuvent-elles être modifiées, mises à jour ou récupérées par l’utilisateur ?3.3.4Needs a person
11.13The purpose of a field can be determined, so browsers can autofill it. La finalité d’un champ de saisie peut-elle être déduite pour faciliter le remplissage automatique des champs avec les données de l’utilisateur ?1.3.5Partly
  • autocomplete-valid
  • ibm-input_autocomplete_valid
Invalid autocomplete values are caught; a missing one needs a person.

12. Navigation

RGAA theme 12, Navigation: 11 criteria
No.CriterionWCAGOur scan
12.1Each set of pages has at least two different navigation systems. Chaque ensemble de pages dispose-t-il de deux systèmes de navigation différents, au moins (hors cas particuliers) ?2.4.5Needs a person
12.2Menus and navigation bars stay in the same place across pages. Dans chaque ensemble de pages, le menu et les barres de navigation sont-ils toujours à la même place (hors cas particuliers) ?3.2.3Needs a person
12.3The site map page is relevant. La page « plan du site » est-elle pertinente ?2.4.5Needs a person
12.4The site map is reached the same way on every page. Dans chaque ensemble de pages, la page « plan du site » est-elle accessible à partir d’une fonctionnalité identique ?2.4.5, 3.2.3Needs a person
12.5The search engine is reached the same way on every page. Dans chaque ensemble de pages, le moteur de recherche est-il atteignable de manière identique ?3.2.3Needs a person
12.6Repeated regions (header, main navigation, content, footer, search) can be reached or skipped. Les zones de regroupement de contenus présentes dans plusieurs pages web (zones d’en-tête, de navigation principale, de contenu principal, de pied de page et de moteur de recherche) peuvent-elles être atteintes ou évitées ?1.3.1, 2.4.1, 4.1.2Partly
  • region
  • landmark-one-main
  • bypass
  • ibm-aria_banner_single
  • ibm-aria_contentinfo_single
  • ibm-aria_contentinfo_misuse
7 more rules
  • ibm-aria_complementary_label_visible
  • ibm-aria_main_label_visible
  • ibm-aria_landmark_name_unique
  • ibm-aria_region_labelled
  • ibm-aria_application_labelled
  • ibm-aria_content_in_landmark
  • landmark-main-multiple
12.7Every page has a skip link or quick access to the main content. Dans chaque page web, un lien d’évitement ou d’accès rapide à la zone de contenu principal est-il présent (hors cas particuliers) ?2.4.1, 2.4.3, 3.2.3Automated
  • skip-link-missing
  • skip-link-broken
  • bypass
  • ibm-skip_main_exists
  • ibm-html_skipnav_exists
  • ibm-skip_main_described
12.8The tab order is coherent. Dans chaque page web, l’ordre de tabulation est-il cohérent ?2.4.3Partly
  • tabindex-positive
12.9Navigation contains no keyboard trap. Dans chaque page web, la navigation ne doit pas contenir de piège au clavier. Cette règle est-elle respectée ?2.1.1, 2.1.2Partly
  • focus-trap-graph
  • focus-trap-graph-advisory
We drive the keyboard through the page as loaded; traps inside flows the scanner does not open need a person.
12.10Single-key keyboard shortcuts can be controlled by the user. Dans chaque page web, les raccourcis clavier n’utilisant qu’une seule touche (lettre minuscule ou majuscule, ponctuation, chiffre ou symbole) sont-ils contrôlables par l’utilisateur ?2.1.4Needs a person
12.11Extra content shown on hover, focus or activation can be reached by keyboard. Dans chaque page web, les contenus additionnels apparaissant au survol, à la prise de focus ou à l’activation d’un composant d’interface sont-ils si nécessaire atteignables au clavier ?2.1.1Needs a person

13. Consultation

RGAA theme 13, Consultation: 12 criteria
No.CriterionWCAGOur scan
13.1The user controls every time limit that changes content. Pour chaque page web, l’utilisateur a-t-il le contrôle de chaque limite de temps modifiant le contenu (hors cas particuliers) ?2.2.1, 2.2.2Partly
  • meta-refresh
  • ibm-meta_refresh_delay
13.2New windows do not open without a user action. Dans chaque page web, l’ouverture d’une nouvelle fenêtre ne doit pas être déclenchée sans action de l’utilisateur. Cette règle est-elle respectée ?3.2.1Needs a person
13.3Downloadable office documents have an accessible version where needed. Dans chaque page web, chaque document bureautique en téléchargement possède-t-il, si nécessaire, une version accessible (hors cas particuliers) ?1.1.1, 1.3.1, 1.3.2, 2.4.1, 2.4.3, 3.1.1, 4.1.2Needs a person We do not test PDF or office files.
13.4That accessible version offers the same information. Pour chaque document bureautique ayant une version accessible, cette version offre-t-elle la même information ?1.1.1, 1.3.1, 1.3.2, 2.4.1, 2.4.3, 3.1.1, 4.1.2Needs a person
13.5Cryptic content (ASCII art, emoticons, cryptic syntax) has an alternative. Dans chaque page web, chaque contenu cryptique (art ASCII, émoticône, syntaxe cryptique) a-t-il une alternative ?1.1.1Needs a person
13.6That alternative is relevant. Dans chaque page web, pour chaque contenu cryptique (art ASCII, émoticône, syntaxe cryptique) ayant une alternative, cette alternative est-elle pertinente ?1.1.1Needs a person
13.7Sudden changes in brightness and flashing are used correctly. Dans chaque page web, les changements brusques de luminosité ou les effets de flash sont-ils correctement utilisés ?2.3.1Needs a person
13.8Moving or blinking content can be controlled by the user. Dans chaque page web, chaque contenu en mouvement ou clignotant est-il contrôlable par l’utilisateur ?2.2.1, 2.2.2Partly
  • blink
  • marquee
  • ibm-blink_css_review
  • ibm-marquee_elem_avoid
  • ibm-blink_elem_deprecated
Blink and marquee are caught; carousels and animations need a person.
13.9Content works in both portrait and landscape. Dans chaque page web, le contenu proposé est-il consultable quelle que soit l’orientation de l’écran (portrait ou paysage) (hors cas particuliers) ?1.3.4Automated
  • mobile-orientation-locked
  • ibm-element_orientation_unlocked
13.10Complex gestures have a simple-gesture alternative. Dans chaque page web, les fonctionnalités utilisables ou disponibles au moyen d’un geste complexe peuvent-elles être également disponibles au moyen d’un geste simple (hors cas particuliers) ?2.5.1Needs a person
13.11Single-pointer actions can be cancelled. Dans chaque page web, les actions déclenchées au moyen d’un dispositif de pointage sur un point unique de l’écran peuvent-elles faire l’objet d’une annulation (hors cas particuliers) ?2.5.2Needs a person
13.12Motion-based features have an alternative. Dans chaque page web, les fonctionnalités qui impliquent un mouvement de l’appareil ou vers l’appareil peuvent-elles être satisfaites de manière alternative (hors cas particuliers) ?2.5.4Needs a person

Using a scan in an RGAA programme

  • Before the audit. Fix what the scan finds first, so the audit is spent on judgement, not on missing labels and contrast.
  • Between audits. A statement stays valid for three years, and sites change weekly. A scan after each release, or the GitHub Action on every pull request, catches regressions before they reach users.
  • For the action plan. Findings come with the page, the element and a proposed code fix, which is what an annual action plan needs.

On the Team plan, each report's Compliance tab shows every RGAA criterion as non conforme (a failure found), to verify, no failure found, or needing a person, and never as conforme. It also drafts a déclaration d'accessibilité in DINUM's format, in French, listing the criteria the scan found failing and leaving the conformity status, the rate and everything only you know blank. See the compliance reporting overview and the field audit of how the scanner performs on real sites