Ce qu’il y a vraiment dans un export WhatsApp
4 min de lecture
Un export WhatsApp est un fichier texte d’une régularité surprenante : un seul format de ligne, zéro ligne inclassable sur 196 830 messages. Tout ce qui casse ensuite se joue sur quatre détails, et ils ne sont documentés nulle part.
Le nom du fichier n’est pas toujours _chat.txt
C’est le premier piège, et il fait perdre du temps à tout le monde. _chat.txt est le nom iOS. Un export fait depuis Android en français produit un fichier nommé Discussion WhatsApp avec <nom du fil>.txt.
Conséquence pratique : un outil qui cherche _chat.txt dans l’archive ne trouve rien sur la moitié des téléphones. Sur les neuf exports du corpus de calibration de RevealChat, aucun ne s’appelait _chat.txt.
Autre conséquence, plus utile : le nom du fil est dans le nom du fichier. C’est la seule source fiable pour savoir avec qui la conversation a lieu, et il contient souvent des emoji, jusqu’à des séquences composées comme celle de la famille.
Le format d’une ligne
Sur Android en français, chaque message commence par une ligne bâtie exactement comme ceci :
JJ/MM/AAAA, HH:MM - Auteur: contenupour un message normal.JJ/MM/AAAA, HH:MM - message de servicepour une notice sans auteur, comme un changement de numéro.- Toute ligne qui ne commence pas par une date appartient au message précédent.
Sur iOS, la date est entre crochets et porte les secondes : [JJ/MM/AAAA HH:MM:SS]. Et un export en anglais change tous les repères d’un coup, séparateur compris. Un outil qui suppose un format au lieu de le détecter sur les premières lignes se trompe une fois sur deux.
Deux détails qui n’ont l’air de rien. Le séparateur entre l’auteur et le texte est : , et un message peut en contenir un aussi : il faut donc ne couper qu’à la première occurrence. Et un caractère invisible, U+200E, se glisse en début de contenu. Il ne se voit pas, il fait échouer les comparaisons de texte.
Les messages tiennent souvent sur plusieurs lignes
C’est fréquent, et c’est la première chose que les scripts amateurs ratent : ils comptent des lignes et croient compter des messages. Un message peut contenir des retours à la ligne, y compris des lignes vides en son milieu. Le seul repère est la date en début de ligne.
Sur les neuf exports du corpus, cette règle suffit : zéro ligne orpheline sur 196 830 messages. Le format est régulier, à condition de le lire dans le bon sens.
Les marqueurs entre chevrons
WhatsApp remplace ce qu’il ne peut pas mettre en texte par un marqueur. Voici l’inventaire réel relevé sur huit archives, avec ses occurrences :
| Occurrences | Marqueur | Ce que ça veut dire |
|---|---|---|
| 52 125 | <Médias omis> | Une photo, une vidéo ou un vocal a été envoyé ici. |
| 975 | <Ce message a été modifié> | Le texte est présent, le marqueur s’ajoute à la fin. |
| 46 | <Video note omitted> | Une note vidéo, le petit format rond. |
| 17 | <Message vocal à écoute unique omis> | Un vocal à écoute unique. |
Deux de ces marqueurs sont en anglais dans un export français. Ce n’est pas une erreur de relevé : quelqu’un qui change la langue de son téléphone en cours de route laisse les deux jeux dans le même fichier.
⚠️ Le piège à ne pas rater : une expression du genre <[^>]+> pour attraper « tout ce qui est entre chevrons » détruit du contenu réel. Le même relevé fait remonter <br>, <stdio.h> et <dependency>, écrits par quelqu’un qui collait du code dans la conversation. La liste des marqueurs est une liste fermée, jamais un motif générique.
Les participants, là où ça casse vraiment
Le texte se lit bien. C’est l’identification des personnes qui pose les vrais problèmes, et ils sont tous présents dans un corpus de neuf conversations.
- Une même personne apparaît sous deux identités. Un export contient un « a changé de numéro de téléphone » : le fil bascule du numéro brut au nom du carnet d’adresses. Sans fusion, la personne est comptée deux fois, et tous les calculs d’équilibre sont faux.
- Un participant peut n’être qu’un numéro, parce qu’il n’est pas dans le carnet d’adresses. Dans un fil de travail à 54 participants, c’était le cas de tous.
- Les noms affichés contiennent des emoji. Ce ne sont ni des identifiants ni des prénoms.
- Certains participants sont quasi absents : un membre de groupe avec 1 message sur 14 653. Tout classement a besoin d’un plancher de participation, sinon le podium est occupé par du bruit.
Et « moi » ne figure nulle part dans le fichier. On le déduit par soustraction, à partir du nom du fil, ce qui marche pour un duo et échoue pour un groupe.
Ce qu’on peut en tirer, et ce qu’on ne peut pas
Le fichier donne, sans ambiguïté : qui a écrit, quand à la minute, combien de fois, dans quel ordre, avec quels mots, et quand un média a été envoyé. C’est déjà largement assez pour compter qui porte la conversation.
Il ne donne pas : les messages supprimés, le contenu des médias, les messages lus mais non répondus, les appels autrement qu’en notice, ni quoi que ce soit sur ce qui s’est passé hors de WhatsApp. Une analyse qui prétend savoir pourquoi quelqu’un n’a pas répondu invente : le fichier dit seulement qu’il n’a pas répondu, et à partir de quand.
Les médias comptent pour 27 % du corpus. Les ignorer, c’est perdre un quart des tours de parole : un <Médias omis> ne porte pas de texte, mais c’est un vrai message, qui compte pour le rythme et l’équilibre.
Importe un export WhatsApp et découvre les 3 premiers insights en quelques minutes.
