Back to Remotion

Voluntary Product Accessibility Template (VPAT)

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

4.0.45722.1 KB
Original Source

Voluntary Product Accessibility Template (VPAT)

Date: April 14, 2026

VPAT 2.4 Rev — WCAG 2.1 Edition

Product Information

FieldValue
Product Nameremotion.dev
Product VersionBranch main
Report Date2026-04-14
Contactremotion.dev/contact
Evaluation MethodsExternal audit (Chrome + NVDA) by Victoria; DOM / accessibility-tree inspection; Axe DevTools; Colour Contrast Analyser
Applicable StandardWCAG 2.1 Level AA

Pages Audited

#PageURL
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

Conformance Level Key

TermDefinition
SupportsFully meets the criterion
Partially SupportsSome content meets, some gaps remain
Does Not SupportSignificant failures
Not ApplicableFeature or content type does not exist in the product

Table A: WCAG 2.1 Level A

Principle 1: Perceivable

1.1.1 Non-text Content (Level A)

Conformance Level: Does Not Support

Remarks:

  • Homepage "Trusted by": four logos (incl. text-bearing "musixmatch" and "wistia") have no text alternatives.
  • Footer: "Remotion" logo `` missing alt attribute on all pages.
  • /blog: numerous `` elements lack alt, including informative images. Same issue on /lambda.
  • /blog "Lambda renders are now faster": charts are complex images without textual summary or data-table equivalent.
  • /blog "What can I do with a multimedia library in the browser?": image with embedded text instead of real styled text.

1.2.1 Audio-only and Video-only (Prerecorded) (Level A)

Conformance Level: Does Not Support

Remarks:

  • Homepage "Use Cases" → "Year in review" tab: silent video with no text description or alternative for blind users.

1.2.2 Captions (Prerecorded) (Level A)

Conformance Level: Does Not Support

Remarks:

  • Prerecorded synchronized videos lack captions.
  • /blog "We raised CHF 180k to simplify programmatic video!": voiceover video relies on auto-generated captions that are inaccurate.

1.2.3 Audio Description or Media Alternative (Prerecorded) (Level A)

Conformance Level: Does Not Support

Remarks:

  • /blog videos contain visual information (texts, logos, mottos, speaker names) with no media alternative.
  • Similar issue on /docs/editor-starter.

1.3.1 Info and Relationships (Level A)

Conformance Level: Partially Supports

Remarks:

  • Semantic landmarks present.
  • Homepage: "Free License", "Company License", "Enterprise License" and footer headings "Remotion", "Community", "More" visually styled as headings but not marked up as heading elements.
  • /blog "Remotion Editor Starter": headings like "Demo", "Before you buy", "Buy" use <strong> instead of heading elements.
  • /lambda: "15 sec1", "12 min", "200x", "from $0.01" are non-heading content wrapped in <h1> for styling.
  • /docs/encoding: <em> used for italic styling of non-emphasised content.
  • Homepage: 4-item list under "Free License", "Company License", "Enterprise License" lacks <ul>/<li> markup. /blog and /lambda list under "Easier data-driven videos" lacks list markup. /lambda "Build video apps": <hr> elements placed directly inside <ul> (invalid children).
  • Form inputs on homepage "Newsletter" and /convert "Load from URL" dialog use placeholder only — no persistent <label>.
  • /docs/lambda/webhooks: visible labels not programmatically associated with inputs.
  • /convert "Sample Rate" combobox label not correctly associated.

1.3.2 Meaningful Sequence (Level A)

Conformance Level: Supports

Remarks:

  • DOM order matches visual order across audited pages.

1.3.3 Sensory Characteristics (Level A)

Conformance Level: Supports

Remarks:

  • Instructions do not rely solely on sensory characteristics.

1.4.1 Use of Color (Level A)

Conformance Level: Does Not Support

Remarks:

  • /lambda links "in the README", "here", "Licensing" differ from surrounding text only by color.
  • /convert "Mediabunny" link under "Free and no ads": color-only distinction.
  • /convert "Rotate" and "Mirror" toggle switches indicate selected state by color only; state not programmatically exposed either.

1.4.2 Audio Control (Level A)

Conformance Level: Supports

Remarks:

  • Site does not autoplay audio.

Principle 2: Operable

2.1.1 Keyboard (Level A)

Conformance Level: Does Not Support

