Disclosure: this post contains affiliate links; I may earn a commission at no cost to you.
TL;DR: On list prices, Murf's Falcon 2.1 is $0.01 per 1,000 characters and ElevenLabs' cheapest API tier is $0.04. At 10 million characters a month that is $100 against $400. The gap is real, but price is only one of four things to check before you switch.
The rate card (list prices, pay-as-you-go API)
| Model | Per 1,000 chars | Per 1M chars | Pitch |
|---|---|---|---|
| Murf Falcon 2.1 | $0.01 | $10 | Conversational / agents, first audio under 100 ms |
| Murf Gen2 | $0.03 | $30 | Studio-quality voiceover |
| ElevenLabs v4 Turbo / Flash | $0.04 | $40 | Real-time and agents |
| ElevenLabs v4 / v3 / Multilingual v2 | $0.08 | $80 | Most expressive |
Sources: murf.ai/pricing and elevenlabs.io/pricing/api, as checked 4 Nov 2026. Murf's purchased credit does not expire and the free trial gives $10 of API credit with no card. Vendors change prices often, so re-check before committing.
Worked cost example
Assumption: about 1,000 characters is roughly one minute of speech. Say your app speaks 10,000 minutes a month, so 10M characters.
| Monthly volume | Murf Falcon | Murf Gen2 | ElevenLabs Turbo/Flash | ElevenLabs v4 |
|---|---|---|---|---|
| 1M chars | $10 | $30 | $40 | $80 |
| 10M chars | $100 | $300 | $400 | $800 |
| 100M chars | $1,000 | $3,000 | $4,000 | $8,000 |
A fair A/B test in 20 lines
Do not trust anyone's demo page, including mine. Render the same ten of your own lines with both and listen blind.
import requests, pathlib
LINES = pathlib.Path("lines.txt").read_text().splitlines()[:10]
def murf(text, i):
r = requests.post("https://api.murf.ai/v1/speech/generate",
headers={"api-key": MURF_KEY},
json={"text": text, "voiceId": "YOUR_VOICE_ID", "modelVersion": "FALCON"})
# check Murf's docs for the exact response field holding the audio URL
open(f"murf_{i}.mp3","wb").write(requests.get(r.json()["audioFile"]).content)
def eleven(text, i):
r = requests.post("https://api.elevenlabs.io/v1/text-to-speech/YOUR_VOICE_ID",
headers={"xi-api-key": ELEVEN_KEY},
json={"text": text, "model_id": "eleven_flash_v2_5"})
open(f"eleven_{i}.mp3","wb").write(r.content)
for i, t in enumerate(LINES):
murf(t, i); eleven(t, i)
Field names and model IDs can change; confirm both against each vendor's current API docs before running.
Decision table
| If you need... | Pick |
|---|---|
| Lowest per-character cost for agents or bulk narration | Murf Falcon |
| Studio-quality voiceover at a moderate price | Murf Gen2 |
| Widest language and expressiveness range, voice cloning on cheap plans | ElevenLabs |
| Not sure | Run the A/B above, it costs under a dollar |
Four things to check beyond price: voice quality for your language, latency in your region, request-size limits (Murf caps requests at around 3,000 characters per third-party reports), and licensing for commercial use.
Try Murf: Murf API free trial
Or stay with ElevenLabs: ElevenLabs
Sources
- https://murf.ai/pricing
- https://elevenlabs.io/pricing/api
- https://help.murf.ai/murf-api-plans-and-limits
Full disclosure: TokenLean uses affiliate links for Murf and ElevenLabs. If you sign up through them I may earn a commission at no extra cost to you. I only recommend tools I think fit the job described.
Top comments (0)