Skip to content
Sign In
Open test, re-run on every parser change

Will ThreadRecap read your WhatsApp export?

Paste the first line of your chat file, or drop the .zip. We tell you on the spot whether we read it, and how. It never leaves your browser.

By André DanielOct 16, 20268 min read

We read this line

Lucía · 15 January 2026 · 15:45iPhone layout, day firstsame layout as: Spanish (Spain, Latin America)

  • Read in this browser
  • Never uploaded
  • No account, no email
date and time layouts
33
languages, iPhone and Android
14
test cases pass today
49 / 49
real conversations used
0

On 16 October 2026, ThreadRecap's parser is tested against 33 WhatsApp timestamp layouts from phones set to 14 languages, and every row in the first table below is checked by a test that runs its sample line through that parser. If the WhatsApp export timestamp format on your phone matches one of these rows, we read it. The free export reader and the upload use the same parser. Below: the layouts, the markers WhatsApp writes in place of files and edits, how we settle a date like 03/04, and what we cannot read yet.

This page is about the text inside the chat file. For what each file in the .zip is, see WhatsApp export formats: which file you need.

Every language we read

14 languages, one line each to prove it

Open a language for every layout.

The samples are invented, with made-up names. Each one is written with the exact characters a phone writes, including the invisible ones.

DeutschGerman · 4 layouts

4 of 4 read
PhoneAs the phone writes itWhat we read
iPhone[15.01.26, 15:45:00] Jonas: Bin gleich daJonas · 15 January 2026 · 15:45
iPhonefour-digit year[15.01.2026, 15:46:12] Lena: Super, dankeLena · 15 January 2026 · 15:46
Android15.01.26, 15:45 - Jonas: Bin unterwegsJonas · 15 January 2026 · 15:45
Android12-hour clock19.09.24, 1:15 nachm. - Jonas: MittagspauseJonas · 19 September 2024 · 13:15

How the phone writes the date

Every message line in a WhatsApp export opens with a date and a time. iPhone puts them in square brackets. Android follows them with a dash. Everything else depends on the phone's language and region: the order of day and month, the separators, the clock, and the words for the half of the day.

The invisible characters matter. iPhone writes a narrow no-break space before AM or PM, not an ordinary space. Arabic exports add right-to-left marks and an embedding mark around the timestamp. A reader that only expects plain spaces sees no message at all in those files. We read past these characters and keep the message text.

The day-period words we read:

  • English: AM, PM, am, pm, a.m., p.m., in the morning, in the afternoon, in the evening, at night, noon, midnight. "At night" spans midnight, so 11:30 at night is 23:30 and 1:30 at night is 01:30.
  • German: vorm., nachm., vormittags, nachmittags.
  • French: matin, après-midi, soir, nuit, minuit, midi.
  • Portuguese: da manhã, da tarde, da noite.
  • Korean 오전 and 오후, and Chinese 上午 and 下午, written before the time.
  • Arabic ص and م, written after the time.

Arabic and Persian digits in a message, a name or a file name stay as they were written. We convert them only to read the date and the clock.

Check it yourself

Don't take our word for it

Every line on this page is synthetic: written for the test, with invented names, never taken from a real conversation. A test reads this page, runs each line through the same parser the free export reader and the upload use, and fails when a line stops reading as stated. It runs on every change to the parser, before that change reaches the site. The list of what we cannot read yet is checked the same way: each of those lines must still open no message.

You can check the result without taking our word for it:

  • The test cases (JSON)

    cases.json · 49 cases · every line and what it must read as.

    Download
  • The result of each case (CSV)

    results.csv · what the parser read, and pass or fail.

    Download
One case, as published
{
  "id": "layout-03",
  "phone": "iPhone",
  "label": "English (US)",
  "input": "[1/15/26, 3:45:00 PM] Jordan: Running ten minutes late",
  "expected": "Jordan, 15 January 2026, 15:45"
}
passchecked 16 October 2026

Day or month first

How we settle a date like 03/04

