Lifetime Deal: $199 one-time — PRO forever37d 07h 50m 11s87/100claimed·13 leftClaim your spot →
Free API key · Works on n8n Cloud

Free text to speech for n8n, Make and Zapier

Send text from any workflow and get an MP3 back, usually within a second or two. It runs on the HTTP Request node that comes with n8n, so there is nothing to install, and a free FreeTTS key covers 15,000 characters a month.

Last updated by the FreeTTS team · Tested in n8n 2.43.7 · Every sample on this page was made with the API call it describes

  • Free key, no card
  • Nothing to install
  • 318 free voices, 2,253 on PRO
  • MP3 link back in one call
FreeTTS news bulletin Ran in 5 s
Run twice a daySchedule Trigger · 0 6,18 * * *
Write the scriptEdit Fields · text, voice
FreeTTS: make the audioHTTP Request · POST /api/v1/tts
Download the MP3HTTP Request · Response: File
Outputbinary · data · audio/mpeg
0:25
"voice": "en-GB-SoniaNeural",
"chars_used": 392,
"audio_url": "https://freetts.org/api/audio/…"

Your FreeTTS key for n8n

n8n sends this key with every request, so FreeTTS knows whose characters to count. It is shown once, so paste it into n8n straight away.

Credential type
Header Auth
Name
x-api-key
Value
your key

n8n keeps credentials encrypted and leaves them out of downloaded workflows, so you can share the workflow file without sharing the key.

Hear the difference

The same headline, three voices. Press play.

“This is the six o'clock news. Here are tonight's headlines.”
FreeSoniaStandard voice · English (UK)
0:04
PROAdaHD voice · English (UK)
0:05
UltraDukeUltra voice · on freetts.org
0:03

A free key reads with the 318 standard voices and adds a short spoken FreeTTS tag at the end of each file. A PRO key adds the HD and Signature voices, with no tag. Ultra voices like Duke come with PRO on freetts.org, and are not on the API.

Quick facts

What it is
A REST endpoint that turns text into speech. Your workflow sends the text and a voice name, and FreeTTS answers with a link to the MP3.
Endpoint
POST https://freetts.org/api/v1/tts
The key
One header, x-api-key. In n8n that is a Header Auth credential.
What comes back
JSON with audio_url, the characters you have used this month and your limit, the voice that spoke, and whether a spoken tag was added.
The MP3
Waiting at audio_url for 30 days. Anyone with the link can download it.
Free key
15,000 characters a month, 5,000 a day and 5,000 per request, 10 requests a minute, the 318 standard voices, MP3. Each file ends with a short spoken tag. For personal, non commercial use.
PRO
$19 a month: 1,000,000 characters a month, 10,000 per request, 200 requests a minute, HD and Signature voices, WAV and OGG, no tag, commercial use.
Works in
n8n Cloud and n8n on your own server, Make, Zapier (on a paid Zapier plan), cron, and anything else that can send an HTTP request.
Tested
The workflow file on this page was imported and run in n8n 2.43.7 on .
n8n

Set it up in n8n: four nodes

Import the ready workflow, or build it by hand in about five minutes. Either way you end up with the same four nodes.

Fastest

Import the ready workflow

Open a new workflow in n8n, open the menu with the three dots at the top right, and choose Import from URL or Import from File. You can also copy the file's contents and paste them straight onto the canvas.

https://freetts.org/text-to-speech-for-n8n/freetts-news-bulletin.json Download the workflow file

Inside: both triggers, the script, the two HTTP Request nodes and a note with the three things to change. Then add your key and press Test workflow.

Or build it by hand

  1. Schedule Trigger for when it runs
  2. Edit Fields for the words and the voice
  3. HTTP Request to FreeTTS, which makes the audio
  4. HTTP Request that downloads the MP3

Add a Manual Trigger next to the schedule, so you can press Test workflow without waiting for six o'clock.

  1. 1

    Schedule Trigger

    When the workflow runs.

    Trigger Interval
    Custom (Cron)
    Expression
    0 6,18 * * *

    That is 06:00 and 18:00 in the workflow's time zone, which you can change in the workflow settings. Hourly is 0 * * * *, weekdays at 07:30 is 30 7 * * 1-5.

  2. 2

    Edit Fields

    The words, and who reads them.

    text
    String · your script
    voice
    en-GB-SoniaNeural

    In a real workflow the text usually comes from a node in front: RSS Read for headlines, Google Sheets for a list of lines, an AI node that writes the script, or an HTTP Request to a weather API.

  3. 3

    HTTP Request: make the audio

    The only call to FreeTTS.

    Method
    POST
    URL
    https://freetts.org/api/v1/tts
    Authentication
    Generic Credential Type, then Header Auth, then your FreeTTS credential
    Send Body
    On · Body Content Type JSON · Specify Body: Using JSON
    JSONn8n expression
    {
      "text": {{ JSON.stringify($json.text) }},
      "voice": "{{ $json.voice }}"
    }

    JSON.stringify keeps quote marks and line breaks in your script from breaking the request.

  4. 4

    HTTP Request: download the MP3

    Turns the link into a file.

    Method
    GET
    URL
    {{ $json.audio_url }}
    Options
    Add option, Response, then Response Format: File
    Output field
    data

    The MP3 is now a binary file in data. Send it anywhere a node takes a file:

    • Google Drive · Upload
    • Dropbox · Upload
    • FTP · Upload
    • Telegram · Send Audio
    • Gmail · attachment
    • Amazon S3
    • Read/Write Files from Disk