Remarks:

  • Homepage "Company License" toggle switches: not keyboard-operable (<div> with click handlers). Same on /convert.
  • Homepage "Company License" "i" tooltip triggers not keyboard-accessible.
  • Site-wide "Ask AI" button not keyboard-operable.
  • Homepage "Demo" drag-and-drop widgets not keyboard-operable.
  • "Company License" sliders (<input>) lack accessible names — purpose not conveyed.

2.1.2 No Keyboard Trap (Level A)

Conformance Level: Supports

Remarks:

  • No keyboard traps detected.

2.1.4 Character Key Shortcuts (Level A)

Conformance Level: Does Not Support

Remarks:

  • /blog "Remotion Editor Starter": embedded YouTube player uses single-character keyboard shortcuts (k play/pause, m mute) with no disable/remap mechanism.

2.2.1 Timing Adjustable (Level A)

Conformance Level: Not Applicable

Remarks:

  • No time limits on content.

2.2.2 Pause, Stop, Hide (Level A)

Conformance Level: Does Not Support

Remarks:

  • Homepage: 3 videos autoplay with no pause/stop/hide mechanism. Same on /blog and /lambda animations.

2.3.1 Three Flashes or Below Threshold (Level A)

Conformance Level: Supports

Remarks:

  • No content flashes more than three times per second.

2.4.1 Bypass Blocks (Level A)

Conformance Level: Supports

Remarks:

  • Skip link present on all pages.

2.4.2 Page Titled (Level A)

Conformance Level: Supports

Remarks:

  • All audited pages have descriptive <title> elements.

2.4.3 Focus Order (Level A)

Conformance Level: Does Not Support

Remarks:

  • Homepage "Company License" collapsed sliders still receive keyboard focus.
  • Homepage: after "Remotion for Automators" slider, focus moves to an invisible interactive element.
  • Homepage and /contact: double focus stops on "Schedule a call", "Write an email", "Purchase", "Contact via email", "Schedule evaluation call", "Join Discord" — <button> nested inside <a>.
  • Mobile hamburger menu on /: focus can escape to the underlying page — focus is not trapped inside the open menu.

2.4.4 Link Purpose (In Context) (Level A)

Conformance Level: Does Not Support

Remarks:

  • Homepage "Trusted by": four image-links have no accessible name.
  • /lambda: multiple links with identical text "Learn more" / "Read docs" lead to different destinations.

2.5.1 Pointer Gestures (Level A)

Conformance Level: Not Applicable

Remarks:

  • No multi-point or path-based gestures required.

2.5.2 Pointer Cancellation (Level A)

Conformance Level: Supports

Remarks:

  • Actions fire on up-event.

2.5.3 Label in Name (Level A)

Conformance Level: Supports

Remarks:

  • Visible labels match accessible names where present.

2.5.4 Motion Actuation (Level A)

Conformance Level: Not Applicable

Remarks:

  • No motion-actuated features.

Principle 3: Understandable

3.1.1 Language of Page (Level A)

Conformance Level: Supports

Remarks:

  • <html lang="en"> on all audited pages.

3.2.1 On Focus (Level A)

Conformance Level: Supports

Remarks:

  • No context changes on focus.

3.2.2 On Input (Level A)

Conformance Level: Supports

Remarks:

  • No unexpected context changes on input.

3.3.1 Error Identification (Level A)

Conformance Level: Not Applicable

Remarks:

  • No fields with visible error messages in audit sample.

3.3.2 Labels or Instructions (Level A)

Conformance Level: Partially Supports

Remarks:

  • See 1.3.1. Placeholder-only inputs on homepage "Newsletter" and /convert "Load from URL" dialog. /convert "Sample Rate" combobox label not associated.

Principle 4: Robust

4.1.1 Parsing (Level A)

Conformance Level: Partially Supports

Remarks:

  • Nested interactive elements (<button> inside <a>) on homepage and /contact are invalid HTML.

4.1.2 Name, Role, Value (Level A)

Conformance Level: Does Not Support

Remarks:

  • Homepage video controls ("Banger.Show", Demo play/sound/export) and "Newsletter" submit have no accessible names.
  • Homepage "Company License" expand/collapse controls are <div> without role, name, or aria-expanded. Same on /convert.
  • /docs: "Copy page" adjacent arrow button has no accessible name.
  • /contact iframe has no title attribute.
  • /blog: four YouTube iframes share the generic title="YouTube video player". Same issue on /docs/editor-starter.

