Back to Remotion

RGAA 4.1.2 Audit Report — remotion.dev

packages/compliance/a11y/remotion.dev/RGAA-2026-04-14.md

4.0.45763.6 KB
Original Source

RGAA 4.1.2 Audit Report — remotion.dev

Audit date: 14.04.2026 Standard: RGAA 4.1.2 (maps to WCAG 2.1 AA / EN 301 549) URL: https://www.remotion.dev/ Test environment: Chrome + NVDA Method: Manual testing using browser developer tools to inspect the DOM and accessibility tree, as well as other tools: Axe DevTools, NVDA, Colour Contrast Analyser Reference: https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/ Auditor: Victoria (external) Overall result: 54% — Partially Conformant


Page Sample

The audit covered 13 pages representative of all content types and functionality on the site.

#Page nameURL
1Homehttps://www.remotion.dev/
2Contacthttps://www.remotion.dev/contact
3Bloghttps://www.remotion.dev/blog
4Creating a new projecthttps://www.remotion.dev/docs/
5Encoding Guidehttps://www.remotion.dev/docs/encoding
6Dockerizing a Remotion apphttps://www.remotion.dev/docs/docker
7Remotion Lambdahttps://www.remotion.dev/lambda
8Webhookshttps://www.remotion.dev/docs/lambda/webhooks
9Starting the Studiohttps://www.remotion.dev/docs/studio/
10Editor Starterhttps://www.remotion.dev/docs/editor-starter
11Remotion Timelinehttps://www.remotion.dev/docs/timeline
12Remotion Recorderhttps://www.remotion.dev/docs/recorder
13Remotion Converthttps://www.remotion.dev/convert

Compliance Summary

#ThemeCNCNARate
1Images15316.7%
2Frames0200%
3Colors12033.3%
4Multimedia27422.2%
5Tables404100%
6Links0200%
7Scripts23040%
8Mandatory Elements703100%
9Information Structure12133.3%
10Presentation of Information77050%
11Forms52671.4%
12Navigation83072.7%
13Content Access52571.4%
TOTAL43372654%

Legend: C = Conformant, NC = Non-Conformant, NA = Not Applicable.


Theme 1: Images (1.1–1.9)

#CriterionStatusObservations / Evidence
1.1Does each image conveying information have an alternative text?NCHomepage "Trusted by": four logos without text alternatives — for logos containing text ("musixmatch", "wistia") the alternative must contain all visible text. Footer: "Remotion" logo without `alt`. On /blog numerous elements lack alt, including informative images. Same issue on /lambda.
1.2Is each decorative image ignored by assistive technologies?NCOn /blog numerous `` elements lack alt, including decorative images.
1.3Is the alternative text of each informational image relevant?CPass
1.4Does each CAPTCHA image have an accessible alternative?NANo CAPTCHA present
1.5Does each CAPTCHA have an alternative access method?NANo CAPTCHA present
1.6Does each complex image have a detailed description?NC/blog "Lambda renders are now faster": numerous charts are complex images without sufficient textual alternatives. Provide descriptive summary and/or data-table equivalent.
1.7Is each detailed description relevant?NCSee 1.6
1.8Are text images replaced with styled text wherever possible?NC/blog under "What can I do with a multimedia library in the browser?" — image containing embedded text. Use real text and style with CSS.
1.9Is each image caption correctly associated with the image?NANo <figure>/<figcaption> present

Theme 1 result: 1 C, 5 NC, 3 NA


Theme 2: Frames (2.1–2.2)

#CriterionStatusObservations / Evidence
2.1Does each frame have a title?NC/contact: iframe without title attribute. Add e.g. "Map showing Remotion office location".
2.2Is the title of each frame relevant?NCSee 2.1. /blog: four iframes share title "YouTube video player" — not unique, doesn't describe what each video is about. Same issue on /docs/editor-starter.

Theme 2 result: 0 C, 2 NC, 0 NA


Theme 3: Colors (3.1–3.3)

