Tools › Text › Text to speech

Text to speech

Paste text, choose a voice, and get an audio file you can keep. The model runs in this tab, so there is no account, no monthly allowance of characters, and the words you paste never leave your machine.

  • Saves a real WAV or MP3, not just playback you cannot capture
  • Sixteen voices, grouped by accent, with the model's own weak ones left out
  • First run downloads the voice model once, 88.1 MB, then it is cached
  • Works offline after that, and there is no per-character cost because nothing runs on a server

Your clips 0

Nothing yet. Clips appear here with a player and a download, and stay until you close the tab.

    Voice

    Speed 1.00×

    View

    How this compares with the other ways

    OptionGives you a fileWhere it runsWhat it costs
    This toolYes, WAV or MP3Your browserNothing, ever, at any length
    Your browser's built-in speechNo, playback onlyYour deviceNothing, but you cannot save it
    A hosted AI voice serviceYesTheir serversPer character, after a free allowance
    Your operating system's voicesSometimes, via an appYour deviceNothing, but the voices are older

    How to turn text into speech

    1. Paste the text you want to hear

    Up to three thousand characters at a time, about two minutes of speech. Longer than that, do it in passes; each clip stays in the list until you close the tab.

    2. Choose a voice and a speed

    Eleven voices, American and British. Filter by All, Female or Male if that narrows it usefully. Speed runs from 0.70× to 1.30×, and it changes the pace of the delivery rather than playing the audio faster: the pitch does not rise with it.

    3. Generate, listen, and save

    The first run downloads the model. After that, generating is a few seconds. Every clip gets a player so you can hear it before you commit, and Save WAV or Save MP3 when you are happy.

    What actually comes down the first time

    Two things, not one. The voice model is 88 MB. Underneath it, the runtime that executes the model, a WebAssembly build of ONNX Runtime, is another 22 MB. So the first run of the first model-backed tool on this site is about 110 MB in total, and the second is nothing at all.

    The runtime is shared. If you have already used the background remover or text behind image, it is cached and only the voice model comes down. We would rather put that number on the page than quote the smaller one and let you find the rest in your network tab.

    Why sixteen voices and not twenty-eight

    The model ships twenty-eight English voices and grades them itself. The bottom half are audibly rough: flat delivery, swallowed consonants, stress in the wrong place, and a picker full of them would be a longer list and a worse tool. The ones graded C and above are here; the rest are left out deliberately.

    They are grouped by accent and by gender, because sixteen entries in one flat list is a scroll and four labelled groups is a choice.

    What happens inside the browser

    The model is Kokoro-82M, eighty-two million parameters, which is small as these things go, quantised to eight bits so the download is ninety-odd megabytes rather than three hundred. It runs through WebAssembly in a worker, so the page stays responsive while it works.

    What comes out is raw samples at 24 kHz. Writing those into a WAV is a forty-four byte header and the samples themselves, which is why the WAV is instant and lossless. MP3 needs a real encoder, so that one is fetched only when you ask for an MP3, most people take the WAV and never pay for the extra download.

    Why there is no character allowance

    The hosted services meter by the character because every character costs them compute on a machine they rent. Here the compute is yours: your processor, your electricity, your tab. There is nothing to meter, so there is no allowance, no credits and no upgrade. generate a hundred clips a day if you like.

    The model weights come from a public CDN rather than from us, so the one large download is not ours to pay for either. That is the whole reason a tool like this can be free without a catch behind it.

    What the tool will not do

    English only: the model is trained on English and will make a mess of other languages rather than refusing them. It will not clone a voice from a sample, and we would not ship that if it could. It does not do multi-speaker dialogue, sound effects or music. And it is a real download: on a metered connection, ninety megabytes is worth knowing about before you press the button, which is why the size is on the page rather than in a footnote.

    Nothing is uploaded, and you can check

    Open your browser's developer tools at the Network tab and press Generate. You will see the model coming down from a CDN and nothing at all going up. Then turn the network off entirely and generate another clip, it still works, which is only possible if your text was never being sent anywhere.

    Questions

    Is my text uploaded?

    No. The model runs in this tab. What crosses the network on the first run is the model coming to you; your words do not go the other way.

    Why does the first clip take so long?

    It is downloading about ninety megabytes of model. That happens once, the browser keeps it, and every clip after that starts immediately.

    Can I save the audio?

    Yes, and that is the point of the tool. WAV is lossless and instant; MP3 is smaller and fetches a small encoder the first time you ask for one.

    Which voice should I use?

    Heart is the safe default. For a long passage, Nicole and Emma are the easiest to listen to; for something conversational, Puck. Try two, they are free.

    Does changing the speed make it sound squeaky?

    No. The speed is given to the model, so it speaks faster or slower. It is not the audio being played at the wrong rate, which is what raises the pitch.

    Does it work offline?

    Once the model has been downloaded, yes, completely.

    Can I use the audio commercially?

    The model is Apache-2.0 licensed and its output is yours. We add no watermark and claim nothing.

    Why is there a three thousand character limit?

    To keep one clip to a sensible length and the memory use predictable. Longer pieces work fine in passes, and each clip stays in the list.

    It ran out of memory.

    The model needs roughly a gigabyte free while it loads. Closing other tabs is usually enough; on an older phone it may not be.

    Next

    The guide that goes with this