Summary
Creating captions is easy. Tools abound. But audio description? Not so much. Even as a deaf accessibility pro fluent in captioning, I couldn’t find a simple way to make AD WebVTT files. Until now. Learn how to create free audio description VTT files using a captions or subtitles editor in this step-by-step guide. No paid software. No headaches. It also shows you how to add the video to a WordPress website using two options: YouTube-hosted and server-hosted. One catch. The audio description works with Able Player. The AD track won't work on YouTube.
As an accessibility advocate and professional, I aim to walk the talk and roll the roll by ensuring I create accessible experiences. Adding captioning and subtitles to videos is easy. I’ve got that process down pat. But audio descriptions? I couldn’t figure out that process. While figuring out that process, I added the visual descriptions into the description of the videos. Not ideal, but it’s a little progress.
Quick note: VTT is the file extension for WebVTT, which stands for web video text tracks. Some creators use the VTT format for their caption files. The other known format is a SubRip subtitle SRT file.
Able Player audio description VTT file not working
I wanted my speaker video reel to have audio descriptions (AD). Fortunately, the team that audited my website for accessibility created a WebVTT file for AD.
However, Able Player, an accessible video player, didn’t read half of the audio descriptions in the VTT. I couldn’t figure out why. That started my rabbit hole adventures to nowhere. I’d revisit the problem every few months.
Even search engines and AI couldn’t help. They mostly pointed to pricey tools or apps that didn’t support audio description. For example, one app does “descriptions,” which describe what the video is about. They’re not for audio descriptions.
One good thing came out of my conversation with AI. I shared my audio description VTT file. AI noticed something I had missed. The timings were too short for some of the descriptions. Sure enough, the audio descriptions in the video had very short start and end times.
Since I use Able Player, it pauses for audio descriptions. I love this option because it prevents the video’s audio and the AD’s audio from talking at the same time. I didn’t think the length of the timing mattered. Nonetheless, I gave it a go.
How to create audio description VTT files in caption or subtitle apps and tools
The next step was to fix the timings in the AD file. I couldn’t find an audio description tool that didn’t require filling out a long form or a free trial. While I could manually fix the timings, it’s tedious when you’re talking 00:00:00.052 on a 2-minute video.
Then, the light bulb went off. I use YouTube’s subtitle editor to add closed captions to my videos. YouTube lets me download the caption files as VTT files. (SBV and SRT, too. But they don’t apply here.) Why not use a free tool to create audio descriptions that I already use for captions? That’s exactly what I did.
This process should work with any subtitle or captioning editor or app that exports closed caption files. Bonus points if the app can export VTT files. If it only exports SRT files, you can convert them to VTT. Many free apps can convert SRT files into VTT files.
Testing the audio description timings
I used YouTube’s subtitles editor to create an AD file disguised as a closed caption file. Audio descriptions can be in a VTT file. It’s the same as captions. The timing tells the video when to post the caption or announce the audio description.
And guess what. It worked!!! [Meryl does a silly dance of joy.]
First, here’s what the timing looked like for one of the lines that Able Player ignored.
00:00:00.050 --> 00:00:00.052 Meryl wearing a red dress standing on a red dot on the TEDxPlano stage.
Here’s the fixed timing of the same line.
00:00:00.001 --> 00:00:02.001 Meryl wearing a red dress standing on a red dot on the TEDxPlano stage.
It turns out Able Player ignores cues with ultra-short timings like .050 to .052. I had to stretch them to 2 seconds for the player to notice them. It’s amazing what adding a number before the decimal makes!
It took a couple of tries to get the timing right. The AD would kick in the middle of the video’s audio. I fixed the timing for the AD announcement to occur before or after the video’s audio. Using YouTube’s subtitle editor, I adjusted the audio description timings backward or forward. Now, the audio descriptions pop in between the video’s audio dialogue or close to it. Progress over perfection!
How to create an AD file if you already have captions on a YouTube video
Now, how do you add an audio description file if you already have a caption file? I had to cheat. I created a second video subtitles file. The following screenshot from YouTube’s video subtitles editor page shows two video subtitles. My original closed captions file is identified as English (video language).
I selected “Add language” and then “English (United States)” to create a second subtitles file. Except, this file was the audio description disguised as captions.
If you watch the video on YouTube and switch the caption language from “English (video language)” to “English (United States),” you’ll get the captioned version of the audio description. (Don’t try to go to YouTube to check this out. I had to delete the file because it affected the videos here.) The video on YouTube will not say the audio descriptions.
The cool thing is that captions are accessible to screenreaders and Braille displays. They’d be able to use that audio description disguised as captions. (If I didn’t delete the file.)
Nonetheless, this creates another problem. A person using a screenreader who wants AD will hear the video audio and the screenreader’s reading captions at the same time.
The only way for the audio description disguised as captions to be used as AD on YouTube videos is for Google YouTube to add an audio description track.
I wish Google would add audio descriptions in different languages on YouTube. (Add “Audio Descriptions” option below “Subtitles.” Or they can fake it and make one in the list of languages called “audio description” as a progress over perfection first step.
How to identify captions vs. audio description files
Here’s what goes on behind the scenes to point to the video’s subtitles and AD to their respective VTT files. Obviously, track kind=”captions” tells the player where to grab the captions file. Then, track kind=”descriptions” tells the player where to find the descriptions file.
<track kind="captions" src="captions-file.vtt" srclang="en" label="English"> <track kind="descriptions" src="AD-file.vtt" srclang="en" label="Visual descriptions">
Src is the location of the VTT files. Label identifies the track. It helps you select the right option.
Thankfully, I have Able Player on my website. It allows you to pause the video’s audio to listen to or read the audio description. Yes, you can read the captions and AD! Scroll down to watch how Able Player plays the audio description track for Meryl’s speaker reel.
You can go behind the scenes and peek into the audio description VTT file for my speaker reel to understand how it works.
Steps to create audio description VTT Files with YouTube
Here are the steps for tricking YouTube’s subtitles tool to create an audio description VTT file. You’ll be able to download the VTT file to use it on your website. How to caption videos with YouTube still has most of the steps correct. The main difference is that instead of “transcriptions,” it uses “subtitles.”
- Upload your video to YouTube.
- From your YouTube channel, activate “Subtitles” on the left sidebar.
- Select “Add language.”
- Select a language that’s a different version from your subtitles, such as “English (United States).”
- Write audio descriptions as if you were doing captions.
- Adjust the timing so descriptions start before or at the end of the video’s audio.
- When you’re happy, select “Publish” to save the new AD track.
- Verify you’re back on the “Video subtitles” page.
- Select “Options” for the language track you just created.
- Select “Download.”
- Select “.vtt” and save it.
Now, you have the audio description VTT file.
Troubleshooting tip: Even though I selected VTT and YouTube saved it as VTT, YouTube somehow changed the formatting to SRT. Instead of saving the file, open it in an editor. The clue is in the commas. If there are commas, then it’s SRT.
SRT formatting: 00:00:00,000 --> 00:00:02,919 VTT formatting: 00:00:00.000 --> 00:00:02.919
How to use audio description tracks with WordPress and Able Player
Steps for hosting a video on your server
If you have Able Player, then follow your usual process for adding videos with captions on your website. This website uses WordPress. Upload the video, the caption VTT, and the audio description VTT files into the same folder. Here’s the code in WordPress.
<video id="able-player-1" data-able-player preload="auto" poster="PosterImage.png"> <source src="video.mp4" type="video/mp4"> <track kind="captions" src="captions.vtt" srclang="en" label="English"> <track kind="descriptions" src="descriptions.vtt" srclang="en"> </video> And here's the result.
Steps for videos hosted on YouTube to embed on your website
You can host the video on YouTube. You can display captions and AD on your WordPress website. View this variation in action on the speaking page. Here’s the code for WordPress accessible video integration.
<video data-youtube-id="YouTube-ID" id="able-player-1" data-able-player preload="auto" poster="PosterImage.png" > <track kind="captions" src="captions.vtt" srclang="en" label="English"> <track kind="descriptions" src="description.vtt" srclang="en"> </video>
If you want to use the captions hosted on your website, then do these steps.
- In WordPress admin menu, select “Settings” in the left sidebar.
- Select “Able Player” from Settings submenu.
- Select the box for “User Able Player for all video elements.”
- Select “Save Settings” and you’re golden.
Adding the Transcript button in Able Player
The captions for the video on my speaking page are hosted here instead of YouTube. Why? So, I can have the “Transcript” button on it. Instead of showing the transcript as the default, I want viewers to have it as an option.
Originally, the interactive transcript would appear as the default. It always showed up. You couldn’t turn it off. Thanks to CoPilot, I wasted hours trying to solve the problem. The answer is simple.
Here are the steps to add the Transcript button to Able Player:
- In WordPress admin menu, select “Settings” in the left sidebar.
- Select “Able Player” from Settings submenu.
- Deselect the box for “Insert interactive transcript container.”
- Select “Save Settings” and it should appear.
There are two things I want to fix with the Transcript. Right now, it appears on the left of the video instead of below. This is a problem because it covers some of the text on the webpage. Secondly, I’d like it to look cleaner. It looks like something from the 1990s web days.
Whew! If you try these, I’d love to hear about your experience. Share your link, questions, or ideas. The more we exchange real solutions, the more accessible our digital spaces become. If you don’t use WordPress and use Able Player on your website, let me know if it works for you. And if you find a way to have audio descriptions and captions without using Able Player, I’d like to know that, too.
I know some videos have the audio description built in. That doesn’t work for everyone. I prefer having separate tracks. This lets the user be in control. And that’s always a great thing!
Want to stay in the know?
If this post resonated with you, chances are we should talk. I help organizations make media more inclusive and effective—and I occasionally share content like this when the story’s too good not to tell. Get on my mailing list to hear about new resources, talks, and ways we might collaborate. I do not share emails with anyone or any company.
I suspect you’re encountering a fundamental issue of how player frameworks (like Able Player) display captions, which significantly impacts how they “display” VTT Audio Description tracks – they often only check for whether a cue should be displayed about 4 times a second! And because of how they check whether the cue should be displayed (“is the current time greater than or equal to the start time, and less than or equal to the end time of the cue), any cue that’s less than 1/4th of a second may not be displayed at all!
For captions, this isn’t a big problem, because no captions should be displayed for less than 1/4th of a second. However, for audio description, the issue is not due to VTT audio descriptions having shorter cues (they don’t), but rather the _accuracy_ of when a cue starts is more significant. Audio description is much more likely to “step on” dialog in the video if it isn’t started and ended accurately.
I was involved in research around audio description, including VTT audio description tracks, when I worked at the Video Description Research and Development Center (VDRDC) at the Smith-Kettlewell Eye Research Institute in San Francisco; later on, I help the video.js framework add support for audio description, both as an additional audio track and as a VTT text track.
There are some significant limitations to VTT audio descriptions, not least of which is that the HLS format used by Apple doesn’t support them (metadata doesn’t allow a text track to be marked as audio description; only an audio track can be marked that way, and the iOS player only allows users to turn on audio description if it is a separate audio track). Unfortunately, YouTube hasn’t rolled out broad support for a separate audio description audio track for a video (there is one demo in this video: https://www.youtube.com/watch?v=WaOKSUlf4TM) – generally, you need to upload a whole second video with the audio description added. But some frameworks, like video.js and Brightcove (who use video.js as the core of their player), do support a multiplexed file (in HLS format) with two audio tracks, the original audio and the described version. See https://videojs.com/advanced/?video=elephantsdream for a demo of this.
Thanks for the detailed background. You definitely know a lot about the topic. I’ll have to find some time to check this out and see how it works. Thanks for the resources!
Oh, and one really good tool for creating text audio descriptions is WGBH’s CADET (https://www.wgbh.org/foundation/services/ncam/tools-resources/cadet); I don’t think it “require[s] filling out a long form”, and it certainly isn’t a “free trial”, it’s free as a fully featured tool.
Owen, I am familiar with CADET and tried it a while ago. Cannot recall the experience. Nonetheless, I appreciate your addition and know someone else will, too! Thanks for coming back and adding this tidbit!