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.
Why this file is .m4a when the others are .opus
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:
An iPhone Voice Memo shared into the chat. Voice Memos records `.m4a`, and sharing a memo to WhatsApp sends the file as it is. This is how longer, deliberate recordings — a meeting someone taped, spoken instructions, a recorded walkthrough — usually enter a conversation.
An audio file forwarded from somewhere else. Forwarding passes the file along rather than re-recording it, so audio born as `.m4a` in another app or another chat stays `.m4a` however many hops it makes.
Some iOS export paths. Older iOS versions wrote voice notes themselves as `.m4a`, so an old chat exported from an iPhone may contain them exactly where you would expect `.opus`.
On 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.
What .m4a actually is — and why the problem is the opposite of .opus
`.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.
One file, or a chat full of them?
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.
The batch answer: one upload, every format
ThreadRecap takes the export .zip and transcribes everything in it, whatever the extension.
Step 1: Export the chat with media
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.
Step 2: Upload the .zip
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 the exact price before anything runs, measured from the real duration of the audio in your export. Text analysis is free; audio is charged by how much of it there is, on credits that never expire, with no subscription. If a transcription fails, the credits come back automatically.
Step 3: Read the chat as text
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.
Skip the conversion step
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. Whisper, the speech model ThreadRecap uses, reads `.m4a` directly, exactly as it reads `.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.
What affects accuracy on .m4a audio
The format itself is neutral — AAC at the bitrates these recordings use carries speech comfortably well. What moves accuracy is what was recorded:
Deliberate recordings tend to transcribe well. A Voice Memo made on purpose — phone close, one speaker, quiet room — is usually cleaner than a voice note recorded while walking down a street.
Recordings of a room are the hard case. A memo taped from across a table, with distance, echo and several people talking, transcribes worse than any voice note. If the `.m4a` is a recording of a conversation rather than a message to someone, plan to review the output against the audio.
Forwarding does not degrade the audio, but it hides the source. The file arrives at its original quality however many chats it passed through — a clear original stays clear, and a poor one stays poor.
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.
Format is not a decision you need to make
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.