In this article
You exported a chat and found a folder full of .opus files. What are they, why does WhatsApp use this format, and how do you turn them into readable text?
You exported a chat and found a folder full of .opus files. What are they, why does WhatsApp use this format, and how do you turn them into readable text?
Opus is an audio codec designed for interactive speech and music. It was developed by the Internet Engineering Task Force (IETF) and is an open, royalty-free format.
WhatsApp uses Opus for voice messages because it:
When you record a voice message in WhatsApp, it is saved as an .opus file.
The choice of Opus was deliberate and technical. MP3 was designed primarily for music and produces files that are noticeably larger when encoding speech at the same perceived quality. AAC offers strong compression but is encumbered by licensing requirements, making it a less attractive default for a product that ships on billions of devices. Opus, by contrast, was engineered from the ground up by the IETF as an open, royalty-free standard optimised for the bitrate range where human speech lives.
The practical result is that a 1-minute WhatsApp voice message in .opus format is typically only 50 to 100 KB. That compactness matters enormously at scale: WhatsApp processes hundreds of millions of voice messages every day, and each kilobyte saved multiplies across mobile data plans, server storage, and delivery latency worldwide.
When you export a WhatsApp chat with media included, the .zip contains:
```
WhatsApp Chat - Group Name/
├── _chat.txt
├── 00000001-AUDIO-2024-03-15-09-30-22.opus
├── 00000002-AUDIO-2024-03-15-10-45-11.opus
├── 00000003-PHOTO-2024-03-15-11-00-33.jpg
└── ...
```
Each .opus file corresponds to a voice message in the chat. The filename contains a sequence number and timestamp.
In the _chat.txt file, voice messages appear as:
```
[15/03/2024, 09:30:22] Alice: <attached: 00000001-AUDIO-2024-03-15-09-30-22.opus>
```
The sequential numbering is not arbitrary. WhatsApp increments the leading integer for every piece of media in the conversation, regardless of type. That means audio files, images, videos, and documents all share the same counter. If you filter the export folder to show only `.opus` files, the gaps in the sequence numbers reveal where photos or other attachments appeared in the timeline.
The timestamp embedded in the filename matches the send time shown in the chat, which makes it straightforward to reconstruct the exact moment each voice message was sent even before you open _chat.txt. This structure is also how tools like ThreadRecap anchor each transcription to the correct position in the conversation: the filename in _chat.txt and the filename in the zip are identical, so the two sources can be joined without ambiguity.
ThreadRecap supports WhatsApp export .zip files up to 2 GB and conversations of 75,000 or more messages, including embedded voice messages. For long-running group chats where voice messages have accumulated over months or years, that capacity means no manual splitting of the export is required before upload.
Most computers and phones can play .opus files with the right app. VLC, for example, handles Opus natively. But playing each voice message one by one and taking notes is impractical when you have 20 or 50 voice messages.
The real problem is not playback — it is turning all those voice messages into searchable, analyzable text. A dedicated OPUS to text converter handles this automatically.
The arithmetic is straightforward but worth spelling out. Manually transcribing a 2-minute voice message takes approximately 5 to 10 minutes when you factor in pausing, rewinding to catch unclear words, and typing. A group chat that contains 30 voice messages averaging 90 seconds each represents roughly 45 minutes of audio. At that transcription rate, converting the whole set by hand could consume 4 to 6 hours of focused work. That figure does not include the time needed to reinsert each transcription into the conversation at the correct timestamp so that it reads coherently alongside the surrounding text messages.
This is accurate but extremely time-consuming. A 2-minute voice message takes 5-10 minutes to transcribe manually.
The result is a complete conversation where voice messages and text messages flow together in chronological order.
ThreadRecap uses OpenAI's audio transcription API, requesting segment-level timestamps when the recap needs timings inside a single clip. When you upload a WhatsApp export zip, ThreadRecap parses _chat.txt to identify every line that references an `.opus` or `.m4a` attachment, extracts the corresponding audio files, passes them through transcription, and then splices the returned text back into the conversation at the exact timestamp position. The output is a unified transcript where a voice message appears as a clearly labelled block of text between the surrounding typed messages.
Clear recordings of a single speaker transcribe best. Under good conditions the output is usually accurate enough for search, summary, and review tasks without any manual correction.
WhatsApp records voice messages at relatively low bitrates to keep file sizes small. A 1-minute voice message is typically 50-100 KB. Despite this compression, modern speech recognition handles WhatsApp audio well.
Factors that affect transcription quality:
Everything above assumes favourable conditions. Real-world WhatsApp voice messages are often recorded in less controlled environments: on the street, in a car, or in a room with other people talking. Background noise introduces competing frequencies that make individual sounds harder to resolve, which propagates into word-level errors.
Less widely spoken languages also see lower accuracy. Major world languages with large amounts of publicly available audio, such as English, Spanish, French, German, and Portuguese, transcribe best. Less-resourced languages can fall meaningfully below that. If your WhatsApp conversations are primarily in a language like that, it is worth reviewing transcriptions carefully before using them for any purpose that requires precision.
Multiple simultaneous speakers are a distinct challenge. The transcription model is not a diarisation system, so it does not attempt to separate overlapping voices or label who said what within a single audio file. If a voice message captures two people speaking at once, the output will be a best-effort blend rather than an accurate representation of either speaker.
WhatsApp specifically chose Opus over alternatives:
Some older WhatsApp exports may contain .m4a files instead of .opus — this depends on the WhatsApp version and device. The voice-to-text tool handles both formats.
WhatsApp migrated its default voice message format to Opus incrementally. Exports from conversations that began several years ago, or backups restored from older devices, can still contain .m4a files recorded under the previous default. The .m4a container typically holds AAC-encoded audio, which has different compression characteristics than Opus but is still handled correctly by speech recognition tools designed for voice content. If your export folder contains a mix of .opus and .m4a files, that is normal and reflects the migration history of that specific chat. ThreadRecap processes both formats without requiring any pre-conversion step on your part.
.opus files are just voice messages in an efficient audio format. The challenge is not the format itself but the volume — when a conversation has dozens of voice messages, manually listening to each one is not practical.
Automated transcription turns those .opus files into text that can be searched, summarized, and analyzed alongside the rest of the conversation.
WhatsApp voice messages are .opus files. Learn what this format is, why WhatsApp uses it, and how to convert them to searchable text effortlessly.
Transcribe every voice message in this chat at once.
Analyze your chatUpload your export and every audio becomes searchable, timestamped text inside the full conversation.
Upload your export and every audio becomes searchable, timestamped text inside the full conversation.