#CriterionStatusObservations / Evidence
3.1Is information conveyed by color also available through another means?NC/lambda: links "in the README", "here", "Licensing" differ from surrounding static text by color only. Same on /convert "Mediabunny" link under "Free and no ads". On /convert ("Use a sample file") "Rotate" and "Mirror" toggle switches indicate selected option by color only. Add underline/border on hover/focus; expose selected state programmatically.
3.2Is the contrast between text color and background color sufficient?NCSite-wide: blue #0B84F3 on white #FFFFFF (3.7:1, required 4.5:1); white text on same blue also fails. Homepage links "Remotion Studio", "Remotion Player", "Remotion Editor Starter". Header: #969FAF "Search" placeholder on #EBEDF0 (2.3:1). Sticky "Ask AI" button: white on #8D8D8D (3.3:1). "Ask AI" dialog placeholders (2.5:1), "Made by CrawlChat" (2.5:1), hover state (1.5:1). /blog charts grey #A6A6A6 on white (2.4:1). /docs sidebar "Deprecated" #C2C5C9 (1.7:1), "Paid" #8F949B (3.1:1). /lambda grey #777777 (4.48:1). /convert footer "Powered by Mediabunny" pink #F6339A on #F8FAFC (3.4:1). /convert error text pink #FB2C7D (3.6:1).
3.3Is the contrast between non-text components and adjacent colors sufficient?CPass

Theme 3 result: 1 C, 2 NC, 0 NA


Theme 4: Multimedia (4.1–4.13)

#CriterionStatusObservations / Evidence
4.1Does each prerecorded audio-only media have a text transcript?NCHomepage "Use Cases" → "Year in review" tab: silent video inaccessible to blind users. Provide written description or audio description.
4.2Does each prerecorded synchronized media have captions?NCVideos lack captions.
4.3Does each prerecorded synchronized media have an audio description or text alternative?CPass
4.4For each prerecorded synchronized media with synchronized subtitles, are these subtitles relevant?NC/blog "We raised CHF 180k to simplify programmatic video!" — voiceover video with automatically generated captions that are inaccurate.
4.5Does each prerecorded synchronized media have, if necessary, a synchronized audio description?NC/blog videos contain visual information (texts, logos, mottos, speaker names) without media alternative. Blind users miss this. Similar issue on /docs/editor-starter.
4.6Is each audio description relevant?NCSee 4.5
4.7Does each live synchronized media have captions?NANo live media present
4.8Does each media player have a caption on/off control?CPass
4.9Does each media player have an audio description on/off control?NANo media player with audio description control
4.10Is each automatically triggered sound player controllable by the user?NANo automatically triggered sound player
4.11Does each media player provide all required controls?NANo interactive media player
4.12Are all media player controls correctly labeled?NCHomepage: control buttons in "Banger.Show" video and under "Demo" (play, sound, export), and "Newsletter" submit. Same with play/sound on /convert when "Use a sample file" is clicked.
4.13Does prerecorded media content that moves or blinks have a pause/stop mechanism?NCHomepage: 3 videos autoplay without pause/stop/hide. Same on /blog, /lambda. Disruptive for users with cognitive impairments. Provide a clear pause/stop/hide mechanism.

Theme 4 result: 2 C, 7 NC, 4 NA


Theme 5: Tables (5.1–5.8)

#CriterionStatusObservations / Evidence
5.1Does each complex data table have a summary?NANo complex table present
5.2Is the caption of each complex data table relevant?NANo complex table present
5.3Do layout tables linearize correctly?CLayout tables linearize properly
5.4For each data table that has a title, is this title correctly associated?NANo data table with title present
5.5Is the caption of each data table relevant?NANo data table with caption present
5.6Are headers for each data table correctly declared?CPass
5.7Are headers associated with each cell of a data table?CPass
5.8Are layout tables free of structural markup?CNo <table> markup used for layout

Theme 5 result: 4 C, 0 NC, 4 NA


#CriterionStatusObservations / Evidence
6.1Is the purpose of each link clear?NCHomepage "Trusted by": four images function as links but have no accessible name describing destination.
6.2Are identical links with the same destination consistently labeled?NC/lambda: several links with identical text "Learn more" and "Read docs" lead to different destinations. Link text must be distinguishable.

Theme 6 result: 0 C, 2 NC, 0 NA


Theme 7: Scripts (7.1–7.5)

