Per dins d'una exportació de WhatsApp: el format .txt

En resum

Una exportació de WhatsApp és un fitxer de text pla sense cap especificació oficial: _chat.txt dins d'un .zip a l'iPhone, o un .txt a l'Android. Cada missatge comença amb una capçalera de data i hora, seguida de l'autor, dos punts i el text. L'iPhone posa la data entre claudàtors amb segons, l'Android afegeix un guionet abans de l'autor, i el format de la data segueix la configuració regional del mòbil.

Un xat exportat sembla un fitxer de text senzill fins que intentes llegir-lo amb un programa. Aquí tens un recorregut pràctic per com està fet, totes les variants que ens hem trobat i com se'n pot sortir un analitzador.

Per l’equip de Chat Recap · Actualitzat el

Quan exportes un xat de WhatsApp obtens un fitxer de text pla: _chat.txt dins d’un .zip a l’iPhone, o un fitxer tipus “Xat de WhatsApp amb Sopars de diumenge.txt” a l’Android. No n’hi ha cap especificació oficial. L’estructura depèn del sistema operatiu, de l’idioma i de la configuració regional del mòbil, i ha anat canviant amb els anys. Tot el que segueix es basa en exportacions reals i en les regles que fa servir l’analitzador de Chat Recap (els exemples porten noms i números inventats).

La línia bàsica: data, hora, autor i missatge

Cada missatge comença en una línia nova amb una capçalera (la marca de temps), després el nom de l’autor, dos punts i el text. Hi ha dues grans famílies: iPhone i Android.

L’iPhone posa la data entre claudàtors i inclou els segons:

[05/10/2026, 09:32:15] Martí: Qui reserva el restaurant?

L’Android no fa servir claudàtors ni segons, i posa un guionet abans de l’autor:

05/10/2026, 09:32 - Martí: Qui reserva el restaurant?

Separar l’autor del text sembla fàcil, però els noms poden tenir espais, accents, guionets i emojis (Joan 🦄, Anna Puig-Ferrer), i els missatges sovint també porten dos punts. La regla segura és tallar als primers dos punts seguits d’un espai, després de la capçalera. Així, a Núria: bona nit: fins demà, l’autora és Núria i el text conserva els seus propis dos punts. L’analitzador també limita el nom a 80 caràcters, per no confondre una frase llarga amb dos punts amb un nom.

Les exportacions recents de vegades posen ~ davant de qui no tens als contactes (~ Àlex). Aquest prefix és decoratiu i convé treure’l per no comptar dues vegades la mateixa persona.

Dates i hores: la part complicada

La marca de temps s’escriu segons la configuració regional del mòbil, així que el mateix instant pot aparèixer de moltes maneres:

Exemple de capçalera Origen habitual
[05/10/2026, 21:15:02] iPhone, Europa, 24 h
[10/5/26, 9:15:02 PM] iPhone, anglès dels EUA, 12 h
05/10/2026, 21:15 - Android, Europa
5/10/26, 9:15 p. m. - Android, castellà, 12 h
2026-10-05, 21:15 - Configuracions amb l’any al davant
05.10.26, 21:15 - Dates amb punts (per exemple, alemany)

Alguns detalls fan ensopegar els analitzadors ingenus:

  • Primer el dia o el mes? 05/10/2026 és el 5 d’octubre a gairebé tot el món i el 10 de maig als EUA, i el fitxer no ho diu. Chat Recap ho decideix un sol cop per a tot el fitxer: qualsevol part més gran que 12 ho resol (un 25/10 només pot ser dia/mes), una primera part de quatre xifres vol dir any al davant i, si totes les dates són ambigües, tria l’ordre que manté el xat en ordre cronològic. Si encara hi ha empat, un AM/PM sense punts (típic de l’anglès dels EUA) decanta cap a mes/dia; si no, es queda amb dia/mes.
  • Anys de dues xifres. 5/10/26 és el 2026.
  • Rellotge de 12 hores. 12:00 AM és mitjanit i 12:05 PM, just passat el migdia. Els mòbils en castellà escriuen a. m. i p. m. amb punts.
  • Espais invisibles. Entre l’hora i PM, o entre a. i m., hi pot haver un espai estret de no separació (U+202F). Sembla un espai normal, però una expressió regular que esperi " PM" fallarà.
  • Separadors. Alguns idiomes afegeixen una paraula entre la data i l’hora (a les, a las, at). La data pot anar separada per /, . o -.
  • Dates impossibles. Una capçalera com 31/02/2026 s’ha de rebutjar, no convertir-se en silenci en un dia de març.