What FreeTTS sends backJSON
{
  "file_id": "d7f491c4-1924-4e86-b61a-08fb0ecc4df3",
  "format": "mp3",
  "audio_url": "https://freetts.org/api/audio/d7f491c4-1924-4e86-b61a-08fb0ecc4df3",
  "chars_used": 392,
  "chars_limit": 15000,
  "voice": "en-GB-SoniaNeural",
  "downgraded": false,
  "watermark": "end"
}
audio_url
The MP3. Download it in the next node. It stays available for 30 days.
file_id
The file's ID, if you prefer to build the link yourself.
chars_used
Characters used this month, this request included.
chars_limit
Your monthly allowance: 15,000 on a free key.
voice
The voice that actually spoke.
downgraded
True only if a Signature voice hit its monthly cap and a matching voice stood in.
watermark
"end" or "mid_end" on a free key, "none" on PRO.
Hear it

What comes back

The six o'clock bulletin three ways, all made with the API call above on 17 October 2026: first exactly as a free key returns it, tag included, then the same script in an HD voice and a Signature voice from a PRO key. Below it, two more everyday jobs in free voices.

The six o'clock bulletin, three waysThe same 392 characters in a free, an HD and a Signature voice
Good evening. This is the six o'clock bulletin. The city council has approved a new cycle lane along the river, with work starting in the spring. Train services return to normal tomorrow morning after weekend engineering works. And in sport, the town club stays top of the league after Saturday's win. Now the weather: light rain this evening, clearing overnight, with a low of eight degrees.
SoniaFree keyStandard voice · ends with “Generated with FreeTTS dot org”
0:28
AdaPRO · HDHD voice · English (UK) · no tag
0:28
CharonPRO · SignatureSignature voice · English (UK) · no tag
0:24

A free key file of a minute or longer carries the tag once in the middle as well. Start PRO free for 3 days and hear your own script in these voices.

Morning weatherAva · English (US) · Free voice
Good morning. Here's the weather for today. Sunny spells this morning, then cloud building after lunch, with a small chance of a shower around four. A high of nineteen and a low of eleven. If you're cycling home, the wind picks up after five.
0:16
A daily briefingAndrew · English (US) · Free voice
Here's your briefing for today. You have three meetings, and the first one is at half past nine with the design team. Two invoices are due this week. And the reminder you asked for: call the printer about the new menus before noon.
0:13
Make

The same thing in Make

Make (formerly Integromat) does it with its own HTTP modules. Five modules, no code.

  1. Any trigger. For fixed times, open the scenario's schedule and pick Every day at a time. For news, start with RSS, Watch RSS feed items.
  2. JSON, Create JSON. Build a small structure with two fields, text and voice. It escapes quote marks and line breaks for you.
  3. HTTP, Make a request. URL https://freetts.org/api/v1/tts, method POST, a header x-api-key with your key, body type raw with content type JSON, and the JSON string from step 2 as the request content. Turn on Parse response.
  4. HTTP, Get a file. URL: map audio_url from step 3.
  5. Where it goes. Google Drive, Upload a file, or Dropbox, or FTP, with the file from step 4.
Zapier

And in Zapier

Zapier needs one less step, because file fields accept a link and Zapier fetches the file itself.

  1. Trigger: Schedule by Zapier. Every Day, at the hour you want. Or any app trigger, such as a new RSS item or a new row in Google Sheets.
  2. Action: Webhooks by Zapier, POST. URL https://freetts.org/api/v1/tts, Payload Type json, Data text with your script and voice with en-GB-SoniaNeural, Headers x-api-key with your key.
  3. Action: Google Drive, Upload File. For File, map Audio Url from step 2. Dropbox, Slack and Gmail work the same way.

Worth knowing: Webhooks by Zapier is a premium app and this Zap has three steps, so it needs a paid Zapier plan or Zapier's free trial. Make's free plan and n8n on your own server can do it at no cost.

No platform

Cron, curl and a few lines of code

