Facebook SRT file names: the caption format Meta accepts on video ads, and every language code
Meta only uploads a SubRip caption file named like filename.en_US.srt. The naming rule, the format checks, all 138 codes, and English-only auto-captions.
- Hristijan Jankulovski
- 13 min read
Meta accepts SubRip (.srt) caption files on video ads, and the file name decides
whether the upload works. It has to read filename.[language code]_[country code].srt,
as in ice_cream_ad.en_US.srt, and Meta says "Your captions won't upload if the file
name is written incorrectly or doesn't use the correct language and country code."
The codes are case sensitive: language in lower case, country in upper case. Meta's
ads page lists 138 codes. Its automated captions are "only available in English and
can only be used on Facebook and Instagram."
Uploaded captions attach to the video, not the ad. Meta's captions page says: "If you use the same video in multiple ads, the captions appear in every ad that uses that video. If you change the captions in one ad, the same changes appear in all the ads."
What should a Facebook SRT file name look like?
Three parts, joined by a dot and an underscore:
| Part | Example | Rule |
|---|---|---|
| File name | ice_cream_ad | Meta's example uses the video's name |
| Language code | en | Lower case |
| Country code | US | Upper case, after an underscore |
Facebook's naming convention page adds a rule the ads page leaves out: "Language and country codes are case sensitive. Language needs to be in lower case and country needs to be in upper case."
Read against that rule and Meta's code list, these names fail:
| File name | What's wrong | Name that matches the list |
|---|---|---|
ad.en-US.srt | A hyphen where Meta's format has an underscore | ad.en_US.srt |
ad.en_us.srt | Country code in lower case | ad.en_US.srt |
ad.EN_US.srt | Language code in upper case | ad.en_US.srt |
ad.en.srt | No country code | ad.en_US.srt or ad.en_GB.srt |
ad.es_419.srt | es_419 isn't on the list; Meta's general Spanish is es_LA | ad.es_LA.srt |
ad.en_CA.srt | Canada isn't listed for English. The English codes are en_US, en_GB and en_IN, plus English (Pirate) and English (Upside Down) | ad.en_US.srt |
Several codes aren't what you'd guess. Arabic has one code, ar_AR. German has only
de_DE. Filipino is tl_PH, and tl_ST is Klingon. The list also carries English
(Pirate) en_PI, English (Upside Down) en_UD and Leet Speak fb_LT.
Does Meta accept SRT files?
Yes, for video ads and for videos posted on Facebook. The ads page says: "You can upload a SubRip (.srt) file with the captions you've created for your video. You can create SRT files with most types of video editing software." SubRip is the only caption file format either page names.
In Ads Manager the upload sits inside the video editor:
- Start creating the ad, and upload or create your video in the Ad creative section.
- After the video loads, click Edit video, then Captions.
- In Video captions, click Upload captions, then Select file.
- Pick the SRT file and click Save.
"After your ad begins to run, your video captions show to everyone who views the video."
Does Instagram support SRT files?
Meta's ads page puts no placement limit on uploaded captions: they're uploaded in Ads Manager and belong to the video. The one platform limit on that page is on automated captions, which "can only be used on Facebook and Instagram." Meta's Instagram Reels ad specs list "Video Captions: Optional, but recommended."
Meta doesn't describe uploading an SRT file to an organic Instagram post.
How do you check an SRT caption file before you upload it?
Meta's ads page gives the naming rule and nothing on the file's contents. Facebook's page on problems adding captions to a reel does, and it points at the file first: "the SubRip (.srt) caption file you're trying to upload may be formatted incorrectly."
Its rules:
- "Each block should include a number, a start and end time for the subtitle, and the subtitle text."
- "Blocks should be separated by a single line, and there shouldn't be any spaces or lines after the last block in the file."
- "Each subtitle has a unique sequence number. Start with 1 and continue to the last subtitle in the file."
- "The times include every digit in the format hh:mm:ss,fff. Be sure to add leading zeros (example: 01:09:05,050) as necessary and include only two colons and one comma."
- "The text file is encoded UTF-8. If it's not encoded in UTF-8, try opening the file in any text editor and saving it again under a new file name."
In SubRip, two blocks look like this:
1
00:00:00,500 --> 00:00:02,800
Cold brew in four minutes.
2
00:00:03,000 --> 00:00:05,200
No grinder, no filter.
A time written with a period, 00:00:00.500, breaks the rule: Meta's format asks for
exactly one comma. So does a blank line or a trailing space after the last block.
That page is written for reels on Facebook ("All videos on Facebook are now Reels" since September 2025, it says). The ads page gives no separate format rules.
Can Meta generate captions in other languages?
No. "Automated captions are only available in English and can only be used on Facebook and Instagram." For any other language, you upload an SRT file.
The rest of the automated route, from the same page:
- "It may take several minutes for captions to generate."
- If "your video doesn't have sound or if our system can't detect sound from the video, you'll only have the option to manually add captions."
- You review them before saving, and can edit the text, change how long each caption stays on screen, add one or delete one.
- Under Options you can delete, share or download the captions file. A share link "expires after 72 hours."
Uploaded captions or captions burned into the video?
Uploaded and automated captions are "added to the video and not the ad", in Meta's words, and stay separate from the picture. Burned-in captions are part of the picture. Meta's caption pages don't cover them; its placement specs do.
| Uploaded SRT or automated captions | Captions burned into the video | |
|---|---|---|
| Where they live | On the video in Meta's system, shared by every ad that uses it | In the pixels of the file |
| Who sees them in an ad | "everyone who views the video" once the ad runs | Everyone, everywhere the file plays |
| Editing | Change once and "the same changes appear in all the ads" | Re-export the video |
| Language | One file per language and country code | One language per video file |
On organic Page videos the behavior differs from ads. The Page captions page says "People who watch your Page's video with sound turned off will automatically see captions. People who watch your video with sound turned on will need to turn on captions to see them", and the caption language follows each viewer's preferred language.
Burned-in captions are text inside the frame, so they fall under the same space rule as any overlay. The Reels spec says to consider "leaving at least 14% of the top, 35% of the bottom, and 6% on each side of your asset free from text, logos, or other important creative elements." A caption line near the bottom of the frame has to sit above that 35%. Drop a frame into the free safe zone checker to see whether yours clear it, and see why those figures are percentages, not pixels. Meta's wider advice on captions and sound for each placement is in what Meta recommends for video ads.
Facebook's two code lists don't match
Meta keeps two lists. The ads page's "Supported languages and country codes for
captions" has 138 entries. The general Facebook naming page, for videos and Page
videos, has 107. Every code on the shorter list is on the longer one, and 31 are on
the ads list only, among them Amharic am_ET, Burmese my_MM, Hausa ha_NG, Lao
lo_LA, Sinhala si_LK, Yoruba yo_NG and Japanese (Kansai) ja_KS.
So a caption file for an ad in one of those 31 languages matches the ads list, while the same file on an organic Facebook video uses a code the general page doesn't list. The table below marks which codes appear on both.
Every caption language code Meta lists for video ads
In the order Meta lists them, with Meta's language names.
| Language | Code | Also on Facebook's general list |
|---|---|---|
| Afrikaans | af_ZA | Yes |
| Akan | ak_GH | No |
| Amharic | am_ET | No |
| Arabic | ar_AR | Yes |
| Assamese | as_IN | No |
| Aymara | ay_BO | Yes |
| Azerbaijani | az_AZ | Yes |
| Belarusian | be_BY | Yes |
| Bulgarian | bg_BG | Yes |
| Bengali | bn_IN | Yes |
| Breton | br_FR | No |
| Bosnian | bs_BA | Yes |
| Catalan | ca_ES | Yes |
| Sorani Kurdish | cb_IQ | No |
| Cherokee | ck_US | Yes |
| Corsican | co_FR | No |
| Czech | cs_CZ | Yes |
| Cebuano | cx_PH | Yes |
| Welsh | cy_GB | Yes |
| Danish | da_DK | Yes |
| German | de_DE | Yes |
| Greek | el_GR | Yes |
| English (UK) | en_GB | Yes |
| English (India) | en_IN | Yes |
| English (Pirate) | en_PI | No |
| English (Upside Down) | en_UD | No |
| English (US) | en_US | Yes |
| Esperanto | eo_EO | Yes |
| Spanish (Chile) | es_CL | Yes |
| Spanish (Colombia) | es_CO | Yes |
| Spanish (Spain) | es_ES | Yes |
| Spanish | es_LA | Yes |
| Spanish (Mexico) | es_MX | Yes |
| Spanish (Venezuela) | es_VE | Yes |
| Estonian | et_EE | Yes |
| Basque | eu_ES | Yes |
| Persian | fa_IR | Yes |
| Leet Speak | fb_LT | No |
| Fulah | ff_NG | No |
| Finnish | fi_FI | Yes |
| Faroese | fo_FO | Yes |
| French (Canada) | fr_CA | Yes |
| French (France) | fr_FR | Yes |
| Frisian | fy_NL | Yes |
| Irish | ga_IE | Yes |
| Galician | gl_ES | Yes |
| Guarani | gn_PY | Yes |
| Gujarati | gu_IN | Yes |
| Classical Greek | gx_GR | Yes |
| Hausa | ha_NG | No |
| Hebrew | he_IL | Yes |
| Hindi | hi_IN | Yes |
| Croatian | hr_HR | Yes |
| Hungarian | hu_HU | Yes |
| Armenian | hy_AM | Yes |
| Indonesian | id_ID | Yes |
| Igbo | ig_NG | No |
| Icelandic | is_IS | Yes |
| Italian | it_IT | Yes |
| Japanese | ja_JP | Yes |
| Japanese (Kansai) | ja_KS | No |
| Javanese | jv_ID | Yes |
| Georgian | ka_GE | Yes |
| Kazakh | kk_KZ | Yes |
| Khmer | km_KH | Yes |
| Kannada | kn_IN | Yes |
| Korean | ko_KR | Yes |
| Kurdish (Kurmanji) | ku_TR | Yes |
| Latin | la_VA | Yes |
| Ganda | lg_UG | No |
| Limburgish | li_NL | Yes |
| Lingala | ln_CD | No |
| Lao | lo_LA | No |
| Lithuanian | lt_LT | Yes |
| Latvian | lv_LV | Yes |
| Malagasy | mg_MG | Yes |
| Macedonian | mk_MK | Yes |
| Malayalam | ml_IN | Yes |
| Mongolian | mn_MN | Yes |
| Marathi | mr_IN | Yes |
| Malay | ms_MY | Yes |
| Maltese | mt_MT | Yes |
| Burmese | my_MM | No |
| Norwegian (bokmal) | nb_NO | Yes |
| Ndebele | nd_ZW | No |
| Nepali | ne_NP | Yes |
| Dutch (België) | nl_BE | Yes |
| Dutch | nl_NL | Yes |
| Norwegian (nynorsk) | nn_NO | Yes |
| Chewa | ny_MW | No |
| Oriya | or_IN | No |
| Punjabi | pa_IN | Yes |
| Polish | pl_PL | Yes |
| Pashto | ps_AF | Yes |
| Portuguese (Brazil) | pt_BR | Yes |
| Portuguese (Portugal) | pt_PT | Yes |
| Quechua | qu_PE | Yes |
| Romansh | rm_CH | Yes |
| Romanian | ro_RO | Yes |
| Russian | ru_RU | Yes |
| Kinyarwanda | rw_RW | No |
| Sanskrit | sa_IN | Yes |
| Sardinian | sc_IT | No |
| Northern Sámi | se_NO | Yes |
| Sinhala | si_LK | No |
| Slovak | sk_SK | Yes |
| Slovenian | sl_SI | Yes |
| Shona | sn_ZH | No |
| Somali | so_SO | Yes |
| Albanian | sq_AL | Yes |
| Serbian | sr_RS | Yes |
| Swedish | sv_SE | Yes |
| Swahili | sw_KE | Yes |
| Syriac | sy_SY | Yes |
| Silesian | sz_PL | No |
| Tamil | ta_IN | Yes |
| Telugu | te_IN | Yes |
| Tajik | tg_TJ | Yes |
| Thai | th_TH | Yes |
| Turkmen | tk_TM | No |
| Filipino | tl_PH | Yes |
| Klingon | tl_ST | No |
| Turkish | tr_TR | Yes |
| Tatar | tt_RU | Yes |
| Tamazight | tz_MA | No |
| Ukrainian | uk_UA | Yes |
| Urdu | ur_PK | Yes |
| Uzbek | uz_UZ | Yes |
| Vietnamese | vi_VN | Yes |
| Wolof | wo_SN | No |
| Xhosa | xh_ZA | Yes |
| Yiddish | yi_DE | Yes |
| Yoruba | yo_NG | No |
| Simplified Chinese (China) | zh_CN | Yes |
| Traditional Chinese (Hong Kong) | zh_HK | Yes |
| Traditional Chinese (Taiwan) | zh_TW | Yes |
| Zulu | zu_ZA | Yes |
| Zazaki | zz_TR | No |
Sources
- Add captions to your video ad — Meta Business Help Center (accessed November 11, 2026)
- What is the naming convention for SubRip (.srt) files? — Facebook Help Center (accessed November 11, 2026)
- Why you may be having problems adding captions to your reel on Facebook — Facebook Help Center (accessed November 11, 2026)
- Add captions to your Page's video on Facebook — Facebook Help Center (accessed November 11, 2026)
- Video ad specs on Instagram Reels — Meta Ads Guide (accessed November 11, 2026)
Meta changes these lists without notice, so check the code against the source before you name a batch of files.
Terrads makes video ads with the captions already on screen, with a preview of what each app's buttons cover.