#CriterionStatusObservations / Evidence
7.1Is each script, if necessary, compatible with assistive technologies?NCHomepage: video controls in "Banger.Show" and under "Demo" (play/sound/export) and "Newsletter" submit lack accessible names. "Company License" sliders (<input>) lack accessible names. "Company License" toggles that expand/hide content implemented as <div> elements without roles/names — should be <button> (or role="button") with aria-expanded. Same toggle issue on /convert. /docs: arrow button next to "Copy page" has no accessible name.
7.2Is each script controllable by keyboard and any pointing device?NCHomepage "Company License" toggle sliders receive keyboard focus even when hidden — collapsed-section inner elements should be excluded from tab order. Homepage "Company License" "i" icon tooltips not keyboard-accessible. Homepage "Company License" toggle switches not keyboard-accessible; same on /convert. Site-wide: "Ask AI" button not keyboard-accessible. Homepage "Demo" drag-and-drop widgets not keyboard-accessible.
7.3Does each script avoid keyboard traps?CNo keyboard trap
7.4Does each script that triggers context changes warn the user?CPass
7.5Are status messages correctly rendered by assistive technologies?NC/docs: "Copy page" → "Copied" message not announced; add aria-live="polite". /docs/lambda/webhooks: "Send success/timeout/error" wait spinner not accessible. /convert: "Convert" progress ("xx% is converted") not announced.

Theme 7 result: 2 C, 3 NC, 0 NA


Theme 8: Mandatory Elements (8.1–8.10)

#CriterionStatusObservations / Evidence
8.1Does each web page have a valid DOCTYPE?CPass
8.2Does each web page have a language attribute?CPass
8.3Is the language attribute pertinent?CPass
8.4Are language changes within page content marked up?NANo foreign language content requiring lang attribute change present
8.5Is the language attribute for each language change pertinent?NANo foreign language content requiring lang attribute change present
8.6Does each web page have a relevant page title?CPass
8.7Does each web page have no duplicate IDs?CPass
8.8Is each HTML tag used according to its specification?CPass
8.9Are HTML tags not used solely for presentational purposes?CPass
8.10Is the source code direction relevant?NANo RTL content

Theme 8 result: 7 C, 0 NC, 3 NA


Theme 9: Information Structure (9.1–9.4)

#CriterionStatusObservations / Evidence
9.1Is the information structured by headings?NCHomepage: "Free License", "Company License", "Enterprise License" visually headings but not marked up. Footer: "Remotion", "Community", "More". Homepage: "Questions about our license?", "Get help with your Remotion project", "Editor Starter". /blog "Remotion Editor Starter": many headings use <strong> ("Demo", "Before you buy", "Buy") — <strong> is for emphasis, not headings. /lambda: "15 sec1", "12 min", "200x", "from $0.01" use <h1> for styling only — should be <p> styled with CSS. /docs/encoding: many <em> used for styling only — use <i> or CSS.
9.2Are landmarks present and relevant?CPass
9.3Is each list correctly structured?NCHomepage: 4-item list under "Free License" lacks <ul>/<li>. Same under "Company License" and "Enterprise License". /blog list under "Easier data-driven videos" lacks list markup; same on /lambda. /lambda "Build video apps" cards: <hr> elements placed directly inside <ul> (not allowed as children of list) — use CSS to create visual separators.
9.4Are quotations correctly marked up?NANo quotations present

Theme 9 result: 1 C, 2 NC, 1 NA


Theme 10: Presentation of Information (10.1–10.14)