Is 03/04/2026 the 3rd of April or the 4th of March? The line alone cannot say. We decide once for the whole file, never line by line, in this order:

  1. A day above 12 settles it

    If any line says 15/04, the file writes the day first, and every other date is read the same way. If one line says 15/04 and another 04/15, we trust neither and go to the next step.

  2. Time runs forwards

    An export is written in order. We take the reading in which the dates climb. If both readings are badly out of order, the file is not a plain export, and we skip this step.

  3. US English, and no hour above 12

    Only when your browser or phone is set to US English do we read month first. One time with an hour above 12 anywhere in the file vetoes this step, because a US phone writes AM and PM.

  4. Day first

    Most of the world writes it that way, so it is the default.

When you add a newer export of a chat we have already read, the earlier reading breaks the tie in steps 3 and 4. That keeps both files on the same dates. A file's own proof, from step 1 or 2, always wins.

A date that cannot exist never becomes a made-up date. A line dated 99/99/9999, or 29 February in a year that has none, does not open a message. Nor does a line dated in the future, or before 2009, when WhatsApp did not exist yet. Such a line is often a chat line someone pasted into a message. We keep it as text inside the message above it.

Not just dates

What the markers in your file mean

Some lines are written by WhatsApp itself, not by a person. Each one changes what you can expect from the record.

MarkerAs the phone writes itWhat it means for you
Voice message attached (iPhone)
[24/01/2026, 13:58:27] Ravi: ‎<attached: 00000007-AUDIO-2026-01-24-13-58-27.opus>The recording is in the .zip. ThreadRecap transcribes it and puts the text where it was sent.
Voice message attached (Android)
16/03/2024 18:49 - Bruno: PTT-20240316-WA0047.opus (arquivo anexado)The same, in Android's wording. We read file attached, arquivo anexado, ficheiro anexado and archivo adjunto.
Photo attached
[03/01/2026, 00:37:39] Ravi: ‎<attached: 00000002-PHOTO-2026-01-03-00-37-39.jpg>Counted as a photo, in its place in the conversation.
Media omitted (Android)
24/01/2026, 14:02 - Ravi: <Media omitted>The export was made without media. Android does not say what the file was, so we never count it as a voice message.
Voice message omitted (iPhone)
[24/01/2026, 14:03:10] Ravi: ‎audio omittedThe export left a voice message behind. If 12 lines say this, the screen tells you before you pay: the export left 12 voice messages behind.
View-once voice message
24/01/2026, 14:05 - Lucía: <Se omitió el mensaje de voz de reproducción única.>A voice message set to play once. No new export brings it back, so we do not ask you to export again.
Edited message
17/01/26, 18:01 - Inês: See you at 6 <This message was edited>We take the tag off and mark the message as edited.
Encryption banner
24/01/2026, 13:46 - Messages and calls are end-to-end encrypted. Only people in this chat can read, listen to, or share them.WhatsApp's own line. It is not counted as anyone's message.
Deleted message
[24/01/2026, 14:10:00] Ravi: This message was deletedA notice, not a message. The deleted text is not in the file, so it is not in ours either.
Someone left a group
[24/01/2026, 14:12:00] Book club: ‎Ravi leftA notice, not a message. "He left me on read" stays a message: we match the shape of a notice, never one word.

The omitted markers come in many languages. Besides English, we read the German forms (Audio weggelassen, Bild weggelassen, Medien ausgeschlossen), the Spanish ones (Multimedia omitido, imagen omitida) and the Portuguese ones (Mídia oculta, áudio ocultado, imagem ocultada).

When voice messages were left behind, export the chat again with Include media. A view-once voice message is the exception: no export ever carries it.

What we cannot read yet

These lines open no message in ThreadRecap today. The same test that checks the table above checks each of these, so this list changes when the parser does.

  • Hindi or Marathi digits (Devanagari)१५/०१/२०२६, १५:४५ - Arjun: Hi
  • Bengali digits১৫/০১/২০২৬, ১৫:৪৫ - Arjun: Hi
  • Thai digits๑๕/๐๑/๖๙ BE, ๑๕:๔๕ - Malee: Hi
  • A Thai year without its BE mark18/09/2569, 14:31 - Malee: Hi
  • Turkish 12-hour clock28.12.2022 01:50 ÖS - Elif: Merhaba
  • Hungarian 12-hour clock2022. 12. 28. 1:50 du. - Zsófi: Szia

