How to convert whatsapp voice notes to mp3 — no upload
- Step 1Get the .opus file off WhatsApp — Android: long-press the voice note → ⋮ → Share/Forward → save to Files, or copy
PTT-*.opusfromWhatsApp/Media/WhatsApp Voice Notes/over USB. iOS: tap the note → Share → Save to Files (it lands as.opus, occasionally.ogg). - Step 2Open the WhatsApp-to-MP3 converter — This is the
opus-to-mp3tool. It is a single-file converter —acceptsMultipleis false, so convert one note at a time (or queue them; the free tier allows one file per run). - Step 3Drop the note onto the dropzone — Drag the
.opus/.ogg/.webmfile in, or click to browse. FFmpeg 8.1 loads into the tab on first use (a few seconds, one-time), then decodes the Opus stream locally. - Step 4Choose the MP3 bitrate — The Bitrate select offers 320k · best, 256k, 192k · default, 128k · podcast, and 64k · voice. A WhatsApp note is ~24–32 kbps Opus, so 64k or 128k is plenty — higher just makes a bigger file with no audible gain.
- Step 5Run the conversion — Click to process. FFmpeg runs
-c:a libmp3lame -b:a <bitrate> -id3v2_version 3and writes an MP3. A 30-second note converts in well under a second on a modern laptop. - Step 6Download the MP3 — Save the result. The Stat row shows input vs output bytes so you can confirm the size before downloading. The original
.opusis untouched and was never uploaded.
WhatsApp voice-note formats this tool accepts
WhatsApp stores Opus in a few container shapes depending on platform and how you export. FFmpeg demuxes by file content, so the extension only needs to be present for the tool to route the file.
| Source | Typical extension | Codec inside | Converts here? |
|---|---|---|---|
| Android voice note (raw file) | .opus | Opus (Ogg page-framed) | Yes — decoded to PCM, re-encoded to MP3 |
| iOS shared voice note | .opus / .ogg | Opus | Yes |
| Voice note re-wrapped by a file manager | .ogg | Opus-in-Ogg | Yes — FFmpeg reads the Ogg container |
| Browser-recorded WhatsApp Web clip | .webm | Opus-in-WebM | Yes — WebM demuxed, Opus decoded |
| Note already shared as voice memo | .m4a | AAC (not Opus) | Use the m4a-to-mp3 tool instead — this tool still works, but the slug for AAC is m4a-to-mp3 |
Bitrate guidance for a 24–32 kbps WhatsApp note
The source Opus is already heavily compressed for speech. Re-encoding above ~96 kbps adds file size without recovering detail that the Opus encode already discarded.
| MP3 bitrate | Approx size / minute | Best for | Audible vs source |
|---|---|---|---|
| 64 kbps · voice | ~480 KB | Pure speech, smallest output | Transparent for a voice note |
| 128 kbps · podcast | ~960 KB | Default safe choice, voice + light music | Transparent |
| 192 kbps · default | ~1.4 MB | When the note has background music | No further loss to recover |
| 256 kbps | ~1.9 MB | Archival of a music-bearing clip | Diminishing returns on a 32 kbps source |
| 320 kbps · best | ~2.4 MB | Maximum-headroom archive | Largest file; no extra fidelity over source |
Tier limits for converting voice notes
Limits are per file. The duration cap (durationMin) is separate from the byte cap and is what you hit first on long stitched recordings.
| Tier | Max file size | Max duration | Files per run |
|---|---|---|---|
| Free | 50 MB | 30 min | 1 |
| Pro | 200 MB | 120 min | 10 |
| Pro + Media | 100 GB | Unlimited | 100 |
| Developer | 100 GB | Unlimited | Unlimited |
Cookbook
Real WhatsApp voice-note conversions — the FFmpeg command this tool builds plus before/after sizes. Filenames anonymised.
A 14-second Android note at the voice bitrate
The most common case: one short PTT-*.opus you want to feed into a transcription tool that only takes MP3. 64 kbps is transparent for a 24 kbps speech source and keeps the file tiny.
Input: PTT-20260114-WA0007.opus (24 kbps Opus, mono, 14 s, 44 KB) Bitrate: 64k · voice FFmpeg (built by the tool): -i in.opus -c:a libmp3lame -b:a 64k -map_metadata 0 -id3v2_version 3 out.mp3 Output: PTT-20260114-WA0007.mp3 (64 kbps MP3, ~112 KB) → opens in QuickTime / any transcription uploader.
iOS .opus that a file manager re-wrapped as .ogg
On iOS the saved note sometimes arrives as .ogg. The codec inside is still Opus — FFmpeg reads the Ogg container and the conversion is identical. The extension only routes the file; the decoder is chosen from the stream.
Input: voice-message.ogg (Opus-in-Ogg, mono 16 kHz, 41 s) Bitrate: 128k · podcast Output: voice-message.mp3 (128 kbps, ~480 KB) Note: no extra conversion needed — .ogg and .opus take the same path here.
A long voice note that exceeds the free-tier 30-minute cap
WhatsApp itself caps a single recording, but stitched/forwarded notes or a recorded call clip can run long. The free tier rejects anything over 30 minutes by duration before processing — upgrade or split first.
Input: long-note.opus (52 min, 11 MB)
Free tier: durationMin = 30 → rejected ("exceeds 30 min")
Fix options:
• Pro tier (120 min cap) converts it directly, or
• split it first with the audio-splitter tool, then convert each part.Keeping the converted note small for re-sharing
If you only need to forward the MP3 somewhere with a size budget (email, Discord), don't bump the bitrate up. A WhatsApp source has no detail above its Opus ceiling, so 64–128 kbps is the sweet spot for the smallest faithful MP3.
Input: PTT-20260210-WA0003.opus (32 kbps Opus, 2 min) Bitrate: 64k · voice → ~960 KB MP3 Bitrate: 320k · best → ~4.8 MB MP3 (no audible gain over 64k) → pick 64k unless an app demands a higher nominal bitrate.
Note that won't decode — corrupt or partial export
A truncated export (interrupted Share, half-synced file) can fail to demux. FFmpeg surfaces the decode error rather than producing silent or empty audio; re-export the note from WhatsApp.
Input: half-saved.opus (truncated, 3 KB)
Result: conversion error — FFmpeg can't find a valid Opus stream
Fix: re-share the note from WhatsApp (long-press → Forward → save)
and convert the complete file.Edge cases and what actually happens
File is .opus but the codec inside is AAC
Wrong toolSome apps mislabel AAC audio with a .opus extension. FFmpeg reads the real codec from the stream, so the conversion still runs, but if you specifically have AAC/.m4a audio the matching sibling is the m4a-to-mp3 tool — same MP3 output, named for the real source codec.
Voice note runs longer than 30 minutes on the free tier
Reject (free)The free audio tier enforces durationMin = 30. A stitched or call-length note over 30 minutes is rejected before encoding regardless of file size. Pro raises this to 120 minutes; Pro + Media removes the duration cap entirely. Or split the note first with the audio-splitter tool.
Truncated / partially-exported .opus
Decode errorIf the Share/export was interrupted, the Ogg/Opus stream is incomplete and FFmpeg cannot find a valid first packet. The tool reports a conversion error instead of emitting empty audio. Re-export the full note from WhatsApp and retry.
Note is mono 16 kHz — output is mono too
By designWhatsApp records mono at 16 kHz. This converter does not up-mix to stereo or resample for the opus-to-mp3 path — it has no channel or sample-rate control. The MP3 stays mono at the source rate, which is correct for voice. If you genuinely need stereo, use mono-to-stereo afterwards.
Embedded thumbnail/cover art in the source
PreservedVoice notes rarely carry art, but if the container has an attached picture, -map 0:v? -c:v copy -disposition:v:0 attached_pic re-attaches it to the MP3. Tags carry over via -map_metadata 0. Nothing is stripped.
Dragging several PTT files at once on the free tier
One per runThis tool is single-file (acceptsMultiple is false) and the free tier allows one file per run. Convert notes one at a time, or upgrade to Pro (10 files per run) for batch work.
Output sounds the same at 64k and 320k
ExpectedA 24–32 kbps Opus source has already discarded everything above its perceptual ceiling. Re-encoding to a higher MP3 bitrate cannot recover detail that isn't there — it only inflates the file. 64–128 kbps is transparent for a WhatsApp note.
FFmpeg takes a few seconds the first time
ExpectedThe FFmpeg 8.1 WASM core (~30 MB) loads into the tab on first conversion of the session. Subsequent conversions reuse the loaded engine and are near-instant for short notes. This is a one-time per-session cost, not an upload.
Very large export over 50 MB on the free tier
Reject (free)The free byte cap is 50 MB. A normal voice note is kilobytes, so you'd only hit this with an enormous stitched recording. Pro raises the cap to 200 MB; Pro + Media to 100 GB.
Frequently asked questions
Where are WhatsApp voice notes stored so I can convert them?
On Android: WhatsApp/Media/WhatsApp Voice Notes/<date>/PTT-YYYYMMDD-WAxxxx.opus — copy them over USB or share them to Files. On iOS, tap the note → Share → Save to Files, which saves a .opus (sometimes .ogg). Drop that file onto this tool.
Is my voice note uploaded anywhere?
No. The conversion runs entirely in your browser with FFmpeg 8.1 compiled to WebAssembly. The Opus is decoded and re-encoded to MP3 on your CPU. The note never leaves the tab, so it never reaches a server or a third-party transcription pipeline.
What bitrate should I pick for a WhatsApp note?
64 kbps · voice or 128 kbps · podcast. The source is ~24–32 kbps Opus, so anything above ~128 kbps just makes a bigger MP3 without any audible improvement. 192 kbps (the default) is fine if the note has background music.
Will converting reduce the quality?
The only loss is the single decode-then-MP3-encode step, which is inaudible for speech at 64 kbps or higher. MP3 is not the limiting factor here — the original Opus compression already set the quality ceiling.
Can I convert .ogg files from WhatsApp too?
Yes. WhatsApp's .ogg files contain Opus, and FFmpeg reads the Ogg container directly. The conversion path is identical to .opus. .webm (Opus-in-WebM) from WhatsApp Web also works.
How long can a note be?
Free: up to 30 minutes and 50 MB. Pro: 120 minutes and 200 MB, plus 10 files per run. Pro + Media: unlimited duration, 100 GB, 100 files. The duration cap is separate from the size cap — long stitched notes hit the time limit first.
Does it keep mono, or convert to stereo?
It keeps the source channel layout. WhatsApp notes are mono and stay mono — this tool has no channel control. If you need stereo, run the result through the mono-to-stereo tool afterwards.
Can I convert several notes at once?
This converter handles one file per run, and the free tier is one file per run anyway. Upgrade to Pro for 10 files per run. For now, convert notes one at a time.
Why does the first conversion feel slow?
FFmpeg's WASM core loads into the tab the first time you convert in a session (a one-time download into memory). After that, short notes convert in a fraction of a second. It's not an upload — it's the engine warming up locally.
The file won't convert — what's wrong?
Almost always a truncated export. If the Share/copy was interrupted, the Opus stream is incomplete and FFmpeg can't find a valid packet. Re-export the full note from WhatsApp and try again.
Can I get the converted note even smaller?
Pick 64 kbps · voice — that's the smallest MP3 this tool offers and it's transparent for a voice note. If you need to hit a strict size for a chat app, the whatsapp-fit tool size-targets the encode instead.
Are there other Opus sources this tool handles?
Yes — it's the same engine for Telegram and Discord voice. See the dedicated solution pages: Telegram voice notes at /audio-tools/solutions/convert-telegram-voice-note-mp3 and Discord recordings at /audio-tools/solutions/discord-voice-to-mp3-browser.
Privacy first
Every JAD Audio tool runs entirely in your browser via FFmpeg (WebAssembly) and RNNoise. Your audio files never leave your device — verified by zero outbound network requests during processing.