We are updating the Data API to match how YouTube counts views for Shorts.
Learn more
Implementation: Captions
Stay organized with collections
Save and categorize content based on your preferences.
The following examples show how to use the YouTube Data API (v3) to perform functions related to captions.
Retrieve a list of caption tracks for a video
Create a caption track
This query cannot be tested using the APIs Explorer because the APIs Explorer does not support the ability to upload files, which is a requirement for this method.
You can use the API's captions.insert
method to upload a new caption track for a video. When uploading a track, you must specify a value for the following caption
resource properties:
The following additional options are available when uploading a caption track:
-
If you set the sync
parameter to true
, YouTube will disregard any time codes that are in the uploaded caption file and generate new time codes for the captions.
You should set the sync
parameter to true
if you are uploading a transcript, which has no time codes, or if you suspect the time codes in your file are incorrect and want YouTube to try to fix them.
-
If you set the caption
resource's snippet.isDraft
property to true
, the track will not be publicly visible.
See the captions.insert
method's documentation for code samples.
Download a caption track
This query cannot be tested using the APIs Explorer because the APIs Explorer does not support the ability to download files.
To download a specific caption track, call the captions.download
method. Set the id
parameter value to the YouTube caption track ID that uniquely identifies the caption track that you are downloading. Your request must be authorized using OAuth 2.0.
The v3 API supports the following options:
-
To specify that a caption track should be returned in a specific format, set the tfmt
parameter value to identify the desired format. The parameter definition lists supported values.
-
To retrieve a translation of a caption track, set the tlang
parameter value to an ISO 639-1 two-letter language code that identifies the desired caption language. The translation is generated by using machine translation, such as Google Translate.
See the captions.download
method's documentation for code samples.
Update a caption track
The API supports the ability to change a caption track's draft status, upload a new caption track for a file, or both.
You can use the APIs Explorer to test the ability to change a track's draft status. However, you cannot use the APIs Explorer to update the actual caption track because tool does not support the ability to upload files.
The request below retrieves a list of captions for a video on the Google Stories YouTube channel:
The request updates the draft status of a caption track to true
, which means the track will not be publicly visible. To complete the request in the APIs Explorer, you need to set the id
property's value to identify a caption track.
https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.captions.update?
part=snippet
See the captions.update
method's documentation for code samples.
Delete a caption track
This example shows how to delete a caption track. The example has the following steps:
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-20 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-20 UTC."],[[["\u003cp\u003eThis document provides instructions on how to use the YouTube Data API (v3) to manage video captions.\u003c/p\u003e\n"],["\u003cp\u003eYou can retrieve a list of caption tracks for a specific video using the \u003ccode\u003ecaptions.list\u003c/code\u003e method, requiring OAuth 2.0 authorization.\u003c/p\u003e\n"],["\u003cp\u003eUploading a new caption track to a video is achieved using the \u003ccode\u003ecaptions.insert\u003c/code\u003e method, requiring the \u003ccode\u003esnippet.videoId\u003c/code\u003e, \u003ccode\u003esnippet.language\u003c/code\u003e, and \u003ccode\u003esnippet.name\u003c/code\u003e properties to be set.\u003c/p\u003e\n"],["\u003cp\u003eDownloading a specific caption track is possible via the \u003ccode\u003ecaptions.download\u003c/code\u003e method, including options to specify the desired format and retrieve a translated version.\u003c/p\u003e\n"],["\u003cp\u003eThe API allows for updating a caption track's draft status and even deleting it completely using the \u003ccode\u003ecaptions.update\u003c/code\u003e and \u003ccode\u003ecaptions.delete\u003c/code\u003e methods respectively.\u003c/p\u003e\n"]]],["The YouTube Data API (v3) facilitates caption management. Key actions include: retrieving caption track lists for a video via `captions.list`; creating new tracks with `captions.insert`, specifying video ID, language, and name; downloading tracks with `captions.download`, allowing format and language selection; updating track status or file with `captions.update`; and deleting tracks using `captions.delete` after retrieving the track ID. Uploading caption files cannot be tested in the APIs Explorer.\n"],null,["The following examples show how to use the YouTube Data API (v3) to perform functions related to captions.\n\nRetrieve a list of caption tracks for a video \nTo retrieve a list of caption tracks that are available for a specific video, call the [captions.list](/youtube/v3/docs/captions/list) method. Set the [videoId](/youtube/v3/docs/captions/list#videoId) parameter value to the YouTube video ID that uniquely identifies the video for which you are retrieving captions. Your request must be authorized using OAuth 2.0.\n\nThe request below retrieves a list of captions for a video on the Google Stories YouTube channel: \n\n```\nhttps://developers.google.com/apis-explorer/#p/youtube/v3/youtube.captions.list?\npart=snippet\n&videoId=PRU2ShMzQRg\n```\n\nSee the [captions.list](/youtube/v3/docs/captions/list#usage) method's documentation for code samples.\n\nCreate a caption track \nThis query cannot be tested using the APIs Explorer because the APIs Explorer does not support the ability to upload files, which is a requirement for this method.\n\nYou can use the API's [captions.insert](/youtube/v3/docs/captions/insert) method to upload a new caption track for a video. When uploading a track, you must specify a value for the following `caption` resource properties:\n\n\u003cbr /\u003e\n\n- [snippet.videoId](/youtube/v3/docs/captions#snippet.videoId) - This identifies the video to which the caption track is being added.\n- [snippet.language](/youtube/v3/docs/captions#snippet.language) - The language of the caption track.\n- [snippet.name](/youtube/v3/docs/captions#snippet.name) - The name of the caption track.\n\n\u003cbr /\u003e\n\nThe following additional options are available when uploading a caption track:\n\n- If you set the [sync](/youtube/v3/docs/captions/insert#sync) parameter to `true`, YouTube will disregard any time codes that are in the uploaded caption file and generate new time codes for the captions.\n\n You should set the [sync](/youtube/v3/docs/captions/insert#sync) parameter to `true` if you are uploading a transcript, which has no time codes, or if you suspect the time codes in your file are incorrect and want YouTube to try to fix them.\n- If you set the `caption` resource's [snippet.isDraft](/youtube/v3/docs/captions#snippet.isDraft) property to `true`, the track will not be publicly visible.\n\nSee the [captions.insert](/youtube/v3/docs/captions/insert#examples) method's documentation for code samples.\n\nDownload a caption track \nThis query cannot be tested using the APIs Explorer because the APIs Explorer does not support the ability to download files.\n\nTo download a specific caption track, call the [captions.download](/youtube/v3/docs/captions/download) method. Set the [id](/youtube/v3/docs/captions/download#id) parameter value to the YouTube caption track ID that uniquely identifies the caption track that you are downloading. Your request must be authorized using OAuth 2.0.\n\nThe v3 API supports the following options:\n\n- To specify that a caption track should be returned in a specific format, set the [tfmt](/youtube/v3/docs/captions/download#tfmt) parameter value to identify the desired format. The parameter definition lists supported values.\n\n- To retrieve a translation of a caption track, set the [tlang](/youtube/v3/docs/captions/download#tlang) parameter value to an [ISO 639-1 two-letter language code](http://www.loc.gov/standards/iso639-2/php/code_list.php) that identifies the desired caption language. The translation is generated by using machine translation, such as Google Translate.\n\nSee the [captions.download](/youtube/v3/docs/captions/download#examples) method's documentation for code samples.\n\nUpdate a caption track \nThe API supports the ability to change a caption track's [draft status](/youtube/v3/docs/captions#snippet.isDraft), upload a new caption track for a file, or both.\n\nYou can use the APIs Explorer to test the ability to change a track's draft status. However, you cannot use the APIs Explorer to update the actual caption track because tool does not support the ability to upload files.\n\nThe request below retrieves a list of captions for a video on the Google Stories YouTube channel:\n\nThe request updates the draft status of a caption track to `true`, which means the track will not be publicly visible. To complete the request in the APIs Explorer, you need to set the `id` property's value to identify a caption track. \n\n```\nhttps://developers.google.com/apis-explorer/#p/youtube/v3/youtube.captions.update?\npart=snippet\n```\n\nSee the [captions.update](/youtube/v3/docs/captions/update#usage) method's documentation for code samples.\n\nDelete a caption track \nThis example shows how to delete a caption track. The example has the following steps:\n\n- **Step 1: Retrieve the caption track ID**\n\n Follow the steps above to [retrieve a list of caption tracks](#captions-list) for a video. The list could be used to display a list of caption tracks, using each track's ID as a key.\n- **Step 2: Delete the track**\n\n Call the [captions.delete](/youtube/v3/docs/captions/delete) method to delete a specific video. In the request, the `id` parameter specifies the caption track ID of the track that you are deleting. The request must be authorized using OAuth 2.0. If you are testing this query in the APIs Explorer, you will need to substitute a valid caption track ID for the `id` parameter value. \n\n ```\n https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.captions.delete?\n id=CAPTION_TRACK_ID\n ```"]]