4.1.3 Status Messages (Level A — WCAG 2.1)

(Included here for completeness; see Table B.)


Table B: WCAG 2.1 Level AA

Principle 1: Perceivable

1.2.4 Captions (Live) (Level AA)

Conformance Level: Not Applicable

Remarks:

  • No live audio/video content.

1.2.5 Audio Description (Prerecorded) (Level AA)

Conformance Level: Does Not Support

Remarks:

  • /blog videos contain visual information (texts, logos, speaker names) without audio description. Similar on /docs/editor-starter.

1.3.4 Orientation (Level AA)

Conformance Level: Supports

Remarks:

  • No orientation lock.

1.3.5 Identify Input Purpose (Level AA)

Conformance Level: Supports

Remarks:

  • Input purposes can be programmatically determined (audit criterion 11.9 — Pass).

1.4.3 Contrast (Minimum) (Level AA)

Conformance Level: Does Not Support

Remarks:

  • Site-wide brand blue #0B84F3 on white — 3.7:1, fails 4.5:1. White text on same blue also fails. Affects homepage links "Remotion Studio", "Remotion Player", "Remotion Editor Starter", and many others.
  • Homepage header: "Search" placeholder #969FAF on #EBEDF02.3:1.
  • Site-wide sticky "Ask AI" button: white on #8D8D8D3.3:1.
  • "Ask AI" dialog: placeholder and "Made by CrawlChat" 2.5:1; hover state 1.5:1.
  • /blog "Lambda renders are now faster" charts: grey #A6A6A6 on white — 2.4:1.
  • /docs sidebar: "Deprecated" #C2C5C9 on white — 1.7:1; "Paid" #8F949B on white — 3.1:1.
  • /lambda: grey #7777774.48:1 (marginal, fails at 4.5:1).
  • /convert footer: "Powered by Mediabunny" pink #F6339A on #F8FAFC3.4:1.
  • /convert error text: pink #FB2C7D on white — 3.6:1.

1.4.4 Resize Text (Level AA)

Conformance Level: Partially Supports

Remarks:

  • /convert at 1280×1024 and 200% zoom: data under "video-1m.mp4" becomes invisible. Same after clicking "Show details".

1.4.5 Images of Text (Level AA)

Conformance Level: Partially Supports

Remarks:

  • /blog "What can I do with a multimedia library in the browser?": image containing embedded text. Use real text with CSS styling.

1.4.10 Reflow (Level AA)

Conformance Level: Does Not Support

Remarks:

  • /convert at 1280×1024 and 200% zoom: content becomes invisible.

1.4.11 Non-text Contrast (Level AA)

Conformance Level: Supports

Remarks:

  • UI-component contrast meets 3:1 minimum (audit criterion 3.3 — Pass).

1.4.12 Text Spacing (Level AA)

Conformance Level: Supports

Remarks:

  • Content adapts to increased text spacing without loss of information.

1.4.13 Content on Hover or Focus (Level AA)

Conformance Level: Does Not Support

