ElevenLabs languages: Flash v2.5 has 32, Multilingual v2 29, v4 90+

ElevenLabs lists 32 languages for Flash v2.5, 29 for Multilingual v2 and 90+ for v4 and v4 Turbo. Check your markets against the model, then log it per job.

4 min readSume
All posts

On ElevenLabs' models page, Flash v2.5 (eleven_flash_v2_5) lists 32 languages, Multilingual v2 lists 29, and v4 and v4 Turbo list 90+. If your campaign runs in more than 32 markets, Flash v2.5 cannot cover it, and which model you pick is decided by the language list before price or latency.

The same page gives Flash v2.5 a 40,000 character limit and roughly 75 ms latency, and gives v4 and v4 Turbo a 10,000 character limit. Those matter after the language check, not before it.

The model facts, as read on 2026-10-03

Everything in the table is from the ElevenLabs models overview. The page names the counts but the entry I read does not enumerate the languages, so the lists below are for you to fill from the live page.

ElevenLabs speech models by language coverage (read 2026-10-03)
ModelLanguagesCharacter limitOther detail
Flash v2.5 (eleven_flash_v2_5)3240,000About 75 ms
Multilingual v229Not in the entry readNot in the entry read
v4 (eleven_v4)90+10,000Expressive speech, voice cloning
v4 Turbo (eleven_v4_turbo)90+10,000Real-time variant

Why the count is not the whole check

A language count says how many languages, not which ones. Two models with overlapping lists can still differ on the one language you need, so always test your own market codes against the live list rather than comparing totals. A larger count is also not a quality statement; the page does not rank output quality across languages.

When you localize a video, the voice also has to exist for that language. Treat the model, the language and the voice as one tuple and validate it before a batch, not after it.

Record the language on every job

Sume's job docs say a completed text-to-speech job records how its audio was made: the engine as model_id, the voice, the language, the output_format, and the settings it was synthesized with, each null when the request did not send it. That gives you an audit trail per market: you can list the jobs for a campaign and see which language each take used.

Sume's hosted MCP exposes a tts_create tool for this, per its tools page. When you need one gapless file per language, Timeline audio concatenates 1 to 20 Sume-hosted parts at a flat $0.01 per job according to the docs, with no re-synthesis.

A coverage check you can run

Fill the sets from the models page. The script refuses to run on empty sets, so an unfilled config fails loudly instead of passing everything.

MODEL_LANGS = {
    "eleven_flash_v2_5": set(),  # fill from the models page (32)
    "eleven_v4": set(),          # fill from the models page (90+)
}


def missing(model, markets):
    langs = MODEL_LANGS.get(model)
    if not langs:
        raise RuntimeError(f"fill MODEL_LANGS[{model!r}] first")
    return sorted(set(markets) - langs)


if __name__ == "__main__":
    MODEL_LANGS["eleven_flash_v2_5"] = {"en", "es", "fr"}
    print(missing("eleven_flash_v2_5", ["en", "fr", "sw"]))

Decision order

  • List the markets and the language code for each.
  • Drop any model whose live language list misses one of them.
  • Of what remains, check the character limit against your script length.
  • Only then compare latency and price.

A note on the list you did not get

The models page lists the languages by name; this post gives only the counts because those are what I read in full. Pull the live lists into your config file and date them, then re-check them when ElevenLabs ships a new model, because the September 28 changelog shows the lineup moving quickly. A comparison that was true last month can be wrong now.

Also keep the character limit in view for long scripts: a localized script is often longer than the source, and a 10,000 character limit on v4 can split a script that fit in one request in the source language.

Sources

Related posts

More in Models

All Models posts

Written by Sume