Missatges de diverses línies

Un missatge amb salts de línia continua a les línies següents sense capçalera:

05/10/2026, 09:34 - Anna Puig-Ferrer: Però primer
he d'acabar la feina

i després vinc

La regla: qualsevol línia que no comenci amb una capçalera vàlida pertany al missatge anterior, incloses les línies en blanc, que formen part del que la persona va escriure. Per això tampoc no pots comptar línies per saber quants missatges hi ha.

Missatges del sistema

WhatsApp barreja els seus propis avisos dins del fitxer: l’avís de xifratge d’extrem a extrem, “ha creat el grup”, “ha afegit”, “ha sortit”, “ha canviat l’assumpte”, canvis de codi de seguretat, missatges temporals, missatges fixats, etc. Cada plataforma els escriu d’una manera diferent.

A l’Android no tenen autor ni dos punts:

05/10/2026, 09:31 - Martí ha creat el grup "Sopars 🍕"
05/10/2026, 09:31 - Martí ha afegit Anna
14/10/2026, 00:10 - Martí ha canviat l'assumpte de "Sopars" a "Sopars: temporada 2"

Fixa’t en l’última: l’assumpte nou conté : , així que un analitzador ingenu creuria que algú anomenat Martí ha canviat l'assumpte de "Sopars" a "Sopars ha escrit un missatge. L’analitzador de Chat Recap detecta aquest cas quan veu un “autor” que surt un sol cop, amb un nom llarg i un text que sembla un avís.

A l’iPhone, els avisos se solen atribuir al nom del grup i el text comença amb una marca invisible:

[5/10/26, 9:30:02] Sopars: ‎Martí ha creat el grup "Sopars"

Si comptes autors sense compte, el grup mateix acaba sent el membre més xerraire. Un bon analitzador reconeix aquestes línies com a missatges del sistema i les deixa fora de les estadístiques per persona. El text d’aquestes línies també sol incloure números de telèfon (“Martí ha afegit +34 600 000 000”), i convé amagar-los.

Marques: multimèdia, suprimits, editats, enquestes i trucades

El que substitueix la foto depèn de la plataforma, de l’idioma i de si hi vas incloure els fitxers:

Què va passar Android (CA) iPhone (CA)
Multimèdia, exportat sense fitxers <Fitxers multimèdia omesos> imatge omesa, vídeo omès, àudio omès, adhesiu omès
Multimèdia, exportat amb fitxers IMG-20260301-WA0001.jpg (fitxer adjunt) <adjunt: 00000123-PHOTO-2026-03-01-10-05-00.jpg>
Suprimit S'ha suprimit aquest missatge / Has suprimit aquest missatge el mateix text
Editat text seguit de <S'ha editat aquest missatge> igual

En anglès són <Media omitted>, image omitted o This message was deleted, i en castellà, <Multimedia omitido>, imagen omitida o Se eliminó este mensaje. Quan s’inclouen els fitxers, el nom delata el tipus (PTT- o AUDIO- per a notes de veu, STICKER-, VID-, PHOTO-). Fins i tot l’apòstrof pot variar: hi ha fitxers amb S'ha i d’altres amb l’apòstrof tipogràfic S’ha, i cal acceptar tots dos.

Altres textos generats que val la pena conèixer:

[01/03/26, 10:01:00] Pau: ‎Trucada de veu perduda
[01/03/26, 10:04:00] Anna: ‎ENQUESTA:
On sopem?
‎OPCIÓ: Can Pep (3 vots)
‎OPCIÓ: A casa d'algú (0 vots)

