Somewhere in your WhatsApp export there is a file named `AUD-20260214-WA0003.m4a`, and nothing about it says what is inside. Turning WhatsApp M4A to text is the same job as transcribing any other audio from a chat — the extension changes, the problem does not. But the extension does tell you where the recording came from, and that is worth two minutes of understanding before you transcribe anything.
A voice note recorded inside WhatsApp — the hold-the-microphone-button kind — is Opus audio in an OGG container. In an export, those arrive as `.opus` files: `PTT-20260214-WA0007.opus` from an Android phone (PTT stands for push-to-talk), or numbered names like `00000012-AUDIO-2026-02-14-10-31-22.opus` from an iPhone.
An `.m4a` got into the chat by a different door. It is audio that was recorded outside the voice-note flow and then shared in:
Transcribe every voice message in this chat at once.
Analyze your chatOn Android, the filename gives the difference away: `PTT-` prefixes a recorded voice note, `AUD-` prefixes a shared audio file. iPhone exports use the numbered `AUDIO` names for both, so there the extension is the clue.
The practical consequence is worth noticing: an `.m4a` in a chat is often the recording that matters most. Nobody opens Voice Memos, records four minutes, and shares the file into a conversation by accident. Those recordings are deliberate in a way a mid-chat voice note rarely is.
`.m4a` is an MPEG-4 audio container, almost always carrying AAC — the codec Apple uses across Voice Memos, Music and most of iOS. Unlike `.opus`, which most desktop software refuses to open, `.m4a` plays everywhere. Double-click it on a Mac or a Windows machine and it plays.
That inverts the usual complaint. With `.opus`, people get stuck at "the file will not open" — the situation bulk transcription of WhatsApp .opus voice notes walks through in detail. With `.m4a`, the file opens fine, and opening it is all you can do. You still cannot search it for the sentence where a price was agreed, skim it the way you skim text, quote a line of it in an email, or read it in sequence with the messages around it. Playback was never the obstacle. Audio as a medium is the obstacle.
Decide this before you start, because the answers differ.
If you genuinely have one short `.m4a` and just need to know what it says, playing it back and typing the gist may be the fastest route. Transcribing WhatsApp audio on iPhone and Android without an app covers the on-phone workarounds — but they are workarounds, and nothing built into either platform will take an audio file from a chat and hand you text.
The more common situation is that the `.m4a` does not travel alone. It sits in a conversation with dozens of `.opus` voice notes around it, and the memo only makes sense against the messages that came before it. Transcribing the one file leaves you with a paragraph of text floating loose from the argument it belongs to. What you actually want is the whole voice layer of the chat as text, in order — which is a batch job, and transcribing every voice note in an export at once is the pattern for it.
ThreadRecap takes the export .zip and transcribes everything in it, whatever the extension.
In WhatsApp, open the chat, tap the contact or group name, choose Export Chat, and pick Attach Media on iPhone or Include Media on Android. This step matters more than any other: the text-only option silently drops every audio file, `.m4a` included, and nothing in the resulting file warns you the recordings are missing.
Upload the export at WhatsApp audio to text. The parser identifies every audio file in the export — `.opus`, `.m4a`, `.ogg` and `.mp3` are all recognised — and matches each one to its message in the chat log. You are shown a price before anything runs, measured from the real duration of the audio in your export, and the final charge settles against what was processed. The text is charged by how many messages there are, 1 credit per 1,000; audio adds 1 credit per 10 minutes. Purchased credits never expire and there is no subscription. If a transcription fails, the credits come back automatically.
Each transcript is placed on the conversation timeline at the moment its audio was sent, attributed to the sender. The shared memo, the voice notes around it and the typed messages between them read as one continuous conversation. From there you can search it, quote it, or run a summary over it — what was said out loud counts the same as what was typed.
A lot of advice online for m4a transcription starts with "first convert your .m4a to MP3" or "convert it to WAV". Skip that entirely.
Converting one lossy format to another re-encodes the audio, and re-encoding can only lose information — the transcription model ends up hearing a slightly worse recording than the one you had. Converting to WAV inflates the file size and restores nothing, because whatever the AAC compression discarded is already gone. OpenAI's transcription models, which ThreadRecap uses, read `.m4a` directly, exactly as they read `.opus`. If a transcription tool asks you to convert first, that is a statement about the tool, not about your file.
The same logic applies inside the export. Mixed formats do not need sorting: you do not pull the `.m4a` files out, convert them, and process them separately from the `.opus` ones. One upload, and the pipeline routes each file by what it actually is.
The format itself is neutral — AAC at the bitrates these recordings use carries speech comfortably well. What moves accuracy is what was recorded:
Language is detected per clip, so a chat that mixes English voice notes with a Portuguese memo comes back with each recording transcribed in its own language. And read any transcript you intend to rely on against the audio: machine transcription is a working document, not a certified one.
The extension on a WhatsApp audio file records how the audio was made. `.opus` means a voice note recorded in-app; `.m4a` usually means a recording that came from outside — a Voice Memo, a forwarded file, an older iPhone export. That is worth knowing because it tells you what kind of recording you are holding, and the deliberate ones are disproportionately the ones worth reading.
What the extension does not change is the route to text. Export the chat with media, upload the .zip once, and every recording in it — whichever door it came through — comes back as timestamped, attributed, searchable text on the conversation timeline. If your export turns out to be all `.opus` after all, the .opus to readable text page covers that format's specifics. The upload is the same either way.
Upload your export and every audio becomes searchable, timestamped text inside the full conversation.
WhatsApp can transcribe a voice note on the phone itself, one message at a time. What works on iPhone and Android with nothing installed, and where it stops.
Jul 29, 20268 min read
Why some WhatsApp audio arrives as .m4a instead of .opus, and how to turn every m4a voice message in an export into timestamped, searchable text.