← Blog
Explainers · July 3, 2026 · 6 min read

SSML vs. Pause Tokens: Controlling Pacing in AI Voice Tools

If you've used a professional-grade text-to-speech API, you've probably run into SSML — Speech Synthesis Markup Language. If you've used a free browser-based tool, you've probably seen something simpler: bracketed tags like [[p400]] dropped directly into the text. These solve the same underlying problem in different ways, and it's worth understanding both.

What SSML actually is

SSML is an XML-based markup standard for annotating text with speech instructions — pauses, emphasis, pronunciation overrides, even pitch and rate changes for specific words. A snippet looks like this:

<speak>Welcome to the show. <break time="700ms"/> Let's get started.</speak>

It's powerful and precise — you can control almost every aspect of how a sentence is spoken. It's also verbose, easy to get wrong syntactically, and built for developers integrating a TTS API into software, not for someone who just wants to paste in a paragraph and get audio back.

Why most free tools don't expose full SSML

Building a text box that accepts raw XML tags creates a worse experience for almost everyone who isn't already a developer — one unclosed tag and the whole generation fails, with an error message that means nothing to a non-technical user. So most consumer-facing tools, including this one, trade SSML's full flexibility for a much smaller set of plain-text tokens that cover the two or three things people actually need control over in practice: pause length, mainly.

Here, that's three tokens you can drop directly into your script: [[p400]] for a short beat (400 milliseconds), [[p700]] for a sentence-level pause, and [[p1200]] for a longer transition — between segments of a script, for instance.

A concrete example

Compare these two versions of the same line:

Without pause control: "Today's top story. Interest rates just changed. Here's what that means for you."

With pause tokens: "Today's top story. [[p700]] Interest rates just changed. [[p400]] Here's what that means for you."

Read that second version out loud yourself with the pauses in mind — it's closer to how an actual news anchor would deliver it. That's the entire value of pause tokens: they let you encode the rhythm a human reader would naturally add, without needing to learn markup syntax.

What you lose compared to full SSML

Being direct about the tradeoff: pause tokens don't give you word-level emphasis, phoneme-level pronunciation overrides, or per-word rate/pitch changes the way SSML's full tag set does. If you need that level of control — say, forcing correct pronunciation of a specific brand name across thousands of generated files — you likely need a developer-facing API product built around SSML, not a browser tool like this one.

For most scripting — podcast narration, video voiceover, straightforward narration — pause tokens cover the actual gap between "technically correct" and "sounds like a person," which is usually pacing, not fine-grained pronunciation control.