#CriterionStatusObservations / Evidence
10.1Is the information still visible when stylesheets are disabled?CPass
10.2Does the content remain visible without stylesheets?CPass
10.3Is the reading order consistent when stylesheets are disabled?CPass
10.4Can text be resized to 200% without loss of content or functionality?NC/convert at 1280×1024 and 200% zoom: data under "video-1m.mp4" becomes invisible. Same after clicking "Show details".
10.5Are CSS declarations for background colors and fonts used correctly?CPass
10.6Is each link in a block of text visually distinguishable from surrounding text?NC/lambda: links "in the README", "here", "Licensing" differ from surrounding static text by color only. Same on /convert with "Mediabunny" link under "Free and no ads".
10.7On every web page, for every element that receives focus, is the focus indicator visible?NCSite-wide focus not visible on "$ npx create-video@latest" button, "export" button in Demo video, "submit" under "Newsletter". Same on /docs/lambda/webhooks with "Send success/timeout/error". /convert: "Choose file", "Use a sample file", "Load from URL". /docs: "Copy page" and adjacent arrow button.
10.8Is hidden content correctly ignored by assistive technologies?CPass
10.9Is information never given solely through shape, size, or visual location?CPass
10.10Is information never given solely through color (for presentation)?NCSee 3.1 — links distinguished only by color on some pages.
10.11Can content be read without horizontal scrolling at 320 CSS px width?NC/convert at 1280×1024 and 200% zoom: data under "video-1m.mp4" becomes invisible.
10.12Does text spacing adjustments cause any loss of content or functionality?CPass
10.13Can additional content appearing on hover or focus be dismissed without losing context?NCMain menu submenus expand on hover and overlap other content — no way to close without moving pointer/focus. Homepage "Company License" "i" icons ("$250 Mux credits", "Remotion for Creators", "Remotion for Automators") show tooltips on hover that overlap page content; Escape key not handled.
10.14Is additional content appearing on hover or focus controllable by the user?NCHomepage "Company License" "i" icons not keyboard-accessible. Use focusable control (e.g. <button>) as tooltip trigger; show tooltip on both hover and keyboard focus.

Theme 10 result: 7 C, 7 NC, 0 NA


Theme 11: Forms (11.1–11.13)

#CriterionStatusObservations / Evidence
11.1Does each form field have a label?NCHomepage "Newsletter" input with placeholder [email protected] has no persistent label — placeholder disappears on typing. Same on /convert "Load from URL" dialog. Homepage "Company License" sliders (<input>) have no accessible names. /docs/lambda/webhooks: two input fields; visible labels not programmatically associated.
11.2Is each label correctly associated with its form field pertinent?NCSee 11.1. On /convert ("Use a sample file"), the "Resample" toggle opens a "Sample Rate" combobox whose label is not correctly associated.
11.3Are similar labels consistent?CPass
11.4Are form fields of the same type grouped together?NANo group inputs present
11.5Is the grouping legend relevant?NANo group inputs present
11.6Is the type of grouping consistent for all groups of the same nature?NANo group inputs present
11.7Is each grouping legend relevant in each form?NANo group inputs present
11.8Are the required fields indicated?NANo required fields present
11.9Can the purpose of each input be programmatically determined?CPass
11.10Are error messages relevant and linked to the field in error?NANo fields with error messages
11.11Does each error message suggest a correction?CPass
11.12Is there a mechanism to review data before submitting legal/financial transactions?CPass
11.13Is accessible help available when filling in forms?CPass

Theme 11 result: 5 C, 2 NC, 6 NA


Theme 12: Navigation (12.1–12.11)

#CriterionStatusObservations / Evidence
12.1Is a skiplink present on each page?CPass
12.2Is there more than one way to find a page within the site?CPass
12.3Is the navigation consistent across pages?CPass
12.4Is active page indicated?CPass
12.5Are multiple navigation sets identifiable?CPass
12.6Are skip links and navigation links visible when they receive keyboard focus?CPass
12.7Do skip links work on all pages?CPass
12.8Is the tabulation order consistent with the logical reading order of the page?NCHomepage "Company License" toggle switches open sliders that receive focus even when not visible — exclude collapsed-section inner elements from tab order. Homepage: after "Remotion for Automators" slider, focus moves to invisible interactive element. Homepage: double focus on "Schedule a call", "Write an email", "Purchase" and other links (a nested <button> inside <a>); same on /contact with "Contact via email", "Schedule evaluation call", "Join Discord". /blog code sections: "Copy" buttons focusable but invisible on focus; same on /docs/ and other code-containing pages. Mobile menu opened from hamburger on / lets focus escape to underlying page — trap focus within the open menu.
12.9Is navigation fully operable by keyboard?NCSee 7.1 and 7.2
12.10Is single-character keyboard shortcuts manageable?NC/blog "Remotion Editor Starter": embedded YouTube player has single-key shortcuts (e.g. k play/pause, m mute) that interfere with screen readers and can cause issues for voice-control and for users who press keys by accident.
12.11Is content accessible in both portrait and landscape orientation?CPass

