{"id":38047,"date":"2025-07-28T10:23:17","date_gmt":"2025-07-28T17:23:17","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=38047"},"modified":"2025-09-02T11:04:17","modified_gmt":"2025-09-02T18:04:17","slug":"eaa-compliant-video-experiences","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences","title":{"rendered":"Building EAA-Compliant Video Experiences With Cloudinary"},"content":{"rendered":"\n<p>In our <a target=\"_blank\" href=\"https:\/\/www.dropbox.com\/scl\/fi\/npu76hp8vpztzro5x0dhi\/Testing-Your-Videos-for-Accessibility-Failures-And-Fixing-Them-Fast.paper?rlkey=n87payxdwl0ssdr3180ouml1v&amp;dl=0\" rel=\"noreferrer noopener\">previous guide<\/a> on testing videos for accessibility, we audited our content library and looked for gaps like missing captions, inaccessible players, unlabeled elements, and others. But quick fixes aren\u2019t enough if you\u2019re building or embedding video players at scale.<\/p>\n\n\n\n<p>This guide is for teams that want to build an EAA-compliant <a href=\"https:\/\/cloudinary.com\/guides\/video\/video-infrastructure\">video infrastructure<\/a> from the ground up. Whether you\u2019re working inside a headless CMS, managing a component library, or supporting multilingual content across platforms, <a href=\"https:\/\/cloudinary.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Cloudinary<\/a> gives you the tools to deliver accessible video at scale.<\/p>\n\n\n\n<p>We\u2019ll walk through how to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Meet EAA video playback requirements, like keyboard navigation and screen reader compatibility.<\/li>\n\n\n\n<li>Customize subtitles, contrast, and layout to meet WCAG 2.1 AA standards.<\/li>\n\n\n\n<li>Support alternate audio and multiple languages.<\/li>\n\n\n\n<li>Embed fully accessible players into modern stacks using Cloudinary\u2019s APIs and SDKs.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">EAA Video Requirements: What You Must Address<\/h2>\n\n\n\n<p>To meet <a target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/European_Accessibility_Act\" rel=\"noreferrer noopener\">European Accessibility Act<\/a><a target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/European_Accessibility_Act\" rel=\"noreferrer noopener\"> <\/a><a target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/European_Accessibility_Act\" rel=\"noreferrer noopener\">(<\/a><a target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/European_Accessibility_Act\" rel=\"noreferrer noopener\">EAA)<\/a> accessibility standards, your video player and content must address the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Keyboard navigation.<\/strong> All controls (play\/pause, volume, captions) must be operable without the use of a mouse.<\/li>\n\n\n\n<li><strong>Screen reader compatibility.<\/strong> <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Accessibility\/ARIA\" target=\"_blank\" rel=\"noreferrer noopener\">Accessible Rich Internet Applications (ARIA)<\/a> roles and labels, logical focus order, and accessible metadata.<\/li>\n\n\n\n<li><strong>Subtitles and audio descriptions.<\/strong> Required for all prerecorded content.<\/li>\n\n\n\n<li><strong>Color contrast.<\/strong> Subtitles and controls must maintain a contrast ratio of at least 4.5:1.<\/li>\n\n\n\n<li><strong>Multilingual support.<\/strong> Alternate audio and subtitles for tracks to enhance language accessibility.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Why Use Cloudinary Video?<\/h2>\n\n\n\n<p><a target=\"_blank\" href=\"https:\/\/cloudinary.com\/products\/video\" rel=\"noreferrer noopener\">Cloudinary<\/a><a target=\"_blank\" href=\"https:\/\/cloudinary.com\/products\/video\" rel=\"noreferrer noopener\"> <\/a><a target=\"_blank\" href=\"https:\/\/cloudinary.com\/products\/video\" rel=\"noreferrer noopener\">Video<\/a> is an API-first platform that automates video management, optimization, and delivery of high-performing video experiences. Cloudinary makes it easy to implement these video features through its <a target=\"_blank\" href=\"https:\/\/console.cloudinary.com\/pm\/video-player-studio\" rel=\"noreferrer noopener\">V<\/a>ideo Player Studio and Video Player components. Its <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/video_player_accessibility\" rel=\"noreferrer noopener\">Video Player<\/a> is fully customizable, EAA-compliant, and built to adapt to modern frameworks like React, Vue, and headless CMS architectures.&nbsp;<\/p>\n\n\n\n<p><a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/video_player_accessibility#banner\" rel=\"noreferrer noopener\">K<\/a><a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/video_player_accessibility#banner\" rel=\"noreferrer noopener\">ey features<\/a> include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Accessibility-first design<\/strong><strong>.<\/strong> Full keyboard navigation, screen reader support, and ARIA-labeled controls<\/li>\n\n\n\n<li><strong>Custom theming<\/strong><strong>.<\/strong> Modify fonts, colors, icons, and layouts to match your brand and meet contrast guidelines<\/li>\n\n\n\n<li><strong>Multi-language support<\/strong><strong>.<\/strong> Add captions, subtitles, and alternate audio tracks with ease<\/li>\n\n\n\n<li><strong>Automation<\/strong><strong>s.<\/strong> Auto-generate transcripts and subtitle files using AI integrations like <a href=\"https:\/\/cloudinary.com\/documentation\/google_ai_video_transcription_addon#banner\" target=\"_blank\" rel=\"noreferrer noopener\">Google AI Video Transcription<\/a> and <a href=\"https:\/\/cloudinary.com\/documentation\/microsoft_azure_video_indexer_addon#banner\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Azure Video Indexer<\/a><\/li>\n\n\n\n<li><strong>CMS <\/strong><strong>and<\/strong><strong> frontend integrations<\/strong><strong>.<\/strong> Embed accessible players into platforms like Contentful, Sanity, or Next.js apps using Cloudinary&#8217;s SDKs or APIs<\/li>\n<\/ul>\n\n\n\n<p>To use these features, create a free <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/users\/register_free\" rel=\"noreferrer noopener\">Cloudinary account<\/a> and upload your video assets. Once uploaded, you can enhance videos with subtitles, alternate audio tracks, and fully styled players, either via Cloudinary\u2019s UI or API. Let\u2019s examine how Cloudinary features address each of the EAA requirements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Screen Reader Compatibility and Keyboard Navigation Support<\/h2>\n\n\n\n<p>To comply with EAA, your video player must be entirely operable without the use of a mouse. This ensures accessibility for users who navigate using keyboards, switch devices, or other assistive technologies.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What EAA Requires<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Keyboard operability.<\/strong> All interactive elements must function solely via the keyboard. This includes support for standard navigation keys: <strong>Tab<\/strong>, <strong>Shift + Tab<\/strong>, <strong>Enter<\/strong>, <strong>Space<\/strong>, and arrow keys.<\/li>\n\n\n\n<li><strong>Focus visibility.<\/strong> Every control must show a clear, visible focus outline when selected with the keyboard. This focus indicator must have a minimum contrast ratio of 3:1 against the surrounding colors.<\/li>\n\n\n\n<li><strong>Accessibility for <\/strong><strong>d<\/strong><strong>ynamic <\/strong><strong>c<\/strong><strong>ontent<\/strong><strong>.<\/strong>Users must be able to pause, stop, or hide moving content at any time using only the keyboard.<\/li>\n\n\n\n<li><strong>Labeling controls.<\/strong> Buttons and controls require descriptive labels and accessible roles (e.g., &#8220;Play video&#8221;, &#8220;Toggle captions&#8221;) that are exposed to screen readers via ARIA attributes.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How Cloudinary&#8217;s Video Player<\/strong> <strong>Helps<\/strong><\/h3>\n\n\n\n<p>Cloudinary&#8217;s Video Player is a customizable HTML5-based player designed for smooth video playback with advanced features, allowing you to deliver optimized videos across devices.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1753722935\/blog-Building_EAA-Compliant_Video_Experiences_With_Cloudinary-1.png\" alt=\"Cloudinary's Video Player showing a herd of elephants.\"\/><figcaption class=\"wp-element-caption\">Cloudinary Video Player<\/figcaption><\/figure>\n\n\n\n<p>Starting from version 2.3.3, <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/video_player_accessibility\" rel=\"noreferrer noopener\">Cloudinary Video Player<\/a> offers built-in accessibility features, such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Full keyboard navigation.<\/strong> Standard keyboard shortcuts, such as the <strong>Space <\/strong>or <strong>Enter<\/strong> <strong>key <\/strong>to toggle playback, the <strong>Arrow <\/strong>keys for seeking and volume adjustment, and the <strong>F <\/strong>key to enter or exit full-screen mode. Tab navigation is also fully supported, with each control reachable in logical order. These controls are designed to be intuitive for keyboard-only users while maintaining the same functionality available to mouse users.<\/li>\n\n\n\n<li><strong>Screen reader compatibility.<\/strong> The player uses ARIA attributes to define roles and states for all controls, creating seamless interaction with screen readers. Cloudinary&#8217;s implementation includes proper ARIA attributes for all controls, such as <code>role=\"slider\"<\/code> for the volume and progress bars, along with appropriate aria-valuenow, aria-valuemin, and <code>aria-valuemax<\/code> values. These attributes can be inspected using browser developer tools, where the accessibility panel reveals whether each control is labeled correctly and accessible to keyboard users.<\/li>\n\n\n\n<li><strong>Visible <\/strong><strong>f<\/strong><strong>ocus <\/strong><strong>i<\/strong><strong>ndicators<\/strong><strong>.<\/strong> Each active control displays a clear focus outline when navigated with the keyboard, supporting users with visual tracking needs.<\/li>\n<\/ul>\n\n\n\n<p>Simply put, the Cloudinary Video Player is designed to be fully operable without a mouse, maintaining compliance with EAA.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Auto-Caption, Subtitles, and Multilingual Audio Tracks<\/h2>\n\n\n\n<p>Captions and subtitles are essential for making video content accessible to users who are deaf or hard of hearing, non-native speakers, and even those who just prefer to watch on mute. To align with the EAA guidelines, video players should support accurate, synchronized text alternatives for spoken content and provide multilingual options when applicable.<\/p>\n\n\n\n<p>Cloudinary supports automated transcription through integrations with <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/google_ai_video_transcription_addon#banner\" rel=\"noreferrer noopener\">Google AI Video Transcription<\/a> and <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/microsoft_azure_video_indexer_addon#banner\" rel=\"noreferrer noopener\">Microsoft Azure Video Indexer<\/a>, enabling the generation of accurate speech-to-text transcripts from uploaded video files. This helps create subtitle files in real time, making content not only accessible but also more searchable and SEO-friendly.&nbsp;<\/p>\n\n\n\n<p>In terms of multilingual support, Cloudinary allows you to specify the language and, optionally, the regional dialect in which you need your transcript files to be. For instance, to generate a transcript in Canadian French during upload:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">cloudinary.v2.uploader\n\n.upload(<span class=\"hljs-string\">\"abt_cloudinary_french.mp4\"<\/span>,\u00a0\n\n\u00a0 { <span class=\"hljs-attr\">resource_type<\/span>: <span class=\"hljs-string\">\"video\"<\/span>,\u00a0\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">raw_convert<\/span>: <span class=\"hljs-string\">\"google_speech:fr-CA\"<\/span> })\n\n.then(<span class=\"hljs-function\"><span class=\"hljs-params\">result<\/span>=&gt;<\/span><span class=\"hljs-built_in\">console<\/span>.log(result));<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Subtitle tracks can also be managed directly within <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_video_player#video_player_studio\" rel=\"noreferrer noopener\">Cloudinary\u2019s Video Player Studio<\/a>, the visual interface for customizing playback. You can associate multiple caption and subtitle tracks with a single video, whether they&#8217;re manually uploaded or automatically generated from .transcript files. To do this, upload the .vtt files for each language and assign their corresponding labels, as shown in the image below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1753722935\/blog-Building_EAA-Compliant_Video_Experiences_With_Cloudinary-2.png\" alt=\"Cloudinary Console with the Captions &amp; Subtitles section circled in red.\"\/><figcaption class=\"wp-element-caption\">Adding multiple subtitle files<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">3. Playback Customization and Theming<\/h2>\n\n\n\n<p>According to EAA standards, all interactive controls must maintain a contrast ratio of at least 4.5:1 relative to their background. The purpose of this requirement is to ensure that text, icons, and other user interface elements are sufficiently distinguishable for users with visual impairments, such as those with low vision or color blindness.<\/p>\n\n\n\n<p><a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_video_player#video_player_studio\" rel=\"noreferrer noopener\">Cloudinary\u2019s Video Player Studio<\/a> not only allows you to configure playback options, like autoplay, looping, and muted start, but it also provides extensive customization options for fonts, colors, and layout.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1753722935\/blog-Building_EAA-Compliant_Video_Experiences_With_Cloudinary-3.png\" alt=\"Cloudiunary's Video Player Studio with Autoplay circled. Show controls is toggled on, with show volume control and Show full screen toggled on.\"\/><figcaption class=\"wp-element-caption\">Video Player behavior<\/figcaption><\/figure>\n\n\n\n<p>To fully comply with accessibility standards, you can use these theming options to make sure every interactive control (buttons, sliders, text labels, etc.) meets the required 4.5:1 contrast ratio. While customizing the player\u2019s design, choose color combinations for backgrounds, text, and icons, such as play\/pause, volume adjustments, or subtitle toggles, that are easily readable.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1753722935\/blog-Building_EAA-Compliant_Video_Experiences_With_Cloudinary-4.png\" alt=\"Cloudinary's Video Player Studio with Player theme showing. You can change the font and icon\/text colors.\"\/><figcaption class=\"wp-element-caption\">Video Player theme<\/figcaption><\/figure>\n\n\n\n<p>Implementing these measures within Cloudinary\u2019s Video Player Studio guarantees that your video player not only aligns with your brand\u2019s visual identity but also conforms to critical accessibility standards.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Embed Accessible Players in Headless CMS or E-commerce Platforms<\/h2>\n\n\n\n<p>Whether you\u2019re embedding videos into a product page, landing page, or educational content hub, Cloudinary\u2019s Player Studio and APIs allow you to configure the player to meet EAA requirements. Cloudinary works with popular CMS platforms (e.g., Contentful, Sanity, Strapi) via API-based embeds. You can configure the player\u2019s behavior and accessibility settings within your content schema or automate them during the media upload process.<\/p>\n\n\n\n<p>This setup guarantees that any team publishing content through your CMS or e-commerce backend can embed a video player that\u2019s both visually branded and accessibility compliant without needing to write manual code every time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping Up<\/h2>\n\n\n\n<p>Meeting the European Accessibility Act (EAA) video requirements shouldn\u2019t just be avoiding legal penalties. It\u2019s an opportunity for your organization to show commitment to inclusive design and accessibility. By utilizing Cloudinary Video\u2019s accessibility features, you\u2019re creating a better video experience for users across all abilities, devices, and languages. <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/users\/register_free\" rel=\"noreferrer noopener\">Sign up for a free Cloudinary account<\/a> today to implement EAA-compliant video features like keyboard navigation, screen reader support, and multilingual subtitles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resources<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/cloudinary.com\/documentation\/video_player_accessibility#banner\" target=\"_blank\" rel=\"noreferrer noopener\">Cloudinary Video Player Accessibility <\/a>Documentation<\/li>\n\n\n\n<li><a href=\"https:\/\/cloudinary.com\/documentation\/accessible_media\" target=\"_blank\" rel=\"noreferrer noopener\">Cloudinary Accessible Media Documentation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/console.cloudinary.com\/pm\/video-player-studio\" target=\"_blank\" rel=\"noreferrer noopener\">Cloudinary Video Player Studio<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cloudinary.com\/documentation\/video_player_customization\" target=\"_blank\" rel=\"noreferrer noopener\">Video Player Customization Documentation<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In our previous guide on testing videos for accessibility, we audited our content library and looked for gaps like missing captions, inaccessible players, unlabeled elements, and others. But quick fixes aren\u2019t enough if you\u2019re building or embedding video players at scale. This guide is for teams that want to build an EAA-compliant video infrastructure from [&hellip;]<\/p>\n","protected":false},"author":87,"featured_media":38048,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[337,303,310],"class_list":["post-38047","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-accessibility","tag-video","tag-video-player"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Building EAA-Compliant Video Experiences With Cloudinary<\/title>\n<meta name=\"description\" content=\"In our previous guide on testing videos for accessibility, we audited our content library and looked for gaps like missing captions, inaccessible players,\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building EAA-Compliant Video Experiences With Cloudinary\" \/>\n<meta property=\"og:description\" content=\"In our previous guide on testing videos for accessibility, we audited our content library and looked for gaps like missing captions, inaccessible players,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-28T17:23:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-02T18:04:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1752618953\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary.jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1100\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"melindapham\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences\"},\"author\":{\"name\":\"melindapham\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\"},\"headline\":\"Building EAA-Compliant Video Experiences With Cloudinary\",\"datePublished\":\"2025-07-28T17:23:17+00:00\",\"dateModified\":\"2025-09-02T18:04:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences\"},\"wordCount\":1398,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1752618953\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary.jpg?_i=AA\",\"keywords\":[\"Accessibility\",\"Video\",\"Video Player\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences\",\"url\":\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences\",\"name\":\"Building EAA-Compliant Video Experiences With Cloudinary\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1752618953\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary.jpg?_i=AA\",\"datePublished\":\"2025-07-28T17:23:17+00:00\",\"dateModified\":\"2025-09-02T18:04:17+00:00\",\"description\":\"In our previous guide on testing videos for accessibility, we audited our content library and looked for gaps like missing captions, inaccessible players,\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1752618953\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1752618953\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary.jpg?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Building EAA-Compliant Video Experiences With Cloudinary\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\",\"name\":\"melindapham\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g\",\"caption\":\"melindapham\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Building EAA-Compliant Video Experiences With Cloudinary","description":"In our previous guide on testing videos for accessibility, we audited our content library and looked for gaps like missing captions, inaccessible players,","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences","og_locale":"en_US","og_type":"article","og_title":"Building EAA-Compliant Video Experiences With Cloudinary","og_description":"In our previous guide on testing videos for accessibility, we audited our content library and looked for gaps like missing captions, inaccessible players,","og_url":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences","og_site_name":"Cloudinary Blog","article_published_time":"2025-07-28T17:23:17+00:00","article_modified_time":"2025-09-02T18:04:17+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1752618953\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary.jpg?_i=AA","type":"image\/jpeg"}],"author":"melindapham","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences"},"author":{"name":"melindapham","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9"},"headline":"Building EAA-Compliant Video Experiences With Cloudinary","datePublished":"2025-07-28T17:23:17+00:00","dateModified":"2025-09-02T18:04:17+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences"},"wordCount":1398,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1752618953\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary.jpg?_i=AA","keywords":["Accessibility","Video","Video Player"],"inLanguage":"en-US","copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences","url":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences","name":"Building EAA-Compliant Video Experiences With Cloudinary","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1752618953\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary.jpg?_i=AA","datePublished":"2025-07-28T17:23:17+00:00","dateModified":"2025-09-02T18:04:17+00:00","description":"In our previous guide on testing videos for accessibility, we audited our content library and looked for gaps like missing captions, inaccessible players,","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1752618953\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1752618953\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary.jpg?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/eaa-compliant-video-experiences#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Building EAA-Compliant Video Experiences With Cloudinary"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9","name":"melindapham","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g","caption":"melindapham"}}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1752618953\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary\/Blog_Building_EAA-Compliant_Video_Experiences_with_Cloudinary.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/38047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/87"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=38047"}],"version-history":[{"count":3,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/38047\/revisions"}],"predecessor-version":[{"id":38444,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/38047\/revisions\/38444"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/38048"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=38047"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=38047"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=38047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}