If you have ever tried to work through a WhatsApp conversation where half the messages are voice notes, you already know the problem: you press play, wait, take a note, press play again, lose your place, and repeat. That workflow collapses the moment the volume grows. ThreadRecap solves it by transcribing every voice note in an export simultaneously, merging the results back into the chat timeline so you can read the whole conversation as text.
Why one-by-one transcription stops scaling at 10 voice notes
Playing voice notes individually is fine for a quick personal exchange. It breaks down in three common situations:
High-volume group chats. A busy project group can accumulate dozens of voice notes in a single day. Listening to each one sequentially takes longer than the original conversation did.
Archived or historical chats. When you need to reconstruct what was agreed weeks or months ago, scrubbing through audio is slow and error-prone. A searchable text record is far more useful.
Evidence and compliance use cases. Legal teams, HR departments, and compliance officers need a complete, timestamped record. Manually transcribing audio one clip at a time introduces gaps and inconsistencies that undermine the document's reliability.
The fundamental issue is that audio is not searchable. Text is. Batch transcription converts the entire voice layer of a chat into something you can scan, search, copy, and cite.
Transcribe every voice message in this chat at once.
ThreadRecap uses OpenAI's audio transcription API for all voice note transcription. Clear audio transcribes best. A few characteristics of the pipeline are worth understanding before you process a large export.
What the transcription does well
The transcription covers a broad range of languages. It handles a wide range of accents, moderate background noise, and the relatively short clip lengths that are typical of WhatsApp voice notes. The compressed .opus format does not materially degrade transcription quality for most recordings made in normal conditions.
Where accuracy drops
Per-language accuracy is uneven. Languages with less audio available to train on produce more errors than English does. Recordings made in noisy environments, on low-quality microphones, or with heavy distortion also degrade. Always review transcripts before using them in formal or legal contexts.
Transcription for privacy-sensitive workflows
What matters for sensitive communications is where the audio goes and how long it is kept. ThreadRecap stores voice note audio encrypted in your account, and you can delete it at any time from the dashboard. Photos and documents in your export never leave your device, and video files are never uploaded; if you include videos, your browser extracts their audio track and sends only that.
Supported formats: .opus, .m4a, and .mp3
WhatsApp encodes voice notes as .ogg files using the OPUS codec. The files are typically referenced with the .opus extension in an export — the opus to text and OGG to text pages cover both spellings of the same format. ThreadRecap also accepts .m4a and .mp3 files, which appear in exports from certain device configurations or when voice notes have been forwarded and re-encoded.
You do not need to convert files before uploading. The batch processor identifies each audio file in the export ZIP, determines its format, and routes it to the transcription pipeline automatically. If a file is corrupt or unplayable, it is flagged in the output rather than silently skipped, so you have a complete record of what was and was not transcribed.
Open the chat or group in WhatsApp, go to the chat settings, and choose **Export Chat. When prompted, select Include Media**. This bundles the voice note files into the ZIP alongside the chat text file. Without media included, there are no audio files to transcribe.
Step 2: Upload the ZIP to ThreadRecap
Go to /whatsapp-voice-to-text and upload the ZIP file. ThreadRecap accepts files up to 2 GB, which covers exports containing 75,000 or more messages. The file is sent directly from your device to your encrypted account storage. Photos and documents in the ZIP are never uploaded, and neither are the video files; they stay in your browser and go when you clear its data. If you include videos, your browser extracts their audio track and sends only that.
Step 3: Batch transcription runs
ThreadRecap parses the chat text file to extract the message timeline, then identifies every audio file referenced in that timeline. Each .opus, .m4a, or .mp3 file is passed to the transcription pipeline. Clips are processed in parallel rather than sequentially, so a large export does not require proportionally more waiting time.
Step 4: Transcripts merge into the timeline
Once transcription is complete, each transcript is inserted into the chat timeline at the matching position, sender, and timestamp. The result is a readable conversation that includes both text messages and the transcribed content of every voice note. From there, you can ask for a focused summary, action list, or timeline and review it against the source conversation.
Multi-language detection per clip and how it interacts with code-switching
Per-clip language detection
ThreadRecap does not require you to declare a language before processing. The model assesses each audio clip independently and transcribes it in the language it detects. This means a single export can contain voice notes in English, Spanish, Portuguese, and French, and each will be transcribed correctly in its own language without any manual configuration.
It is important to understand that multilingual transcription outputs text in the detected language. It does not translate. If you need translated output, that is a separate step.
Code-switching
Code-switching is when a speaker mixes two languages within a single clip, for example beginning a sentence in English and finishing it in Portuguese. This is common in bilingual communities and international teams.
Transcription handles many code-switching cases, particularly when one language clearly dominates the clip. However, per-clip language detection works on the assumption that a single language is present. When two languages are used roughly equally within one short clip, the transcription may commit to the wrong language for part of the output. Mixed-language clips are worth reading against the original audio before you rely on them.
Practical implications for multilingual teams
If your team communicates in a dominant language with occasional phrases in a second language, batch transcription will produce usable results with minimal review. If your chats involve sustained code-switching across multiple clips, plan for a review pass before treating the transcripts as authoritative records.
Getting the most from a batch run
A few practical points before you start:
Export with media. This is the single most common reason a batch run produces no transcripts. If the ZIP contains only the chat text file, there is nothing to transcribe.
Check recording quality. Accuracy is highest on clear audio. Clips recorded in loud environments or on damaged microphones will need more review time.
Use the dashboard to manage retention. After you have downloaded or shared your transcripts, you can delete the source audio from your account. You are in control of what is stored and for how long.
Review important output against the source. If you are preparing material for a legal or compliance matter, keep the original ZIP and audio, check the transcript against them, and ask a qualified professional about the process that applies to your case.
Batch transcription does not change the content of your conversations. It makes the content accessible, searchable, and usable in ways that audio alone cannot be.
Ready to read your voice messages?
Upload your export and every audio becomes searchable, timestamped text inside the full conversation.