Theme 12 result: 8 C, 3 NC, 0 NA


Theme 13: Content Access (13.1–13.12)

#CriterionStatusObservations / Evidence
13.1Does the user have control over any session time limits?NANo visible timeout mechanism present
13.2Does the user have control over any time-based page refresh?CPass
13.3Are links that open in a new window or tab indicated?CPass
13.4Are the format and size of downloadable documents indicated?NANo files to download present
13.5Are downloadable documents accessible or is an accessible alternative provided?NANo files to download present
13.6Does cryptic content (ASCII art, emoticons, cryptic syntax) have text alternative?NC/docs/encoding: under heading "Audio codec", "Default" column shows icons with checkboxes. Informative but no textual alternative.
13.7Is content available without reliance on CSS-only content property?CPass
13.8Can moving or blinking content be paused, stopped or hidden?NCHomepage: videos autoplay with no pause/stop/hide mechanism. Same with animations on /blog and /lambda. Disruptive for users with cognitive impairments.
13.9Is the content viewable regardless of the screen orientation (portrait or landscape)?CPass
13.10Is there an alternative to complex gestures (pinch, swipe, drag)?NANo complex gestures present
13.11Does the page avoid automatic audio playback?CPass
13.12Is there an alternative to motion activation?NANo device motion features present

Theme 13 result: 5 C, 2 NC, 5 NA


Priority Remediation Plan

PriorityRGAA criterionRecommended action
Critical3.2Fix text contrast site-wide: change primary blue #0B84F3 to a darker shade meeting 4.5:1; fix placeholder, sidebar, and button text contrasts.
Critical7.1Add accessible names (aria-label) to all interactive controls: video player buttons, toggle switches, dialogs, sliders. Use semantic <button> with aria-expanded.
Critical4.12, 4.13, 13.8Add accessible names to media player controls; provide pause/stop mechanism for auto-playing videos and animations.
High11.1, 11.2Associate visible persistent labels with all form inputs; replace placeholder-only labels; programmatically link labels via <label> + for/id.
High7.2Ensure all interactive elements are keyboard operable: toggle switches, color pickers, drag-and-drop widgets, "Ask AI" button.
High10.7Ensure visible keyboard focus indicator on all interactive elements: buttons, links, and custom controls across all pages.
High12.8Fix tab order: remove hidden elements from tab sequence; eliminate nested interactive elements (<button> inside <a>); trap focus in modal dialogs.
Medium9.1, 9.3Use proper heading elements instead of <strong>; remove non-heading content from <h1> tags; use correct list markup (<ul>/<li>).
Medium3.1, 10.6, 10.10Ensure links in text blocks have underline or non-color visual indicator; maintain 3:1 contrast against surrounding text.
Medium7.5Add aria-live regions for dynamic status messages: copy confirmations, progress indicators, loading spinners.
Medium10.4, 10.11Fix content visibility at 200% and 400% zoom and 320px width; ensure text reflow at all zoom levels.
Medium2.1, 2.2Add unique, descriptive title attributes to all iframes.
Medium6.1, 6.2Provide descriptive accessible names for image links; differentiate link text for links leading to different destinations.
Low1.1Add meaningful alt text to all informative images; add empty alt="" to decorative images; ensure footer logo has alt attribute on all pages.
Low4.1–4.6Add text transcripts and audio descriptions for multimedia content; fix auto-generated captions.
Low1.6–1.8Provide detailed descriptions for complex images (charts); replace text images with styled text.
Low10.13, 10.14, 12.10, 13.6Allow tooltip dismissal via Escape key; manage single-key shortcuts in embedded players; add text alternatives for cryptic content.

Declaration

Based on this audit, www.remotion.dev achieves 54% compliance with RGAA v.4.1.2 criteria, qualifying as Partially Conformant.

Primary gaps are with videos and frames, link accessibility, images, color contrast, and accessibility issues in input fields and other interactive elements. The application performs well on tables, mandatory elements, and content access.

This report was prepared on the basis of RGAA v.4.1.2 criteria and tests. Auditor: Victoria (external) — Chrome + NVDA Reference: https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/