DEV Community

TokenLean
TokenLean

Posted on Originally published at tokenlean.wordpress.com

Murf vs ElevenLabs API: what 1 million characters of speech really costs (Nov 2026)

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)
Enter fullscreen mode Exit fullscreen mode

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

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)