Por dentro de una exportación de WhatsApp: el formato .txt
En resumen
Una exportación de WhatsApp es un archivo de texto plano sin especificación oficial: _chat.txt dentro de un .zip en iPhone, o un .txt en Android. Cada mensaje empieza con una cabecera de fecha y hora, seguida del autor, dos puntos y el texto. iPhone pone la fecha entre corchetes con segundos, Android añade un guion antes del autor, y el formato de la fecha sigue la configuración regional del móvil.
Un chat exportado parece un archivo de texto sencillo hasta que intentas leerlo con un programa. Aquí tienes un recorrido práctico por cómo está hecho, todas las variantes que nos hemos encontrado y cómo puede lidiar con ellas un analizador.
Por el equipo de Chat Recap · Actualizado el
Cuando exportas un chat de WhatsApp obtienes un archivo de texto plano: _chat.txt dentro de un .zip en iPhone, o un archivo tipo “Chat de WhatsApp con Cenas del domingo.txt” en Android. No existe ninguna especificación oficial. La estructura depende del sistema operativo, del idioma y de la configuración regional del móvil, y ha ido cambiando con los años. Todo lo que sigue se basa en exportaciones reales y en las reglas que usa el analizador de Chat Recap (los ejemplos llevan nombres y números inventados).
La línea básica: fecha, hora, autor y mensaje
Cada mensaje empieza en una línea nueva con una cabecera (la marca de tiempo), luego el nombre del autor, dos puntos y el texto. Hay dos grandes familias: iPhone y Android.
iPhone pone la fecha entre corchetes e incluye los segundos:
[05/10/2026, 09:32:15] Lucía: ¿Quién reserva el restaurante?
Android no usa corchetes ni segundos, y pone un guion antes del autor:
05/10/2026, 09:32 - Lucía: ¿Quién reserva el restaurante?
Separar el autor del texto parece fácil, pero los nombres pueden tener espacios, tildes, guiones y emojis (José María, Lucía Muñoz 🌻), y los mensajes también llevan dos puntos a menudo. La regla segura es cortar en los primeros dos puntos seguidos de un espacio, después de la cabecera. Así, en Pablo: buenas noches: hasta mañana, el autor es Pablo y el texto conserva sus propios dos puntos. El analizador limita además el nombre a 80 caracteres, para no tomar una frase larga con dos puntos por un nombre.
Las exportaciones recientes a veces ponen ~ delante de quien no está en tus contactos (~ Álex). Ese prefijo es decorativo y conviene quitarlo para no contar dos veces a la misma persona.
Fechas y horas: la parte complicada
La marca de tiempo se escribe según la configuración regional del móvil, así que el mismo instante puede aparecer de muchas formas:
| Ejemplo de cabecera | Origen habitual |
|---|---|
[05/10/2026, 21:15:02] |
iPhone, España, 24 h |
[10/5/26, 9:15:02 PM] |
iPhone, inglés de EE. UU., 12 h |
05/10/2026, 21:15 - |
Android, España |
5/10/26, 9:15 p. m. - |
Android, español, 12 h |
2026-10-05, 21:15 - |
Configuraciones con el año delante |
05.10.26, 21:15 - |
Fechas con puntos (por ejemplo, alemán) |
Algunos detalles hacen tropezar a los analizadores ingenuos:
- ¿Primero el día o el mes?
05/10/2026es 5 de octubre en casi todo el mundo y 10 de mayo en EE. UU., y el archivo no lo dice. Chat Recap decide una sola vez para todo el archivo: cualquier parte mayor que 12 lo resuelve (un25/10solo puede ser día/mes), una primera parte de cuatro cifras indica año delante y, si todas las fechas son ambiguas, elige el orden que mantiene el chat en orden cronológico. Si aun así hay empate, unAM/PMsin puntos (típico del inglés de EE. UU.) inclina hacia mes/día; si no, se queda con día/mes. - Años de dos cifras.
5/10/26es 2026. - Reloj de 12 horas.
12:00 a. m.es medianoche y12:05 p. m., justo después del mediodía. Los móviles en español escribena. m.yp. m.con puntos. - Espacios invisibles. Entre la hora y
PM, o entrea.ym., puede haber un espacio estrecho de no separación (U+202F). Parece un espacio normal, pero una expresión regular que espere" PM"fallará. - Separadores. Algunos idiomas añaden una palabra entre fecha y hora (
a las,at). La fecha puede ir separada por/,.o-. - Fechas imposibles. Una cabecera como
31/02/2026debe rechazarse, no convertirse en silencio en un día de marzo.
Mensajes de varias líneas
Un mensaje con saltos de línea continúa en las líneas siguientes sin cabecera:
05/10/2026, 09:34 - Lucía: Pero primero
tengo que acabar el trabajo
y luego voy
La regla: cualquier línea que no empiece por una cabecera válida pertenece al mensaje anterior, incluidas las líneas en blanco, que forman parte de lo que la persona escribió. Por eso tampoco puedes contar líneas para saber cuántos mensajes hay.
Mensajes del sistema
WhatsApp mezcla sus propios avisos en el archivo: el aviso de cifrado de extremo a extremo, “creó el grupo”, “añadió a”, “salió”, “cambió el asunto”, cambios de código de seguridad, mensajes temporales, mensajes fijados, etc. Cada plataforma los escribe de forma diferente.
En Android no tienen autor ni dos puntos:
05/10/2026, 09:31 - Pablo creó el grupo "Cenas 🍕"
05/10/2026, 09:31 - Pablo añadió a Lucía
14/10/2026, 00:10 - Pablo cambió el asunto de "Cenas" a "Cenas: temporada 2"
Fíjate en la última: el asunto nuevo contiene : , así que un analizador ingenuo creería que alguien llamado Pablo cambió el asunto de "Cenas" a "Cenas ha escrito un mensaje. El analizador de Chat Recap detecta este caso al ver un “autor” que aparece una sola vez, con un nombre largo y un texto que parece un aviso.
En iPhone, los avisos suelen atribuirse al nombre del grupo y el texto empieza con una marca invisible:
[5/10/26, 9:30:02] Cenas: Pablo creó el grupo "Cenas"
Si cuentas autores sin cuidado, el propio grupo acaba siendo el miembro más charlatán. Un buen analizador reconoce estas líneas como del sistema y las deja fuera de las estadísticas por persona. El texto de estas líneas también suele incluir números de teléfono (“Pablo añadió a +34 600 000 000”), y conviene ocultarlos.
Marcas: multimedia, eliminados, editados, encuestas y llamadas
Lo que sustituye a la foto depende de la plataforma, del idioma y de si incluiste los archivos:
| Qué pasó | Android (ES) | iPhone (ES) |
|---|---|---|
| Multimedia, exportado sin archivos | <Multimedia omitido> |
imagen omitida, video omitido, audio omitido, sticker omitido |
| Multimedia, exportado con archivos | IMG-20260301-WA0001.jpg (archivo adjunto) |
<adjunto: 00000123-PHOTO-2026-03-01-10-05-00.jpg> |
| Eliminado | Se eliminó este mensaje / Eliminaste este mensaje |
el mismo texto |
| Editado | texto seguido de <Se editó este mensaje> |
igual |
En inglés son <Media omitted>, image omitted o This message was deleted, y en catalán, <Fitxers multimèdia omesos> o S'ha suprimit aquest missatge. Cuando se incluyen los archivos, el nombre delata el tipo (PTT- o AUDIO- para notas de voz, STICKER-, VID-, PHOTO-).
Otros textos generados que vale la pena conocer:
[01/03/26, 10:01:00] Pau: Llamada de voz perdida
[01/03/26, 10:04:00] Lucía: ENCUESTA:
¿Dónde cenamos?
OPCIÓN: La pizzería (3 votos)
OPCIÓN: En casa de alguien (0 votos)
Las llamadas tienen autor, pero nadie las “escribió”. Las encuestas llegan como un bloque de varias líneas con la pregunta y cada opción con sus votos. Los mensajes de “visualización única” y los de “Este mensaje no se puede mostrar aquí” también aparecen como texto. Así los trata un analizador cuidadoso (y el nuestro):
- Las marcas de multimedia cuentan como un mensaje de tipo multimedia, sin texto.
- Los mensajes eliminados cuentan como mensaje de esa persona, con el texto vacío.
- La etiqueta de editado se quita y el mensaje queda marcado como editado.
- De las encuestas solo se guarda la pregunta, sin opciones ni recuento de votos.
- Las llamadas y los enlaces de invitación al grupo pasan a ser líneas del sistema, así que no cuentan como si alguien escribiera.
- Un mensaje real que solo menciona una llamada (
¿llamada de voz?? dónde estás) sigue siendo un mensaje normal.
Caracteres invisibles
Las exportaciones de iPhone están llenas de marcas Unicode de ancho cero, sobre todo la marca de izquierda a derecha U+200E. Aparece al principio de algunas líneas, justo antes de las marcas de multimedia y de los textos del sistema, y alrededor de los números de teléfono (+34 600 000 000 esconde U+202A y U+202C). El archivo también puede empezar con una marca de orden de bytes (U+FEFF) y usar saltos de línea de Windows (\r\n).
Estas marcas son pistas útiles: en iPhone, un texto que empieza por U+200E lo ha generado WhatsApp, no lo ha escrito nadie. Pero hay que quitarlas antes de comparar nombres o textos, o “Lucía” y “Lucía” serán dos personas distintas.
Cómo lo resuelve un analizador robusto
Juntándolo todo, un analizador que sobrevive a archivos reales suele funcionar así:
- Normaliza los saltos de línea y elimina la marca de orden de bytes.
- Primera pasada: busca todas las líneas que parecen una cabecera de iPhone o de Android, ignorando las marcas invisibles iniciales.
- Decide el orden de la fecha con todas las cabeceras a la vez, no línea a línea.
- Segunda pasada: construye los mensajes; las líneas sin cabecera se añaden al anterior.
- Clasifica cada mensaje como normal, multimedia o del sistema, y detecta eliminados, editados y encuestas.
- Sustituye los números de teléfono. Nuestro analizador muestra a quien solo está guardado como número como “Contacto 1”, “Contacto 2” y oculta los números escritos dentro de los mensajes.
- No pierde ninguna línea en silencio. Las líneas anteriores a la primera cabecera, las que parecen una fecha pero no encajan (
05/10/2026 9h33) y las fechas imposibles quedan registradas como avisos.
Por último, comprueba que el resultado tiene sentido. El analizador solo rechaza un archivo cuando casi nada parece WhatsApp: necesita al menos dos mensajes reales y que un 15 % de las líneas no vacías sean cabeceras, o al menos 50 cabeceras. Todo este trabajo se hace en tu navegador, como explica la política de privacidad.
Siguiente paso
Abre tu exportación en un editor de texto y busca tres cosas: la primera cabecera, un mensaje de varias líneas y una marca de multimedia. Cuando sepas reconocerlas, las cifras de cómo entender las estadísticas de un grupo de WhatsApp tendrán mucho más sentido, y podrás contrastarlas con vuestro archivo en el analizador.
Preguntas frecuentes
¿Cómo sé si las fechas de una exportación de WhatsApp van con el día o el mes delante?
El archivo no lo dice. Cualquier parte mayor que 12 lo resuelve y una primera parte de cuatro cifras indica año delante. Si todas las fechas son ambiguas, Chat Recap elige el orden que mantiene el chat en orden cronológico, y lo decide una sola vez para todo el archivo.
¿Qué significa <Multimedia omitido> en un chat exportado de WhatsApp?
Marca una foto, un vídeo, un sticker o un audio que se envió pero que no está porque el chat se exportó sin archivos. iPhone escribe líneas como imagen omitida, y el texto cambia según el idioma del móvil.
¿Por qué la misma persona aparece dos veces cuando analizo una exportación de WhatsApp?
Las exportaciones de iPhone llevan marcas Unicode invisibles como U+200E, y las recientes ponen "~ " delante de quien no está en tus contactos. Si una herramienta no las quita, una sola persona puede contar como dos autores distintos.
¿Cómo se guardan los mensajes de varias líneas en una exportación de WhatsApp?
Las líneas de más van después de la primera sin cabecera de fecha. Cualquier línea que no empiece por una cabecera válida, incluidas las líneas en blanco, pertenece al mensaje anterior, así que contar líneas no te da el número de mensajes.