Remarks:

  • Main-menu submenus expand on hover and overlap page content with no Escape dismissal.
  • Homepage "Company License" "i" tooltips ("$250 Mux credits", "Remotion for Creators", "Remotion for Automators") appear on hover only, overlap content, and cannot be dismissed via Escape.
  • Same tooltips are not keyboard-accessible (can't be triggered via focus).

Principle 2: Operable

2.4.5 Multiple Ways (Level AA)

Conformance Level: Supports

Remarks:

  • More than one way to locate a page (audit criterion 12.2 — Pass).

2.4.6 Headings and Labels (Level AA)

Conformance Level: Partially Supports

Remarks:

  • Most visible headings are descriptive, but several ("Free License", "Company License", "Enterprise License", footer "Remotion", "Community", "More", /blog Demo/Before you buy/Buy) are not marked up as headings — see 1.3.1.
  • Placeholder-only labels do not provide persistent accessible names (see 1.3.1 / 3.3.2).

2.4.7 Focus Visible (Level AA)

Conformance Level: Does Not Support

Remarks:

  • Site-wide focus indicator not visible on "$ npx create-video@latest" button, "export" button in Demo video, "submit" under "Newsletter".
  • /docs/lambda/webhooks: "Send success", "Send timeout", "Send error" buttons — no visible focus.
  • /convert: "Choose file", "Use a sample file", "Load from URL" — no visible focus.
  • /docs: "Copy page" and adjacent arrow button — no visible focus.
  • /blog code blocks and /docs/: "Copy" buttons focusable but invisible when focused.

Principle 3: Understandable

3.1.2 Language of Parts (Level AA)

Conformance Level: Not Applicable

Remarks:

  • Content is entirely in English.

3.2.3 Consistent Navigation (Level AA)

Conformance Level: Supports

Remarks:

  • Navigation consistent across pages.

3.2.4 Consistent Identification (Level AA)

Conformance Level: Supports

Remarks:

  • Components with the same function use consistent labels.

3.3.3 Error Suggestion (Level AA)

Conformance Level: Supports

Remarks:

  • Error messages suggest corrections where shown (audit criterion 11.11 — Pass).

3.3.4 Error Prevention (Legal, Financial, Data) (Level AA)

Conformance Level: Supports

Remarks:

  • Mechanism to review data before submitting legal/financial transactions present (audit criterion 11.12 — Pass).

Principle 4: Robust

4.1.3 Status Messages (Level AA)

Conformance Level: Does Not Support

Remarks:

  • /docs: "Copy page" → "Copied" message not announced; no aria-live.
  • /docs/lambda/webhooks: "Send success/timeout/error" wait spinners not exposed.
  • /convert: "Convert" progress ("xx% is converted") not announced.

Accessibility Statement

No public accessibility statement currently exists for remotion.dev. One should be published declaring conformance goals, known limitations, and contact information for accessibility feedback.


Summary of Issues

Does Not Support

WCAGIssueAffected Pages
1.1.1Missing alt on informative images, logos, footer logo, blog images/, /blog, /lambda, /docs/editor-starter
1.2.1Silent video without text alternative/
1.2.2Videos without captions; inaccurate auto-captions/blog
1.2.3 / 1.2.5Videos with visual information but no audio description or media alternative/blog, /docs/editor-starter
1.4.1Color-only link/state differentiation/lambda, /convert
1.4.3Multiple contrast failures (brand blue, placeholders, "Ask AI", chart greys)Site-wide
1.4.10Content invisible at 200% zoom/convert
1.4.13Tooltips not dismissible, not keyboard-triggerable/ (Company License), main menu
2.1.1Toggle switches, drag-and-drop, "Ask AI" not keyboard-operable/, /convert
2.1.4Single-character shortcuts (YouTube k, m) with no remap/blog
2.2.2Autoplay videos with no pause/stop/hide/, /blog, /lambda
2.4.3Focus on hidden elements; nested <button> in <a>; focus escapes mobile menu/, /contact
2.4.4Image-links and duplicate "Learn more" / "Read docs" lack clear purpose/, /lambda
2.4.7Focus indicator not visible on many buttons/, /docs, /docs/lambda/webhooks, /convert, /blog
4.1.2Missing names/roles/states on video controls, toggles, dialogs, iframes/, /blog, /contact, /docs, /convert
4.1.3Status messages ("Copied", progress, spinners) not announced/docs, /convert, /docs/lambda/webhooks

Partially Supports

WCAGIssueAffected Pages
1.3.1Headings as <strong> or non-heading <h1>; lists missing <ul>/<li>; placeholder-only input labels/, /blog, /lambda, /docs/encoding, /docs/lambda/webhooks, /convert
1.4.4Text / data invisible at 200% zoom/convert
1.4.5Image containing embedded text/blog
2.4.6Visually styled headings/labels not marked up (see 1.3.1)/, /blog
3.3.2Placeholder-only input labels/, /convert
4.1.1Invalid nested interactive elements (<button> inside <a>)/, /contact

Other

WCAGIssueAffected Pages
1.1.1Complex charts without data-table equivalent or detailed description/blog
4.1.2 (iframe)iframe missing title; duplicate generic title="YouTube video player"/contact, /blog, /docs/editor-starter
1.1.1 (cryptic)Checkbox icons in "Default" column without text alternative/docs/encoding

Overall

Based on the RGAA 4.1.2 audit (14 April 2026), remotion.dev achieves 54% compliance, qualifying as Partially Conformant with WCAG 2.1 Level AA. Primary gaps: videos, frames, link accessibility, images, color contrast, input-field labelling, and keyboard/screen-reader support for interactive controls.