Base64 to Audio

Paste whatever the API gave you — raw base64, a data URI, a hex dump, or the whole JSON response — and get a file you can play and download.

Files never leave your device
0

What This Tool Does

Speech APIs, TTS services, and plenty of internal tools hand back audio as text — base64 inside a JSON response, most often — rather than as a downloadable file. This tool takes that text, works out what shape it's in, decodes it locally, and gives you back something you can actually play and save: a normal audio file. Paste the text (or click Try a sample to see it work with a placeholder clip first), and if it's recognized as audio you get a player, the detected format, duration, sample rate, and channel count, plus buttons to download it.

Nothing here is uploaded. Parsing and decoding both run in your browser tab.

What You Can Paste

The box accepts five shapes and figures out which one it's looking at — you never have to tell it:

  • Plain base64 — just the encoded text on its own.
  • A data: URIdata:audio/mpeg;base64,... and similar.
  • A hex dump — a string of hex digit pairs, with or without 0x prefixes or separators.
  • A raw byte array — a JSON array of numbers, like [80, 75, 3, 4, ...].
  • A full JSON response, with any of the above nested inside it under any key name:
{ "audioContent": "SUQzBAAAAAAAI1RTU0UAAAAP…" }

That last case is the common one in practice — copy the entire response body from a speech-synthesis API and paste it as-is, without extracting the field yourself first.

There's also a fallback for messier pastes: if none of the above match cleanly, the tool scans the whole text for the longest run of at least 64 base64-looking characters and tries decoding that. That's what catches a payload copied along with a log line, a curl command's output, or a chunk of surrounding HTML.

Finding the Payload Inside JSON

When the pasted text parses as JSON, the tool walks every string and array value in it, wherever it's nested, and scores each one as a candidate. A key name that hints at audio — audioContent, speechAudio, voiceData, anything containing "audio", "speech", "voice", "content", "data", "b64", or "base64" — gets picked up even if the value is short. An unnamed field is still checked, but only if the string is long enough to be a real payload rather than a coincidence. If several candidates look plausible, each one gets test-decoded and the tool keeps whichever one actually resolves to a recognizable audio format.

Tip: If your API response wraps the audio a level or two deeper than you'd guess — inside a result.audio.content path, say — you don't need to dig it out by hand. Paste the whole response.

When the Text Isn't Audio

Not everything that decodes as bytes is audio. If the pasted text turns out to be a PNG, a JPEG, a ZIP, or even a video file (WebM or MP4) once decoded, the tool names what it found instead of showing a broken player — and for a video file, it points you to the video-to-MP3 tool, since that's a different job. If nothing in the text decodes to a recognizable format at all, you'll see a plain "no audio data found" message rather than a silent failure.

Download Original vs Convert

Download original unwraps whichever envelope the audio was in — base64, hex, a data URI, JSON — and writes the bytes underneath exactly as they were, with no audio decode or re-encode involved. If the API handed you an MP3 stream wrapped in base64, this gives you that same MP3 stream as a file: instant, lossless, and it works even if this browser can't decode the codec at all.

Convert and download goes a step further: it decodes the audio properly and re-encodes it to MP3, WAV, or OGG at a quality you choose — useful when you need a specific format rather than whatever the API originally produced.

Long or Large Payloads

Pasted text tops out at 32 million characters, which is already roughly a 24 MB payload — past that, the box asks you to save the text to a file and use the plain audio converter page instead. Somewhere above 2 million characters, typing in the box can start to feel laggy even though parsing still works; that's just the textarea handling a lot of text, not a sign anything is wrong. Once decoded, the usual audio warnings apply too — long (past ~30 minutes) or large (past ~500 MB) decoded audio shows a warning rather than blocking anything.

Nothing Ever Leaves Your Browser

Parsing the text, decoding the audio, and any re-encoding you ask for all happen locally, using your browser's own Web Audio engine and a WebAssembly encoder that loads on first use. There's no server in this path at all — which is the point, since what you're pasting here is often something you'd rather not hand to anyone else, like an API key embedded nearby in the same response or someone's actual voice.

If you're starting from a normal audio file instead of a base64 payload, the audio converter does the same decode-and-convert step without the paste box.

Frequently asked questions

Is this tool free?
Yes. No sign-up, no watermark, no limit imposed by a server. Everything runs in your browser, so there's nothing to pay for.
Does the pasted text get sent anywhere?
No. Parsing and decoding both happen locally in your browser — nothing is uploaded. That matters here specifically because this kind of payload often carries a speech-API response or a private recording. A common workaround people use instead is pasting it into a chatbot to ask what's inside, which sends that audio to a third-party AI service. This tool never does that.
What can I paste in?
Plain base64 text, a data: URI, a hex dump, or a full JSON response with the audio payload nested inside it — as a base64 string or a raw array of byte values. The tool detects which one you've pasted automatically; you don't pick a format up front.
How does it find the audio inside a JSON response?
It walks every string and array value in the JSON, favoring keys whose name hints at audio — audioContent, speechAudio, voiceData, and similar — but it isn't limited to those; an unnamed field with a long enough base64-looking string is checked too.
What happens if the pasted text isn't audio?
You'll see a clear message rather than a blank player. If the decoded bytes turn out to be a different known format — PNG, JPEG, a ZIP, even a video file — the tool names it; otherwise it reports that no audio data was found.
Why does Download original give me back the same bytes I pasted, essentially?
Download original unwraps the base64/hex/data-URI envelope and writes exactly what was inside it — no audio decode, no re-encode — so if the payload was an MP3 stream, you get that same MP3 stream as a file, instantly and losslessly. Convert and download is the button that actually decodes the audio and re-encodes it to MP3, WAV, or OGG.
Is there a size limit on what I can paste?
Pasted text is capped at 32 million characters — about a 24 MB payload — past which you'll be asked to save it to a file and use the plain audio converter page instead. Above 2 million characters, typing in the box may start to lag, though parsing itself still works fine.
Can I load the payload from a file instead of pasting it?
Yes. Load from a .txt file also takes .json and .b64 files, not just .txt, and drops the contents into the paste box, which then gets parsed exactly the same way as pasted text.