Skip to content

Introduction

RGAA stands for Référentiel Général d’Amélioration de l’Accessibilité — the French national reference framework for digital accessibility. It is published and maintained by DINUM (Direction Interministérielle du Numérique), the French government’s digital directorate.

RGAA v4.1.2 is the current version. It is the official French transposition of the international WCAG 2.1 Level A and AA standard (Web Content Accessibility Guidelines), supplemented with additional French methodological requirements for verifying conformance.

RGAA defines 106 criteria grouped into 13 themes. Each criterion has one or more technical tests that specify exactly how to verify compliance. When your site passes all applicable criteria, it is considered conformant with RGAA — and by extension, with WCAG 2.1 A/AA and the European standard EN 301 549.

#ThemeWhat it covers
1ImagesAlt text, decorative images, complex image descriptions
2Frames<iframe> titles, accessible frame content
3ColorsContrast ratios, color not used as the sole information carrier
4MultimediaVideo captions, audio transcripts, audio descriptions
5TablesHeaders, captions, layout vs. data tables
6LinksLink text clarity, title attributes
7ScriptsFocus management, ARIA updates, keyboard trap prevention
8Mandatory elements<html lang>, <title>, unique id attributes
9StructureHeading hierarchy, landmark regions, lists
10PresentationVisible focus, text resize without loss, CSS-only information
11FormsLabels, error messages, required fields, ARIA compliance
12NavigationSkip links, consistent navigation across pages
13ConsultationTime limits, flashing content, reading order

RGAA compliance is not optional in France. It is established by Loi n°2016-1321 pour une République numérique (October 7, 2016) and its implementing decree (Décret n°2019-768). These texts require that certain organizations comply with RGAA and publish an accessibility declaration (déclaration d’accessibilité) on every public-facing digital service.

Public sector — mandatory

All French state services, local authorities (collectivités territoriales), public establishments (établissements publics), and operators of services of general economic interest (SIEG) — regardless of size or revenue.

Large private companies — mandatory

Private companies whose annual revenue exceeds 250 million euros for the three previous fiscal years in France are also subject to the full RGAA obligations.

Organizations subject to RGAA must:

  1. Audit their digital services against the 106 criteria, using the official RGAA methodology
  2. Publish an accessibility declaration (déclaration d’accessibilité) on each digital service
  3. Provide a contact mechanism so users can report accessibility barriers and request accessible alternatives
  4. Submit a multi-year accessibility schema (schéma pluriannuel) to the competent authority

The accessibility declaration must disclose:

  • Your compliance rate (percentage of applicable criteria validated)
  • Which criteria are not met and why
  • Which criteria are exempt and the justification
  • The date of the last audit and the method used
  • A contact mechanism for users to report issues

Non-compliance may result in:

  • Formal notice from the competent authority (ARCOM for private sector, DINUM for public sector)
  • Administrative fines of up to 20,000 € per non-compliant service (private sector)
  • Public naming on the DINUM monitoring website (observatoire de l’accessibilité)

Eqo is a two-phase RGAA v4.1.2 accessibility analyzer built specifically for Next.js projects. It integrates into your development workflow and CI/CD pipeline to catch accessibility regressions before they reach production.

Eqo parses your Next.js source files (.tsx, .jsx, .ts, .js) using a Babel AST parser running in a parallel worker pool. Without launching a browser, it detects issues directly in your component code:

RGAA criterionWhat Eqo detects statically
1.1<img> without an alt attribute
1.2<img alt=""> that may be incorrectly decorative
2.1<iframe> without a title attribute
5.4<table> without <th> or <caption>
6.1<a> with no text content
8.2Duplicate id attributes in a single file
8.3Missing lang attribute on <html>
8.5Missing <title> element in the document
9.1Broken heading hierarchy (e.g., <h3> before <h2>)
9.3Unordered or ordered list items outside a list container
11.1<input> without an associated <label>
11.9<button> with no accessible name

Performance: Static analysis runs across all your source files in parallel using Piscina worker threads. Expect ~50 ms per file. An incremental cache (SHA-256 file hashing) skips unchanged files on subsequent runs, making CI reruns dramatically faster.

Phase 2 — Runtime analysis (Playwright + axe-core)

Section titled “Phase 2 — Runtime analysis (Playwright + axe-core)”

Eqo launches a headless Chromium browser using Playwright, navigates to each URL defined in your configuration, and runs the axe-core accessibility engine on the fully rendered DOM. This catches issues that only exist at runtime:

RGAA themeWhat Playwright detects
3 — ColorsColor contrast failures on rendered text and UI components
7 — ScriptsARIA live region updates, focus management, keyboard traps
10 — PresentationVisible focus indicators, text spacing, reflow
12 — NavigationSkip link presence, consistent navigation structure
13 — ConsultationDuplicate IDs across the rendered DOM

axe-core results are mapped from axe’s internal rule IDs back to their RGAA criterion identifiers, so your report always speaks RGAA — not axe-core internals.


Some RGAA criteria assess the quality or relevance of content — not merely its presence. A tool can detect that an <img> has an alt attribute. It cannot judge whether that alternative text is accurate, descriptive, and contextually appropriate.

CriterionWhy it requires a human
1.3Is the alt text relevant and meaningful, not just a filename or “image”?
1.6Is the detailed description of a complex image accurate and complete?
2.2Is the title of each frame meaningful, not just “iframe” or “content”?
6.1Is each link text explicit enough to be understood out of context?

Eqo detects the absence of these attributes. It cannot evaluate their quality.

CriterionWhy it requires a human
4.1Does each pre-recorded video have a synchronized text caption?
4.2Is the caption accurate and relevant to the spoken content?
4.3Does audio content have a complete text transcript?
4.9Does each audio-only file have a full, accurate transcription?
CriterionWhy it requires a human
13.1Can users control or disable all time limits?
13.7Does any content flash more than 3 times per second (seizure risk)?
13.8Can users pause, stop, or hide all moving or auto-updating content?

These criteria involve temporal and behavioral judgments that cannot be reliably detected by static or runtime analysis.

Every Eqo report clearly distinguishes three outcome states for each criterion:

StatusMeaning
validatedAll automated checks passed for this criterion
invalidatedAt least one automated check failed — action required
needs-reviewCannot be fully assessed automatically — manual review required
not-applicableThe criterion does not apply to any audited page (or is exempted)

When you publish your accessibility declaration, needs-review criteria must be audited manually and their status documented. The needs-review count is excluded from the automated compliance rate calculation — which is why a 100% Eqo compliance rate is not the same as a fully conformant site.


RGAA v4.1.2 is the French technical implementation of WCAG 2.1 Level A and AA. Every RGAA criterion references one or more WCAG 2.1 success criteria.

Practical implications:

  • Passing RGAA ≈ Passing WCAG 2.1 A/AA (with additional French methodological requirements)
  • Eqo’s reports include the wcag field on every issue, enabling cross-referencing with the international standard
  • EN 301 549 (the European accessibility standard for ICT, required for public procurement in EU member states) mandates WCAG 2.1 A/AA conformance — RGAA v4.1.2 conformance satisfies that requirement

This means Eqo’s output is directly useful for organizations that need to satisfy both French domestic law and European procurement requirements simultaneously.