If a server or a Raspberry Pi is already running, you don't need an automation tool at all. Set FREETTS_KEY once and schedule the script.

bulletin.shsh
#!/bin/sh
# bulletin.sh: turn a script into bulletin.mp3 with FreeTTS
URL=$(curl -s https://freetts.org/api/v1/tts \
  -H "x-api-key: $FREETTS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "Good evening. Here is the evening bulletin.", "voice": "en-GB-SoniaNeural"}' \
  | python3 -c 'import sys, json; print(json.load(sys.stdin)["audio_url"])')
curl -s -o bulletin.mp3 "$URL"

JavaScript, Node.js, subtitles and the full reference are on the developer page.

Ideas

What people build with it

Real jobs FreeTTS keys do every day, with the number that decides whether the free plan is enough: characters a day.

A newsreader for an internet radio station

A small internet radio station in England reads its own news this way. At six in the morning and six in the evening a script gathers the latest headlines and the local weather, sends about 460 characters to FreeTTS, and the station plays the MP3 on air. Nobody sits at a microphone, and it has run twice a day, every day, since it was set up.

JobTriggerWords come fromVoiceCharacters a dayFree key covers
Radio news bulletin06:00 and 18:00RSS Read for headlines, a weather APISoniaabout 92016 days a month
Morning weather announcementEvery day at 07:00A weather API through HTTP RequestAvaabout 250The whole month
Your own daily briefingWeekdays at 07:30Google Calendar, Gmail and an AI nodeAndrewabout 600 on weekdaysThe whole month
Smart home announcementsA Home Assistant or ioBroker eventThe event itselfJennyabout 150The whole month
Voice replies in Telegram or DiscordA new messageAn AI Agent nodeAndrewabout 1,00015 days a month
Voiceover for a Short or ReelPRO for paid useA new row in Google SheetsThe sheetAria at +10%about 900 a video16 videos a month
Podcast intro and outroPRO for paid useEvery MondayA template with the episode titleAva HDabout 1,500 a weekNeeds PRO for HD

Free audio is for personal, non commercial use. A monetized channel, a station that runs ads, or client work needs PRO.

Voices

Voices for news, weather and announcements

The same line in eight voices. Copy an ID straight into the voice field. Six are free; the last two need PRO.

SoniaEnglish (UK)
Free
0:04

Clear and steady. The voice in our bulletin sample.

en-GB-SoniaNeural
RyanEnglish (UK)
Free
0:05

A calm British male read.

en-GB-RyanNeural
ChristopherEnglish (US)
Free
0:05

Tagged for news by Microsoft. Deep and serious.

en-US-ChristopherNeural
AriaEnglish (US)
Free
0:05

Tagged for news. Bright, quick, confident.

en-US-AriaNeural
GuyEnglish (US)
Free
0:05

Tagged for news. The classic announcer sound.

en-US-GuyNeural
AndrewEnglish (US), reads other languages too
Free
0:04

Warm and relaxed. Good for briefings.

en-US-AndrewMultilingualNeural
AdaEnglish (UK)
PRO · HD
0:05

HD. Reads the sentence the way a presenter would.

en-GB-Ada:DragonHDLatestNeural
CharonEnglish (US)
PRO · Signature
0:05

Signature. Built for news and narration.

en-US-Chirp3-HD-Charon

Every voice ID is in one list, no key needed: GET https://freetts.org/api/voices. Or hear them first in the voice gallery. For another language, pick a voice whose ID starts with it, such as de-DE-KatjaNeural for German or es-MX-DaliaNeural for Mexican Spanish.

Free plan maths

Will the free key cover your workflow?

Pick a script length and how often it runs. A minute of speech is about 900 characters, measured on the samples on this page.

How long is each script?
How often does it run?
Audio per runabout 31 s
Characters a day920
Characters a month27,600

The free key covers about 16 days a month. After that, requests are refused until your monthly date comes round.

PRO's 1,000,000 characters a month cover this 36 times over, with no daily limit. See plans

Limits

What each plan gives your workflows

The API uses the same character allowance as the website, so a key never doubles your plan.

FeatureFree keyPROCreator
Price$0$19 a month$39 a month
Characters a month15,0001,000,0005,000,000
Characters a day5,000No daily limitNo daily limit
Characters per request5,00010,00025,000
Requests a minute102001,000
Voices on the API318 standard voices2,227 (all but Ultra)2,227 (all but Ultra)
Audio formatsMP3MP3, WAV, OGGMP3, WAV, OGG, Opus
Spoken FreeTTS tagAt the end, and mid file from 60 sNoneNone
Commercial useNo, personal use onlyYesYes
API keys1Up to 10Up to 10

All plans · How these prices compare with other APIs

Fixes

If a run fails

The error n8n shows, and what to change.

401 Missing x-api-key header

The request left without your key. In the HTTP Request node, set Authentication to Generic Credential Type, then Header Auth, and pick your FreeTTS credential. The header name has to be exactly x-api-key.

401 Invalid API key

The key went in with a space or a line break, or it was replaced. Open the credential and paste it again. Keys are shown only once, so if it is lost, make a new one at the top of this page.

402 HD and Signature voices are part of PRO

A free key asked for an HD or Signature voice. Use a standard voice such as en-GB-SoniaNeural, or move to PRO. The voice table above marks which is which.

402 with a daily or monthly limit

A free key has used its 5,000 characters for the day, which come back at midnight UTC, or its 15,000 for the month, which come back on your monthly date in the dashboard. PRO has 1,000,000 a month and no daily limit.

429 Rate limit reached

More than 10 requests in one minute on a free key. In the HTTP Request node open Options, add Batching, and set Items per Batch to 1 and Batch Interval to 7000 ms. That keeps you just under the limit.

400 Text exceeds the character limit

One request holds up to 5,000 characters on a free key and 10,000 on PRO. Split a long script into parts (a Code node can split it on blank lines) and send each part as its own request.

422 This voice can't read the text

The text is in a language the voice doesn't speak. The error message lists voices that can read it. Copy one of those IDs into the voice field.

The MP3 shows up as a wall of strange text

The download node is returning JSON or text. Open Options in that HTTP Request node, add Response, and set Response Format to File.

A community node won't install on n8n Cloud

You don't need one. Everything on this page runs on the HTTP Request node that ships with n8n, on Cloud and on your own server.

Zapier says the app isn't on your plan

Webhooks by Zapier is a premium app, and a three step Zap needs a paid plan too. Use Zapier's trial, a paid plan, or n8n.

FAQ

Questions people ask

Yes. A free FreeTTS account comes with one API key: 15,000 characters a month, 5,000 a day, the 318 standard voices, and no card. Free files end with a short spoken FreeTTS tag, and free audio is for personal, non commercial use.
No. FreeTTS works through the HTTP Request node that ships with n8n, so it runs the same on n8n Cloud and on your own server. n8n Cloud only accepts verified community nodes, which is one more reason this page doesn't use one.
Save it as a Header Auth credential instead of typing it into the node as a plain header. n8n stores credentials encrypted and leaves them out of downloaded and shared workflows, so you can pass the workflow file around without passing the key.
30 days. The workflow downloads the file straight away in its last node, so after that you keep it wherever you send it. Anyone who has the link can download the file, so keep links to private audio private.
For British news, Sonia or Ryan. For American news, Christopher, Guy or Aria, which Microsoft tags for news. On PRO, Ada (HD) and Charon (Signature) sound closer to a real presenter. All eight are on this page with the same line, so you can compare them.
Yes, 149 of them. Pick a voice for the language from GET https://freetts.org/api/voices, for example de-DE-KatjaNeural for German or es-MX-DaliaNeural for Mexican Spanish. If a voice can't read the text, the request is refused with a 422 that names voices that can.
WAV and OGG come with PRO. Add "output_format": "wav" to the JSON body and the file at audio_url is a WAV. Free keys get MP3.
"Generated with FreeTTS dot org", after a short pause at the end of the file. Files of a minute or longer get it once in the middle as well. PRO and Creator files carry no tag. You can hear a tagged file in the samples above.
Free key audio is for personal, non commercial use. If the audio goes into something that earns money, such as a station that runs ads, a monetized channel or work for a client, you need PRO or Creator, which include a commercial licence.
The request is refused with a message that names the limit, and n8n marks the run as failed. Set an error workflow (an Error Trigger node) if you want a message when that happens. Daily characters come back at midnight UTC, monthly ones on your monthly date.
Yes. Give the agent an MCP Client Tool node, choose HTTP Streamable, set the endpoint to https://mcp.freetts.org/mcp, and add your key as a Header Auth credential named x-api-key. The agent can then make speech, list and suggest voices and check your usage, and use dialogue, script mode and transcription on a PRO key.
A 400 character bulletin usually comes back in a second or two. In our test in n8n 2.43.7, the whole workflow, from the trigger to a saved MP3, took about five seconds.
Sources

Where these facts come from

The API

Request and response fields are the FreeTTS API's own. The full reference is on the developer page.

The test run

We imported the workflow file into n8n 2.43.7 and ran it on 17 October 2026: about five seconds from trigger to a saved MP3.

n8n

Node names and options follow n8n's own documentation for the HTTP Request node.

Limits and licence

Plan limits are the ones on the pricing page. What you may do with the audio is in the terms.

Your first bulletin is five minutes away

Import the workflow, paste your key, press Test workflow.