{"id":38495,"date":"2025-09-15T07:00:00","date_gmt":"2025-09-15T14:00:00","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=38495"},"modified":"2025-09-16T13:51:13","modified_gmt":"2025-09-16T20:51:13","slug":"what-you-should-know-accessible-video","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video","title":{"rendered":"What You Should Know About Delivering Accessible Video Under the EAA"},"content":{"rendered":"\n<p>The <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/blog\/european-accessibility-act\" rel=\"noreferrer noopener\">European Accessibility Act<\/a> (EAA) is designed to make digital products and services usable by everyone, including people with disabilities. That includes video, whether it\u2019s a product demo, educational content, or marketing material.<\/p>\n\n\n\n<p>And this isn\u2019t a small audience, as <a target=\"_blank\" href=\"https:\/\/commission.europa.eu\/strategy-and-policy\/policies\/justice-and-fundamental-rights\/disability\/persons-disabilities_en\" rel=\"noreferrer noopener\">over 87 million people<\/a> in the EU live with some form of disability, according to the European Commission. That\u2019s nearly one in five people. If your video content isn\u2019t accessible, you\u2019re effectively shutting the door on a huge chunk of your potential audience.<\/p>\n\n\n\n<p>The EAA went into effect on June 28, 2025, so the best time to get your video content into shape is now. If your business serves the EU market, you\u2019re expected to meet <a target=\"_blank\" href=\"https:\/\/www.w3.org\/TR\/WCAG21\/\" rel=\"noreferrer noopener\">WCAG 2.1 AA<\/a> standards, especially around subtitles, audio descriptions, and player accessibility.<\/p>\n\n\n\n<p>To comply with the EAA\u2019s requirements, video content must support:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Subtitles or closed captions for spoken content.<\/li>\n\n\n\n<li>Keyboard navigation and accessible playback controls.<\/li>\n\n\n\n<li>Screen reader compatibility via semantic markup and metadata.<\/li>\n\n\n\n<li>Alternate audio tracks or descriptive audio options.<\/li>\n<\/ul>\n\n\n\n<p>If your current video workflows don\u2019t already account for these requirements, the time to fix it is now. The best place to start is your video player. This article will guide you on how you can use Cloudinary\u2019s player to enable keyboard navigation and accessible controls.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Make the Video Player Itself Accessible<\/h2>\n\n\n\n<p>Before captions, transcripts, or metadata even come into play, users need a way to interact with your video, whether they\u2019re using a keyboard, a screen reader, or other assistive technology. That\u2019s why making the player itself accessible is the first step.<\/p>\n\n\n\n<p>Your video player should support:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Keyboard access<\/strong><strong>.<\/strong> All controls, like Play\/Pause, Volume, and Fullscreen, must be reachable using only the keyboard. For example, pressing Tab should move through the controls, and Enter or Space should activate them.<\/li>\n\n\n\n<li><strong>Screen reader compatibility<\/strong><strong>.<\/strong> People using screen readers should hear descriptive labels like \u201cPlay button\u201d or \u201cMute toggle,\u201d not just vague announcements like \u201cbutton.\u201d<\/li>\n\n\n\n<li><strong>Visible focus indicators<\/strong><strong>.<\/strong> When using the keyboard to navigate, each focused element should be highlighted visually so users know where they are.<\/li>\n\n\n\n<li><strong>Caption and subtitle support<\/strong><strong>.<\/strong> The player should allow users to toggle captions on or off, switch between languages, and display subtitles with proper timing and readable styling.<\/li>\n\n\n\n<li><strong>Accessible color contrast<\/strong><strong>.<\/strong> UI elements like buttons, progress bars, and captions must meet contrast guidelines to be readable by users with low vision or color blindness.<\/li>\n<\/ul>\n\n\n\n<p>Unfortunately, many default or custom-built players miss these marks. They look good, but they\u2019re not built with accessibility in mind, and that can lead to real exclusion.<\/p>\n\n\n\n<p><a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_video_player\" rel=\"noreferrer noopener\">Cloudinary\u2019s Video Player<\/a> solves this out of the box. It comes with built-in support for keyboard navigation, proper <a target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Accessibility\/ARIA\" rel=\"noreferrer noopener\">Accessible Rich Internet Applications<\/a> (ARIA) labels for screen readers, clear focus outlines, and customizable UI elements that meet accessibility contrast ratios.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1758048916\/blog-What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA-1.gif\" alt=\"Cloudinary Video Player showing the volume slider. The video depicts a car driving down a road between a lake and mountain.\"\/><figcaption class=\"wp-element-caption\">Cloudinary Video Player accessible controls<\/figcaption><\/figure><\/div>\n\n\n<p>This means you don\u2019t have to hack together workarounds or rebuild your player from scratch, as it\u2019s already built to meet the standard.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Set Up Cloudinary\u2019s Accessible Video Player<\/h2>\n\n\n\n<p>To get started, you\u2019ll need your <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/finding_your_credentials_tutorial\" rel=\"noreferrer noopener\"><strong>Cloudinary cloud name<\/strong><\/a> and the <strong>public ID<\/strong> of a video you&#8217;ve uploaded. There are a few ways to find the public ID, but the easiest is to click on the video inside your Media Library. You\u2019ll see the public ID of the selected video as highlighted 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\/v1758048916\/blog-What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA-2.png\" alt=\"Cloudinary Media Library with arrows pointing at the Assets tab at the top, the checkbox checked on the image, and the name of the image 'solo-trip'\"\/><figcaption class=\"wp-element-caption\">Public ID displayed in Cloudinary\u2019s Media Library<\/figcaption><\/figure>\n\n\n\n<p>Once you have those, you need to either install Cloudinary\u2019s Video Player <a target=\"_blank\" href=\"https:\/\/www.npmjs.com\/package\/cloudinary-video-player\" rel=\"noreferrer noopener\">NPM<\/a> library or <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/video_player_how_to_embed\" rel=\"noreferrer noopener\">use its CDN<\/a>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\">\n<span class=\"hljs-comment\">&lt;!-- Include the Cloudinary Video Player styles and script --&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">link<\/span> <span class=\"hljs-attr\">rel<\/span>=<span class=\"hljs-string\">\"stylesheet\"<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"https:\/\/cdn.jsdelivr.net\/npm\/cloudinary-video-player@2.3.5\/dist\/cld-video-player.min.css\"<\/span> \/&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">script<\/span> <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">\"https:\/\/cdn.jsdelivr.net\/npm\/cloudinary-video-player@2.3.5\/dist\/cld-video-player.min.js\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">script<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Next, add a basic video element to your HTML:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"hljs-comment\">&lt;!-- This is the placeholder for your video player --&gt;<\/span>\n\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">style<\/span>=<span class=\"hljs-string\">\"max-width: 800px\"<\/span>&gt;<\/span>\n\n\u00a0 <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">video<\/span>\u00a0\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"doc-player\"<\/span>\u00a0\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">controls<\/span>\u00a0\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">muted<\/span>\u00a0\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"cld-video-player cld-fluid\"<\/span>&gt;<\/span>\n\n\u00a0 <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">video<\/span>&gt;<\/span>\n\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The <code>id=\"doc-player\"<\/code> in the code above is just a reference. You can name it anything, but make sure your JavaScript uses the same ID to attach the player.<\/p>\n\n\n\n<p>Now, connect the video player using JavaScript:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-comment\">\/\/ Initialize the Cloudinary video player and load your video<\/span>\n\n<span class=\"hljs-keyword\">const<\/span> player = cloudinary.videoPlayer(<span class=\"hljs-string\">'doc-player'<\/span>, {\n\n\u00a0 <span class=\"hljs-attr\">cloudName<\/span>: <span class=\"hljs-string\">'your-cloud-name'<\/span> <span class=\"hljs-comment\">\/\/ Replace this with your actual Cloudinary cloud name<\/span>\n\n});\n\nplayer.source(<span class=\"hljs-string\">'your-video-public-id'<\/span>); <span class=\"hljs-comment\">\/\/ Replace this with the public ID of your video<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><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>That\u2019s it! Your site now has a fully responsive, keyboard-friendly, screen-reader-accessible video player.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Add Subtitles and Captions That Actually Help People<\/h2>\n\n\n\n<p>Once your player is accessible, the next major step is making sure people can follow what\u2019s being said in your videos, whether they\u2019re deaf, hard of hearing, in a noisy environment, or simply prefer reading along.&nbsp;<\/p>\n\n\n\n<p>That\u2019s where subtitles and captions come in. And under the EAA, they\u2019re not optional. Your videos need to provide:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Closed captions for all spoken dialogue, sound effects, or relevant audio.<\/li>\n\n\n\n<li>Multiple language subtitle tracks, especially for public-facing or multilingual content.<\/li>\n\n\n\n<li>Readable, toggleable, and properly timed captions that don\u2019t block important visuals.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1758048916\/blog-What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA-3.png\" alt=\"Video player with the Captions: English option highlighted.\"\/><figcaption class=\"wp-element-caption\">Accessible subtitles in multiple languages can be toggled from the Cloudinary Video Player<\/figcaption><\/figure><\/div>\n\n\n<p>With Cloudinary, you can easily generate these subtitles via AI add-ons like the <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/google_ai_video_transcription_addon\" rel=\"noreferrer noopener\">Google AI Video Transcription add-on<\/a> or the <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/microsoft_azure_video_indexer_addon\" rel=\"noreferrer noopener\">Microsoft Azure Video Indexer add-on<\/a> as you upload your videos.<\/p>\n\n\n\n<p>To do this, you must enable the add-on in your Cloudinary account. For example, to enable Azure Video Indexer, go to the <a href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_add_ons\" target=\"_blank\" rel=\"noreferrer noopener\">Add-ons<\/a> section in the <a href=\"https:\/\/cloudinary.com\/users\/login\" target=\"_blank\" rel=\"noreferrer noopener\">Cloudinary dashboard<\/a>, search for <strong>Microsoft Azure Video Indexer<\/strong>, and click it.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1758048916\/blog-What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA-4.png\" alt=\"Cloudinary dashboard with Microsoft Azure Video Indexer highlighted\"\/><figcaption class=\"wp-element-caption\">Cloudinary dashboard to access Microsoft Azure Video Indexer<\/figcaption><\/figure>\n\n\n\n<p>Once there, you can select a subscription plan. For this demo, the free plan (which gives you 30 units per month) will be enough. If you need more, you can choose a paid plan.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1758048916\/blog-What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA-6.png\" alt=\"Microsoft Azure Video Indexer subscription plans\"\/><figcaption class=\"wp-element-caption\">Subscription plan selected<\/figcaption><\/figure>\n\n\n\n<p>Once the add-on is active, generating subtitles is as simple as adding a <code>raw_convert<\/code> parameter to your upload logic.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" 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\">\"folder-permissions-tutorial.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\">\"azure_video_indexer\"<\/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-4\"><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<div class='c-callout  c-callout--inline-title c-callout--note'><strong class='c-callout__title'>Note:<\/strong> <p>For this to work, you must have installed <a href=\"https:\/\/cloudinary.com\/documentation\/node_integration\">Cloudinary\u2019s Node.js SDK<\/a> and configured it using your <a href=\"https:\/\/console.cloudinary.com\/settings\/api-keys\">API keys<\/a>.<\/p>\n<\/div>\n\n\n<p>When the process is complete, a new transcript file (e.g., en-us.azure.transcript) is created in your Cloudinary product environment. If you want to use the transcript as subtitles in a video player, you can request specific subtitle formats like WebVTT (<code>.vtt<\/code>) or SRT (<code>.srt<\/code>).<\/p>\n\n\n\n<p>To do this, append the file type to the raw_convert value with a colon, like so:<\/p>\n\n\n\n<p><code>raw_convert: 'azure_video_indexer:vtt'<\/code><\/p>\n\n\n\n<p>This will generate <code>.vtt<\/code> subtitle files. You can also translate the subtitles into multiple languages by specifying additional target languages after the source language, separated by colons. For example:<\/p>\n\n\n\n<p><code>raw_convert: 'azure_video_indexer:srt:vtt:en-US:fr-FR'<\/code><\/p>\n\n\n\n<p>This will generate subtitles in both English and French, in both <code>.vtt<\/code> and <code>.srt<\/code> formats. You can then attach them to your Cloudinary video player using the textTracks config:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-wrap-lines\">player.source(<span class=\"hljs-string\">'folder-permissions-tutorial'<\/span>, {\n\n\u00a0 textTracks: {\n\n\u00a0 \u00a0 captions: {\n\n\u00a0 \u00a0 \u00a0 label: <span class=\"hljs-string\">'English'<\/span>,\n\n\u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">default<\/span>: <span class=\"hljs-keyword\">true<\/span>,\n\n\u00a0 \u00a0 \u00a0 language: <span class=\"hljs-string\">'en-US'<\/span>\n\n\u00a0 \u00a0 },\n\n\u00a0 \u00a0 subtitles: &#91;\n\n\u00a0 \u00a0 \u00a0 {\n\n\u00a0 \u00a0 \u00a0 \u00a0 label: <span class=\"hljs-string\">'French'<\/span>,\n\n\u00a0 \u00a0 \u00a0 \u00a0 language: <span class=\"hljs-string\">'fr-FR'<\/span>\n\n\u00a0 \u00a0 \u00a0 },\n\n\u00a0 \u00a0 \u00a0 {\n\n\u00a0 \u00a0 \u00a0 \u00a0 label: <span class=\"hljs-string\">'Spanish'<\/span>,\n\n\u00a0 \u00a0 \u00a0 \u00a0 language: <span class=\"hljs-string\">'es-ES'<\/span>\n\n\u00a0 \u00a0 \u00a0 }\n\n\u00a0 \u00a0 ]\n\n\u00a0 }\n\n});<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>That\u2019s all it takes. The player will load the correct .vtt files based on your video\u2019s public ID, and users will be able to switch subtitle languages directly from the player UI.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Customize Subtitle Appearance for Better UX<\/h2>\n\n\n\n<p>Subtitles should be accurate, easy to read, well-timed, and visually consistent with your brand. Cloudinary gives you full control over how subtitles look and behave using the textTracks configuration inside the video player setup.<\/p>\n\n\n\n<p>You can style fonts, adjust positioning, and even control how subtitles are paced, like limiting the number of words shown at once or highlighting each word as it\u2019s spoken. These enhancements not only make your video feel more polished, but they also help meet accessibility guidelines under the EAA.<\/p>\n\n\n\n<p>Here\u2019s a complete example showing how to set custom subtitles, pace them, and apply styling:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-wrap-lines\">player.source(<span class=\"hljs-string\">'outdoors'<\/span>, {\n\n\u00a0 textTracks: {\n\n\u00a0 \u00a0 options: {\n\n\u00a0 \u00a0 \u00a0 fontFace: <span class=\"hljs-string\">'Kanit'<\/span>,\n\n\u00a0 \u00a0 \u00a0 fontSize: <span class=\"hljs-string\">'1.5rem'<\/span>,\n\n\u00a0 \u00a0 \u00a0 gravity: <span class=\"hljs-string\">'bottom'<\/span>,\n\n\u00a0 \u00a0 \u00a0 style: { opacity: <span class=\"hljs-string\">'0.8'<\/span> },\n\n\u00a0 \u00a0 \u00a0 theme: <span class=\"hljs-string\">'yellow-outlined'<\/span>,\n\n\u00a0 \u00a0 \u00a0 wordHighlightStyle: {\n\n\u00a0 \u00a0 \u00a0 \u00a0 color: <span class=\"hljs-string\">'royalblue'<\/span>\n\n\u00a0 \u00a0 \u00a0 }\n\n\u00a0 \u00a0 },\n\n\u00a0 \u00a0 subtitles: {\n\n\u00a0 \u00a0 \u00a0 label: <span class=\"hljs-string\">'English'<\/span>,\n\n\u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">default<\/span>: <span class=\"hljs-keyword\">true<\/span>,\n\n\u00a0 \u00a0 \u00a0 maxWords: <span class=\"hljs-number\">3<\/span>,\n\n\u00a0 \u00a0 \u00a0 wordHighlight: <span class=\"hljs-keyword\">true<\/span>,\n\n\u00a0 \u00a0 \u00a0 url: <span class=\"hljs-string\">'https:\/\/res.cloudinary.com\/demo\/raw\/upload\/outdoors.vtt'<\/span>\n\n\u00a0 \u00a0 }\n\n\u00a0 }\n\n});<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<div class='c-callout  c-callout--inline-title c-callout--note'><strong class='c-callout__title'>Note:<\/strong> <p>You can either reference a subtitle file you\u2019ve uploaded (like a <code>.vtt<\/code> file) or use auto-generated <code>.transcript<\/code> files produced during upload, like we covered in the previous section.<\/p>\n<\/div>\n\n\n<p>The code above loads English subtitles from a <code>.vtt<\/code> file, limits the display to three words per frame for readability, and highlights each word as it\u2019s spoken.<\/p>\n\n\n\n<p>Next, we\u2019ll examine alternate audio tracks and how they expand accessibility for blind or multilingual users.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Offer Alternate Audio Tracks for Inclusivity<\/h2>\n\n\n\n<p>Subtitles aren\u2019t the only way to make your videos more inclusive. For blind or low-vision users, descriptive audio can narrate what\u2019s happening visually. And for multilingual audiences, <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/adaptive_bitrate_streaming#defining_alternate_audio_tracks\" rel=\"noreferrer noopener\">alternate audio tracks<\/a> in different languages may feel more natural than reading subtitles.<\/p>\n\n\n\n<p>Cloudinary lets you add multiple audio tracks to a video using transformation parameters. These alternate audio tracks show up in the player UI (when supported, like in the Cloudinary Video Player), and users can choose which version they want to hear.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1758048917\/blog-What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA-7.png\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Allow users to switch between audio tracks<\/figcaption><\/figure>\n\n\n\n<p>This is done using the <code>l_audio<\/code> layer transformation along with the <code>fl_alternate<\/code> flag.<\/p>\n\n\n\n<p>Here\u2019s an example of a video URL that includes both the original audio and an instrumental alternate track:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">https:<span class=\"hljs-comment\">\/\/res.cloudinary.com\/demo\/video\/upload\/<\/span>\nfl_alternate:lang_en;name_Original,<span class=\"hljs-attr\">l_audio<\/span>:outdoors\/fl_layer_apply\/\nfl_alternate:lang_en;name_Instrumental,<span class=\"hljs-attr\">l_audio<\/span>:docs:instrumental-short\/fl_layer_apply\/\nsp_auto\/outdoors.m3u8<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><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>Here\u2019s a break down of the video URL above:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>l_audio:outdoors<\/code> adds the original audio from a video, where outdoors is the public ID of your audio file.<\/li>\n\n\n\n<li><code>fl_alternate:lang_en;name_Original<\/code> sets the audio language and how it\u2019s labeled in the player.<\/li>\n\n\n\n<li>A second <code>l_audio<\/code> layer adds a different audio track (e.g., an instrumental or translated version), also tagged with fl_alternate.<\/li>\n\n\n\n<li><code>sp_auto<\/code> applies automatic streaming profile selection, needed for <a href=\"https:\/\/cloudinary.com\/documentation\/adaptive_bitrate_streaming\" target=\"_blank\" rel=\"noreferrer noopener\">adaptive bitrate<\/a> and audio switching.<\/li>\n<\/ul>\n\n\n\n<p>When users play this video using the Cloudinary Video Player, they can pick between audio tracks, just like language options in a Netflix player.<\/p>\n\n\n<div class='c-callout  c-callout--inline-title c-callout--note'><strong class='c-callout__title'>Note:<\/strong> <p>This method doesn\u2019t currently work through Cloudinary SDKs. You\u2019ll need to build and manage the transformation URLs manually.<\/p>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Prepare Fallback Content and Metadata<\/h2>\n\n\n\n<p>Not every user will be able to watch your videos, as some rely on screen readers, some are on slow connections, and others might have autoplay disabled. That\u2019s why having fallback content and proper metadata is part of delivering accessible video under the EAA.<\/p>\n\n\n\n<p>With Cloudinary, you can add <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/documentation\/contextual_metadata\" rel=\"noreferrer noopener\">contextual metadata<\/a> and structure your video sources so they still provide value even if the video can\u2019t be played.<\/p>\n\n\n\n<p>Here\u2019s what you should cover:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Title, subtitle, and description<\/strong><strong>.<\/strong> These help screen readers and assistive tech users understand the video&#8217;s content.<\/li>\n\n\n\n<li><strong>Transcript or alt content<\/strong><strong>.<\/strong> If the video fails to load or autoplay is blocked, users should still be able to access the core message.<\/li>\n\n\n\n<li><strong>Structured metadata<\/strong><strong>.<\/strong> This improves accessibility and also helps with SEO and discoverability.<\/li>\n<\/ul>\n\n\n\n<p>Using contextual metadata, you can define titles, subtitles, and descriptions either via the API or directly in the Media Library. Here is an example using the upload API:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-selector-tag\">cloudinary<\/span><span class=\"hljs-selector-class\">.v2<\/span><span class=\"hljs-selector-class\">.uploader<\/span><span class=\"hljs-selector-class\">.upload<\/span>(\"<span class=\"hljs-selector-tag\">product-demo<\/span><span class=\"hljs-selector-class\">.mp4<\/span>\", {\n\n\u00a0 <span class=\"hljs-attribute\">resource_type<\/span>: <span class=\"hljs-string\">\"video\"<\/span>,\n\n\u00a0 context: {\n\n\u00a0 \u00a0 title: <span class=\"hljs-string\">\"Quick Product Demo\"<\/span>,\n\n\u00a0 \u00a0 subtitle: <span class=\"hljs-string\">\"How to get started in 90 seconds\"<\/span>,\n\n\u00a0 \u00a0 description: <span class=\"hljs-string\">\"This video walks through the basics of using our dashboard and key features.\"<\/span>\n\n\u00a0 }\n\n});<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This metadata is used as the fallback label when a video can\u2019t play. If you don\u2019t define a title, the public ID will be used by default, which isn\u2019t helpful for accessibility.<\/p>\n\n\n\n<p>Alternatively, you can define this info directly in the player source:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">player.source(<span class=\"hljs-string\">'product-demo'<\/span>, {\n\n\u00a0 <span class=\"hljs-attr\">info<\/span>: {\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">title<\/span>: <span class=\"hljs-string\">'Quick Product Demo'<\/span>,\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">subtitle<\/span>: <span class=\"hljs-string\">'Get started fast'<\/span>,\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">description<\/span>: <span class=\"hljs-string\">'Covers dashboard setup, tools, and integrations'<\/span>\n\n\u00a0 }\n\n});<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><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>This overrides any metadata set at the asset level and gives you flexibility to localize or customize per use case.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping Up<\/h2>\n\n\n\n<p>If you\u2019ve followed this guide, you\u2019ve either implemented most of the key accessibility steps or at least know exactly what to tackle next. But how can you be sure your videos are truly inclusive and EAA-compliant?<\/p>\n\n\n\n<p>The answer is simple: Test like your users would. Modern browsers make accessibility testing surprisingly approachable:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In Chrome, open <a href=\"https:\/\/developer.chrome.com\/docs\/devtools\" target=\"_blank\" rel=\"noreferrer noopener\">DevTools<\/a> and head to the <strong>Accessibility<\/strong> panel. You\u2019ll be able to inspect ARIA roles, check element labels, and confirm the focus order makes sense.<\/li>\n\n\n\n<li>Use only your keyboard to interact with the video player. Can you reach the Play button, toggle subtitles, and adjust volume using just Tab, Enter, and Space?<\/li>\n\n\n\n<li>Run a screen reader like <a href=\"https:\/\/www.nvaccess.org\/download\/\" target=\"_blank\" rel=\"noreferrer noopener\">NVDA<\/a> (Windows) or <a href=\"https:\/\/www.apple.com\/voiceover\/info\/guide\/_1121.html\" target=\"_blank\" rel=\"noreferrer noopener\">VoiceOver<\/a> (macOS) and listen. Do your captions read smoothly? Are your buttons clearly described, or do they just say \u201cbutton\u201d?<\/li>\n<\/ul>\n\n\n\n<p>If all of this works well, congratulations. You\u2019ve taken solid steps toward delivering EAA-compliant, inclusive video.<\/p>\n\n\n\n<p><a href=\"https:\/\/cloudinary.com\/users\/register\/free\" target=\"_blank\" rel=\"noreferrer noopener\">Sign up on Cloudinary<\/a> to deliver accessible, EAA-compliant videos with subtitles, audio tracks, and metadata-driven workflows.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The European Accessibility Act (EAA) is designed to make digital products and services usable by everyone, including people with disabilities. That includes video, whether it\u2019s a product demo, educational content, or marketing material. And this isn\u2019t a small audience, as over 87 million people in the EU live with some form of disability, according to [&hellip;]<\/p>\n","protected":false},"author":87,"featured_media":38497,"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-38495","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>What You Should Know About Delivering Accessible Video Under the EAA<\/title>\n<meta name=\"description\" content=\"Worried about video accessibility under the EAA? This guide shows how to meet WCAG 2.1 with accessible players, subtitles, and audio tracks.\" \/>\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\/what-you-should-know-accessible-video\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What You Should Know About Delivering Accessible Video Under the EAA\" \/>\n<meta property=\"og:description\" content=\"Worried about video accessibility under the EAA? This guide shows how to meet WCAG 2.1 with accessible players, subtitles, and audio tracks.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-15T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-16T20:51:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1757706673\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA.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\/what-you-should-know-accessible-video#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video\"},\"author\":{\"name\":\"melindapham\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\"},\"headline\":\"What You Should Know About Delivering Accessible Video Under the EAA\",\"datePublished\":\"2025-09-15T14:00:00+00:00\",\"dateModified\":\"2025-09-16T20:51:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video\"},\"wordCount\":1825,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1757706673\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA.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\/what-you-should-know-accessible-video\",\"url\":\"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video\",\"name\":\"What You Should Know About Delivering Accessible Video Under the EAA\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1757706673\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA.jpg?_i=AA\",\"datePublished\":\"2025-09-15T14:00:00+00:00\",\"dateModified\":\"2025-09-16T20:51:13+00:00\",\"description\":\"Worried about video accessibility under the EAA? This guide shows how to meet WCAG 2.1 with accessible players, subtitles, and audio tracks.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1757706673\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1757706673\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA.jpg?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What You Should Know About Delivering Accessible Video Under the EAA\"}]},{\"@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":"What You Should Know About Delivering Accessible Video Under the EAA","description":"Worried about video accessibility under the EAA? This guide shows how to meet WCAG 2.1 with accessible players, subtitles, and audio tracks.","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\/what-you-should-know-accessible-video","og_locale":"en_US","og_type":"article","og_title":"What You Should Know About Delivering Accessible Video Under the EAA","og_description":"Worried about video accessibility under the EAA? This guide shows how to meet WCAG 2.1 with accessible players, subtitles, and audio tracks.","og_url":"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video","og_site_name":"Cloudinary Blog","article_published_time":"2025-09-15T14:00:00+00:00","article_modified_time":"2025-09-16T20:51:13+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1757706673\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA.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\/what-you-should-know-accessible-video#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video"},"author":{"name":"melindapham","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9"},"headline":"What You Should Know About Delivering Accessible Video Under the EAA","datePublished":"2025-09-15T14:00:00+00:00","dateModified":"2025-09-16T20:51:13+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video"},"wordCount":1825,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1757706673\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA.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\/what-you-should-know-accessible-video","url":"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video","name":"What You Should Know About Delivering Accessible Video Under the EAA","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1757706673\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA.jpg?_i=AA","datePublished":"2025-09-15T14:00:00+00:00","dateModified":"2025-09-16T20:51:13+00:00","description":"Worried about video accessibility under the EAA? This guide shows how to meet WCAG 2.1 with accessible players, subtitles, and audio tracks.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1757706673\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1757706673\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA.jpg?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/what-you-should-know-accessible-video#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"What You Should Know About Delivering Accessible Video Under the EAA"}]},{"@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\/v1757706673\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA\/Blog_What_You_Should_Know_About_Delivering_Accessible_Video_Under_the_EAA.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/38495","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=38495"}],"version-history":[{"count":1,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/38495\/revisions"}],"predecessor-version":[{"id":38498,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/38495\/revisions\/38498"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/38497"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=38495"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=38495"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=38495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}