Bekzod Erkinov
Listen to Article
Loading...Table of contents · 9 sections
ElevenLabs vs OpenAI TTS: Pricing, Limits and Which to Pick
The two TTS names everyone shortlists price in different units, cap requests differently and gate different things. Here are the published numbers in one unit.
Some links in this post are affiliate links; see our disclosure.
Quick verdict
Decision rule, using only figures from the vendors' pages:
- Pick OpenAI
tts-1if your volume is small and a stock voice with English-first narration is good enough. At 250,000 characters a month the list rate is $3.75 ontts-1, versus $10 (Flash/Turbo) to $20 (v4) at ElevenLabs list rates. The smallest ElevenLabs plan that covers that volume is Creator at $22, which is the minimum you would actually pay. - Pick ElevenLabs if you need single requests longer than OpenAI's 4,096 characters (ElevenLabs lists 10,000 on v4 and Multilingual v2, 40,000 on Flash v2.5), you need the language coverage in its models doc (Flash v2.5: 32 languages, v4 Turbo: 90+), or voice is the product itself.
- Skip both if you only need accessibility read-aloud or internal prototypes. The browser's built-in speech synthesis or an open-source local model costs nothing, and I haven't benchmarked those here.
The cost gap, with tiers named. ElevenLabs Flash/Turbo ($40 per 1M characters) versus OpenAI tts-1 ($15) is about 2.7x. ElevenLabs v4 ($80) versus tts-1-hd ($30) is also about 2.7x. These are list-price pairings, not proven equal-quality tiers; I didn't listen to either. gpt-4o-mini-tts is billed per token with no per-character figure, so "OpenAI is cheaper" is only shown here for tts-1 and tts-1-hd.
What I ran, and what I didn't
I read the vendor pricing pages, model docs and API reference on 2026-10-17. I did not call either API (no paid keys), so I make no quality claims. The one thing I ran is a small Python script that applies the published rates to a few monthly volumes (below).
Untested: this request shape comes from the OpenAI speech reference; I did not run it against the live API.
curl https://api.openai.com/v1/audio/speech \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4o-mini-tts","input":"Hello.","voice":"marin","instructions":"Speak calmly."}' \
--output hello.mp3
Pricing in the same unit
OpenAI's pricing page lists tts-1 at "$15.00 / 1M characters" and tts-1-hd at "$30.00 / 1M characters". gpt-4o-mini-tts is billed per token ($0.60 per 1M text input tokens, $12.00 per 1M audio output tokens), so I can't convert it to characters without inventing a speech-rate assumption, and I won't. Estimate it with a sample of your own text.
ElevenLabs' API pricing page quotes per 1K characters. Converted to per 1M (multiply by 1,000):
| Model | Price per 1M characters | Source unit |
|---|---|---|
OpenAI tts-1 |
$15.00 | $15.00 / 1M chars |
OpenAI tts-1-hd |
$30.00 | $30.00 / 1M chars |
| ElevenLabs Flash / Turbo | $40 | $0.04 / 1K chars |
| ElevenLabs v4 Turbo, v3 Conversational | $40 | $0.04 / 1K chars |
| ElevenLabs v4, v3, Multilingual v2 | $80 | $0.08 / 1K chars |
Subscription allowances come out at the same rate (Starter $6 for 75,000 v4 characters is $80 per 1M), so the subscription doesn't discount the per-character cost. It buys a bundle and raises limits.
Feature comparison
Every cell is from the linked vendor page; "not found" means I did not find it in the pages I read, not that it doesn't exist.
| OpenAI | ElevenLabs | |
|---|---|---|
| Max characters per request | 4,096 (API reference) | 10,000 (v4, Multilingual v2); 5,000 (v3); 40,000 (Flash v2.5) (models doc) |
| Languages | About 57, "Whisper-like" (guide) | 32 (Flash v2.5); 90+ (v4 Turbo) (models doc) |
| Streaming | Yes, chunked transfer (guide) | Not found in my notes |
| Tone / instructions | instructions string on gpt-4o-mini-tts only; ignored on tts-1/tts-1-hd |
Not found in my notes |
| Voice cloning | Custom voices from a consent recording (guide) | Instant cloning listed on Starter; professional cloning on Creator and up (pricing page) |
| Vendor-stated latency | None found for TTS | Flash ~75ms, v4 Turbo ~100ms (models doc) |
| Commercial licence | Not found | Listed on Starter and up (pricing page) |
| API access by plan | Pay as you go | Pro lists "44.1kHz PCM audio output via API"; the page did not state API access for lower plans. Unverified, so check before you buy |
| Annual price | n/a | Not shown on the pricing page's plan cards; its FAQ reportedly equates annual billing to ten times the monthly price (so $60 / $220 / $990 / $2,990 / $9,900, as read through a page-fetch tool). Unverified |
What that looks like at real volumes
The same arithmetic at five monthly volumes, plus the smallest ElevenLabs plan whose allowance covers each one, for v4 characters and for Flash/Turbo (whose allowance is double). Plan prices are the monthly-billing prices from the plan table below.
import math
# (name, monthly $, v4 chars included); Flash/Turbo allowance is double
plans = [("Free",0,10_000),("Starter",6,75_000),("Creator",22,275_000),
("Pro",99,1_238_000),("Scale",299,3_738_000),("Business",990,12_375_000)]
def el_plan(chars, mult=1):
for n,p,c in plans:
if chars <= c*mult: return f"{n} ${p}"
return "above Business"
print(f"{'chars/mo':>11} {'tts-1':>8} {'tts-1-hd':>9} {'EL v4':>9} {'EL Flash':>9} {'plan (v4)':<16}plan (Flash)")
for ch in [50_000, 250_000, 1_000_000, 5_000_000, 20_000_000]:
print(f"{ch:>11,} {ch*15/1e6:>8.2f} {ch*30/1e6:>9.2f} {ch*80/1e6:>9.2f} {ch*40/1e6:>9.2f} {el_plan(ch):<16}{el_plan(ch,2)}")
for doc in [3_000, 50_000, 400_000]:
print(f"{doc:,}-char doc: OpenAI calls >= {math.ceil(doc/4096)}, ElevenLabs v4 (10k) >= {math.ceil(doc/10_000)}, Flash v2.5 (40k) >= {math.ceil(doc/40_000)}")
Output, produced by executing the script above with python -I cost.py (dollar columns are list-rate cost per month):
chars/mo tts-1 tts-1-hd EL v4 EL Flash plan (v4) plan (Flash)
50,000 0.75 1.50 4.00 2.00 Starter $6 Starter $6
250,000 3.75 7.50 20.00 10.00 Creator $22 Creator $22
1,000,000 15.00 30.00 80.00 40.00 Pro $99 Pro $99
5,000,000 75.00 150.00 400.00 200.00 Business $990 Scale $299
20,000,000 300.00 600.00 1600.00 800.00 above Business Business $990
3,000-char doc: OpenAI calls >= 1, ElevenLabs v4 (10k) >= 1, Flash v2.5 (40k) >= 1
50,000-char doc: OpenAI calls >= 13, ElevenLabs v4 (10k) >= 5, Flash v2.5 (40k) >= 2
400,000-char doc: OpenAI calls >= 98, ElevenLabs v4 (10k) >= 40, Flash v2.5 (40k) >= 10
At low volume the bill is small either way. At 50,000 characters a month, OpenAI is $0.75 and ElevenLabs is $6 because you must buy the Starter bundle.
ElevenLabs bundles waste money in the gaps. A million v4 characters costs $80 at list rate, but the smallest plan that covers it is Pro at $99, because Creator stops at 275,000. At 5M characters the list rate says $400 and the v4 plan says $990. Flash/Turbo helps: 5M Flash characters fit Scale at $299 rather than Business at $990.
OpenAI scales linearly. There is no bundle step because there is no subscription; 20M characters is $300 on tts-1. In my table that volume is above the Business v4 allowance, and the pricing pages I read give no ElevenLabs TTS overage rate.
Plan table (read 2026-10-17)
ElevenLabs sources: pricing and the concurrency help article. All ElevenLabs prices below are monthly billing; the API pricing page shows no separate TTS overage rate. "Characters" are v4 characters; the Flash/Turbo figures are in brackets. I did not re-check the help-article concurrency figures against a live account.
| Plan | Monthly price | Characters (Flash/Turbo) | Concurrency (Flash/Turbo) |
|---|---|---|---|
| ElevenLabs Free | $0 | 10,000 (20,000) | 2 (4) |
| ElevenLabs Starter | $6 standard; $1 first month | 75,000 (150,000) | 3 (6) |
| ElevenLabs Creator | $22 standard; $11 first month | 275,000 (550,000) | 5 (10) |
| ElevenLabs Pro | $99 | 1,238,000 (2,475,000) | 10 (20) |
| ElevenLabs Scale | $299 | 3,738,000 (7,475,000) | 15 (30) |
| ElevenLabs Business | $990 | 12,375,000 (24,750,000) | 15 (30) |
| OpenAI API | Pay as you go, no subscription | 4,096 chars per request | gpt-4o-mini-tts Build tier: 2,000 RPM / 150,000 TPM |
Don't compare the last column across rows. ElevenLabs concurrency counts requests in flight at the same moment. OpenAI's 2,000 RPM counts requests started per minute, with a separate 150,000 tokens-per-minute cap, so the two numbers are different units and neither says which vendor handles more load. OpenAI's other rate-limit tiers for gpt-4o-mini-tts are Launch (10,000 RPM / 2,000,000 TPM) and Grow (10,000 RPM / 8,000,000 TPM), per its model page. I found no published rate limits for tts-1 or tts-1-hd.
The first-month prices are promotional; the cost script uses the standard $6 and $22. Business has the same concurrency as Scale, so the extra $691 buys allowance, not parallelism.
Pros and cons
ElevenLabs
- Pros: up to 40,000 characters per request (Flash v2.5), 10,000 on v4 and Multilingual v2, but only 5,000 on v3, which is listed at $80 per 1M; 32 languages on Flash v2.5 and 90+ on v4 Turbo per the models doc; Flash stated at ~75ms and v4 Turbo at ~100ms, per that doc; a startup grant of 12 months and 33M characters is listed on the pricing page.
- Cons: $40-$80 per 1M characters, about 2.7x the comparable OpenAI tier; capacity is gated by concurrency (Scale and Business both top out at 15, or 30 for Flash/Turbo); bundle steps mean you often pay above the list rate; Flash v2 is English only. Skip it if your volume is low and English narration is enough: you pay the 2.7x premium for capabilities you won't use.
OpenAI TTS
- Pros:
tts-1at $15.00 andtts-1-hdat $30.00 per 1M characters; no subscription;gpt-4o-mini-ttstakes aninstructionsstring for tone;speedfrom 0.25 to 4.0; six output formats (mp3, opus, aac, flac, wav, pcm) and streaming via chunked transfer. The API reference lists 13 built-in voices, though the intro of the guide says 11; I did not reconcile the two, so check the reference for the current list. - Cons: 4,096 characters per call, so a 400,000-character book is at least 98 calls (a lower bound; each join is a place prosody could reset, which I haven't measured);
instructionsis ignored ontts-1/tts-1-hd; the guide points to Whisper-like language support (about 57 languages) and I didn't verify how well each is spoken;gpt-4o-mini-ttsis token-billed, so cost needs a sample of your text; the guide requires telling end users the voice is AI-generated.
Voice quality was not tested by me for either vendor.
Who should buy
Buy ElevenLabs when long inputs, language coverage or a voice-led product is the feature customers pay for, and the 2.7x character cost is a small share of your revenue per user. Start on the free tier to audition voices; 10,000 characters is not much.
Buy OpenAI TTS when speech is a utility (notifications, read-aloud, voice replies in an app that already uses OpenAI) and cost per character dominates. Use gpt-4o-mini-tts if you need tone control via instructions; use tts-1 if you just want cheap.
Worth a look: ElevenLabs suits teams that need long inputs, many languages or voice-led products. Plan fit from the table above: Creator ($22) for ~250k characters a month, Flash on Scale ($299) for 5M. Who should skip it: anyone with low-volume, English-first needs, since the same text costs about 2.7x more than OpenAI
tts-1at list price (Flash/Turbo $40 vs $15 per 1M). Annual pricing and API gating are unverified in the table above; check the live page.
Related: the same break-even method applied to automation tools is in n8n vs Zapier: Self-Host n8n in Docker and Find the Break-Even.
What to do next
- Take 20 representative lines of your real text and run them through both APIs yourself; judge by ear, since I didn't.
- Compute your monthly characters, then price them at $15/$30 per 1M (OpenAI) and $40/$80 per 1M (ElevenLabs), and check which plan bundle you land in.
- Check peak simultaneous requests against the concurrency column before picking an ElevenLabs plan.
- If you use
gpt-4o-mini-tts, measure tokens on a sample to get your real cost. - Confirm annual pricing, overage and API gating on the live ElevenLabs page before committing.
Keep reading
Mastering Multi-Tenant SaaS Architecture Patterns for Enterprise Applications
27 min · 875 views
Web Development10 Essential Tools for Modern Frontend Development
16 min · 821 views
Web DevelopmentGraceful Shutdown Patterns for Laravel Queue Workers in Production
21 min · 249 views
Bekzod Erkinov
AuthorFounder of NextGenBeing. Software engineer working with Laravel, Python, and cloud infrastructure. Writes about patterns that actually hold up in production. Based in Tashkent, Uzbekistan.
Get the AI-Assisted Developer's Field Guide
The workflow, prompts, and tools I use to ship faster with AI — free when you subscribe. Plus new deep-dives in your inbox. No spam, unsubscribe anytime.
Comments (0)
Please log in to leave a comment.
Log In