When nothing in a file can be read, but its lines look like a conversation, we say the format is one we cannot read yet. We do not tell you that your file holds no chat.

Some parts are read only in some languages:

  • The edited tag is read in English, Portuguese and Spanish. In other languages it stays at the end of the message text.
  • Group notices on iPhone, such as someone leaving, are read in English, Portuguese and Spanish. In German, "Ravi hat die Gruppe verlassen" reads as a message from the group. On Android most notices are read in any language, because Android writes no sender in front of them.
  • The view-once marker has been seen in a real export only in Spanish. We match the same words in English, Portuguese, Italian, French and German, but no export has proved them yet.

Reading a file says nothing about whether it is genuine. An export is a plain text file. Anyone can edit it before uploading it, and we read an edited file exactly like an untouched one. We do not check where a file came from. A clean reading tells you the dates and senders were understood, nothing more. If a conversation matters in a dispute, keep the original .zip as WhatsApp made it, and ask a lawyer how it should be handled.

What we added, and when

Several came from uploads we could not read. Only what the project's history records is listed.

2026

  1. Times with dots, such as 23.12.35, as Italian and Indonesian iPhones write them, after an error report.
  2. French 12-hour times (matin, soir), Croatian and Slovenian dates with spaced dots, and Chinese times with 上午 or 下午 in front. Five upload sessions in these formats had been turned away.
  3. German 12-hour times (vorm., nachm.), after a paying customer was told her valid export held no chat. French nuit, minuit and midi too: without them, French messages sent between midnight and four in the morning were folded into the message above. The same day, we started counting the voice messages an export left behind.
  4. French 24-hour times written with an h, such as 18 h 39. One such export had been refused four times.
  5. Notices matched by their shape. Before, "he left me on read" could be removed as if it were a notice.
  6. Thai Buddhist calendar years marked BE, so 69 BE reads as 2026 instead of 2069.
  7. Arabic and Persian digits kept as written in messages, names and file names.
  8. A line dated in the future no longer opens a message. One paid order had shown a chat from 2016 to 2026 as running to 2046.
  9. English day periods spelled out, such as 10:42 in the morning, after two uploads in that format were refused in October.

Is your export one of these?

Open your .zip in the free export reader. It reads the file in your browser, uploads nothing and needs no account. If your messages appear with the right senders and dates, ThreadRecap reads them the same way. If they do not, we do not read your layout yet.

To read the chat file by hand first, see how to open a WhatsApp _chat.txt file. For every file type a .zip can hold, see what's inside a WhatsApp chat export. When the reader shows your chat correctly, you can upload the export for the full analysis and the voice-message transcripts.

Related: WhatsApp Export Formats: Which File You Actually NeedWhat's Inside a WhatsApp Chat Export (Every File)How to Open a WhatsApp _chat.txt File (Without Garbled Text)

Questions

WhatsApp writes the date and time the way the phone's language and region write them. iPhone puts the timestamp in square brackets; Android follows it with a dash. The order of day and month, the clock and the day-period words all change with the phone's settings.

Open the .zip in the free export reader. It reads the file in your browser, uploads nothing and needs no account. If your messages appear with the right senders and dates, the paid analysis reads them the same way.

We decide once for the whole file. A day above 12 anywhere settles it. If every date is ambiguous, we take the reading in which the dates run forwards. If that still ties, day first is the default, except when your browser or phone is set to US English and no time in the file has an hour above 12, which reads month first.

The chat was exported without media, so WhatsApp wrote a marker where each file was. Android's marker does not say what kind of file it was. iPhone's says "audio omitted" or "image omitted". ThreadRecap counts them and tells you before you pay.

Not yet. We read Western digits, Arabic-Indic digits and Persian digits. A timestamp written in Devanagari, Bengali or Thai digits opens no message today.

No. An export is a plain text file and anyone can edit it. We read an edited file exactly like an untouched one, and we do not check where a file came from.