Les trucades tenen autor, però ningú no les va “escriure”. Les enquestes arriben com un bloc de diverses línies amb la pregunta i cada opció amb els seus vots. Els missatges de “visualització única” i els de “Aquest missatge no es pot mostrar aquí” també apareixen com a text. Així els tracta un analitzador acurat (i el nostre):

  • Les marques de multimèdia compten com un missatge de tipus multimèdia, sense text.
  • Els missatges suprimits compten com a missatge d’aquella persona, amb el text buit.
  • L’etiqueta d’editat es treu i el missatge queda marcat com a editat.
  • De les enquestes només es guarda la pregunta, sense opcions ni recompte de vots.
  • Les trucades i els enllaços d’invitació al grup passen a ser línies del sistema, així que no compten com si algú escrivís.
  • Un missatge real que només esmenta una trucada (trucada de veu?? on ets) continua sent un missatge normal.

Caràcters invisibles

Les exportacions de l’iPhone estan plenes de marques Unicode d’amplada zero, sobretot la marca d’esquerra a dreta U+200E. Apareix al començament d’algunes línies, just abans de les marques de multimèdia i dels textos del sistema, i al voltant dels números de telèfon (‪+34 600 000 000‬ amaga U+202A i U+202C). El fitxer també pot començar amb una marca d’ordre de bytes (U+FEFF) i fer servir salts de línia de Windows (\r\n).

Aquestes marques són pistes útils: a l’iPhone, un text que comença amb U+200E l’ha generat WhatsApp, no l’ha escrit ningú. Però cal treure-les abans de comparar noms o textos, o “Martí” i “‎Martí” seran dues persones diferents.

Com ho resol un analitzador robust

Ajuntant-ho tot, un analitzador que sobreviu als fitxers reals sol funcionar així:

  1. Normalitza els salts de línia i elimina la marca d’ordre de bytes.
  2. Primera passada: busca totes les línies que semblen una capçalera d’iPhone o d’Android, ignorant les marques invisibles inicials.
  3. Decideix l’ordre de la data amb totes les capçaleres alhora, no línia per línia.
  4. Segona passada: construeix els missatges; les línies sense capçalera s’afegeixen a l’anterior.
  5. Classifica cada missatge com a normal, multimèdia o del sistema, i detecta suprimits, editats i enquestes.
  6. Substitueix els números de telèfon. El nostre analitzador mostra qui només està desat com a número com a “Contacte 1”, “Contacte 2” i amaga els números escrits dins dels missatges.
  7. No perd cap línia en silenci. Les línies anteriors a la primera capçalera, les que semblen una data però no encaixen (05/10/2026 9h33) i les dates impossibles queden registrades com a avisos.

Finalment, comprova que el resultat té sentit. L’analitzador només rebutja un fitxer quan gairebé res no sembla WhatsApp: necessita almenys dos missatges reals i que un 15 % de les línies no buides siguin capçaleres, o almenys 50 capçaleres. Tota aquesta feina es fa al teu navegador, com explica la política de privacitat.

Següent pas

Obre la teva exportació amb un editor de text i busca-hi tres coses: la primera capçalera, un missatge de diverses línies i una marca de multimèdia. Quan les sàpigues reconèixer, les xifres de com entendre les estadístiques d’un grup de WhatsApp tindran molt més sentit, i les podràs contrastar amb el vostre fitxer a l’analitzador.

Preguntes freqüents

Com sé si les dates d'una exportació de WhatsApp van amb el dia o el mes al davant?

El fitxer no ho diu. Qualsevol part més gran que 12 ho resol i una primera part de quatre xifres vol dir any al davant. Si totes les dates són ambigües, Chat Recap tria l'ordre que manté el xat en ordre cronològic, i ho decideix un sol cop per a tot el fitxer.

Què vol dir <Fitxers multimèdia omesos> en un xat exportat de WhatsApp?

Marca una foto, un vídeo, un adhesiu o un àudio que es va enviar però que no hi és perquè el xat es va exportar sense fitxers. L'iPhone escriu línies com imatge omesa, i el text canvia segons l'idioma del mòbil.

Per què la mateixa persona surt dues vegades quan analitzo una exportació de WhatsApp?

Les exportacions de l'iPhone porten marques Unicode invisibles com U+200E, i les recents posen "~ " davant de qui no tens als contactes. Si una eina no les treu, una sola persona pot comptar com dos autors diferents.

Com es guarden els missatges de diverses línies en una exportació de WhatsApp?

Les línies de més van després de la primera sense capçalera de data. Qualsevol línia que no comenci amb una capçalera vàlida, incloses les línies en blanc, pertany al missatge anterior, així que comptar línies no et dona el nombre de missatges.

Més guies