Most of your calls are ordinary back-and-forth
Telnyx
Every turn is a normal question with a normal answer, so what matters is the wait a caller gets most of the time rather than the worst case.
TTFAB — time to first audio byte— is the gap between the caller going quiet and the agent's first sound. The pause a real caller sits through on every turn. Lower is better. Lowest median so far: Telnyx at 1,270 ms. Steadiest on its worst turns: ElevenLabs at 1,633 ms p95.
When someone asks which voice agent platform is fastest, the useful answer is not a podium. The same measurement read two ways picks two different winners. Ask which pause your callers would actually notice, then route to that winner and the measured number behind it.
Telnyx
Every turn is a normal question with a normal answer, so what matters is the wait a caller gets most of the time rather than the worst case.
ElevenLabs
Long pauses make callers talk over the agent or hang up, and that is a property of the slow turns, not the typical ones. Judge on the tail.
Time from the moment the caller stops speaking to the moment the agent's audio starts — the silence a real caller sits through on every turn. Measured from a saved recording of the actual phone call, not from any API timestamp. Lower is better.
Every platform is reported on two readings of that same measurement, and a platform can lead one without leading the other.
| Reading | The question it answers | What it means |
|---|---|---|
| Median (p50) | How long is the pause on a normal turn? | Half of all turns are faster than this. It is the wait a caller gets most of the time, and the number to compare if the calls you care about are ordinary ones. |
| Tail (p95) | How bad is it when it is bad? | One turn in twenty is at least this slow. It matters more than it looks on a phone call: past roughly two seconds of silence a caller assumes the line dropped and starts talking again, which collides with the agent's reply and derails the turn. A platform can win the median and still do this to callers twice a conversation. |
The p95 / median column is the two read together — the tail penalty. At 1.2× a platform's bad turns feel close to its normal ones. At 3× a caller regularly waits three times what the median promised.
Pooled over every usable turn (4 measured turns per call). Discarded turns are counted, not hidden — a platform that fails to answer is worse than one slightly slower.
| # | Platform | TTFAB p50 | TTFAB p95 | Usable turns | Cost/min |
|---|---|---|---|---|---|
| 1 | Telnyx | 1,270 ms | 2,015 ms | 40/40 | $0.0500 |
| 2 | ElevenLabs | 1,362 ms | 1,633 ms | 40/40 | $0.0674 |
| 3 | Bland AI | 1,493 ms | 2,162 ms | 40/40 | $0.1407 |
| 4 | Vapi | 1,508 ms | 1,912 ms | 37/40 | $0.0841 |
| 5 | Retell AI | 1,814 ms | 2,329 ms | 38/39 | $0.1339 |
Discarded turns: Vapi 3 (vad_disagree ×3); Retell AI 1 (vad_disagree ×1). A discard is a turn we refuse to time, not one the platform failed — it is counted here rather than dropped silently.
A platform measures from where it stands, and the caller is not standing there. We checked that two ways on this bench. A platform's own recording of a call reads roughly 550 ms earlier than our recording of the same call. The latency a platform reports for itself runs roughly 490 ms below what we measure from that call's audio. The two figures agree, and that agreement is the finding: both describe the moment a reply was produced, not the moment a caller heard it. Neither is dishonest — they answer a different question than the one a caller is asking. This board answers the caller's.
So no platform timestamp is used anywhere on this board. No dashboard figure is copied. Both ends of every measurement are found in the call's own recording. A speech detector locates the moment our caller stops talking and the moment the agent's audio starts. An energy pass refines each to the sample. A second, independent detector has to agree — where the two disagree beyond tolerance, the turn is discarded rather than averaged. The analyzer runs offline on the saved audio, with no credentials and no network. Anyone who does not trust us can re-derive every figure from the recording.
1. A caller robot dials the platform's agent over a real phone call and reads a fixed script — a greeting, several scripted questions, and a goodbye — one measured turn each.
2. Both sides of the call are recorded on one clock (a dual-channel recording).
3. Both endpoints are then found in that recording: our speech-end (t1) and the agent's reply start (t2), each by a speech detector (Silero VAD) with an energy refinement and an independent cross-check. No timestamp reported by any platform is used.
4. TTFAB = t2 − t1, per turn. Turns failing quality gates (the two sides talking over each other, detectors disagreeing, no reply) are discarded and the discard counts are published.
Every published figure is re-derivable. The caller harness, the offline analyzer, and the per-call artifacts — per-turn timings, quality gates, config receipts — are open at openbenchmarks-labs/voice-agent-latency. Not measured: answer quality, voice quality, price, and platform features — this board measures response latency only.
Recording-path overhead sits inside every figure here. We have not characterised the current path against a known-delay reference, so we quote no overhead figure and subtract none.
We always call from Plivo, which is not a platform under test, but the leg that answers belongs to whoever ships the number: Telnyx on its own network, Retell's and Bland's Twilio-backed inside their own accounts, Vapi's upstream undisclosed, and ElevenLabs — which sells no numbers — on a Twilio number we bought for it. Twilio was a deliberate choice there: a Telnyx number would have worked, but Telnyx is itself on this board, and one platform's network should not carry another platform's row.
A discarded turn is one we refuse to time, not one the platform failed. The two sides talked over each other, our detectors disagreed, or no reply came. Discards are published per reason, because a platform that never answers is worse than one that answers slowly.
Our speech-end is found by a detector, not by matching a known waveform. It carries a few milliseconds of error. Differences smaller than that are not resolvable, and we do not claim them.
Endpointing — how long a platform waits after you stop talking before it decides you are finished — is pinned to 0.1 s on Telnyx, Vapi and Retell. It is the one setting we do not leave at the default, and the reason is that it is a timer sitting inside the number being measured: a platform that ships a 1.5 s wait posts a slower TTFAB without its stack being any slower, and the board would be comparing configuration choices rather than engineering. Vapi shipped 0.4 s (1.5 s after speech ending without punctuation) and Retell 1000 ms; both now run 0.1 s. Bland and ElevenLabs expose no equivalent fixed-wait knob, so they run whatever they ship and their figures still contain a wait we could not equalise.
Time from the moment the caller stops speaking to the moment the agent's audio starts — the silence a real caller sits through on every turn. Measured from a saved recording of the actual phone call, not from any API timestamp. Lower is better.
A platform measures from where it stands, and the caller is not standing there. We checked that two ways on this bench. A platform's own recording of a call reads roughly 550 ms earlier than our recording of the same call. The latency a platform reports for itself runs roughly 490 ms below what we measure from that call's audio. The two figures agree, and that agreement is the finding: both describe the moment a reply was produced, not the moment a caller heard it. Neither is dishonest — they answer a different question than the one a caller is asking. This board answers the caller's.
A caller robot dials the platform's agent over a real phone call and reads a fixed script — a greeting, several scripted questions, and a goodbye — one measured turn each. Both sides of the call are recorded on one clock (a dual-channel recording). Both endpoints are then found in that recording: our speech-end (t1) and the agent's reply start (t2), each by a speech detector (Silero VAD) with an energy refinement and an independent cross-check. No timestamp reported by any platform is used. TTFAB = t2 − t1, per turn. Turns failing quality gates (the two sides talking over each other, detectors disagreeing, no reply) are discarded and the discard counts are published.
The stack is not pinned. Each agent runs the model, speech recognition and voice the platform gives a new signup, and we record what it chose. Endpointing is the single exception — it is a timer inside the number we report, so where a platform exposes it we set it to 0.1 s. That one override is stated in full below. Pinning a stack measures a platform you would have to configure to match, not the one you would buy — and it excludes the vertically integrated platforms outright, since you cannot drop a third-party speech recogniser into a platform that owns its own.
Not measured: answer quality, voice quality, price, and platform features — this board measures response latency only. Treat those as vendor claims until measured.
Three views of the same measured runs — every page is built from this live benchmark data, so they move when a new platform lands.