What the CSV contains. Each export holds one conversation. The first row names the 16 columns: chat, message_rowid, guid, date_utc, date_local, sender, sender_handle, is_from_me, service, text, attachments, reply_to_guid, is_edited, is_unsent, reaction_type and reaction_target_guid. Every message gets a row, followed by one row for each reaction to it, so a thread with many reactions has more rows than messages.
Message rows and reaction rows. On a message row, text holds the message, attachments lists attached file names separated by semicolons, and reply_to_guid holds the guid of the earlier message it answers, if any. On a reaction row, text holds the reaction in words, such as Loved or Laughed at, reaction_type holds Apple's number for it, and reaction_target_guid holds the guid of the message it reacts to. To work with messages only, filter reaction_type to blanks. The is_from_me column is 1 for messages sent from the phone that was backed up and 0 for everyone else.
Times in two forms. date_utc looks like 2026-03-14T18:05:09Z, and date_local gives the same moment in this PC's time zone with its offset, such as 2026-03-14T14:05:09-04:00. Both are ISO 8601 text, so sorting date_utc from A to Z puts rows in time order even if Excel leaves the column as text. Dates the database does not have are left empty.
Opening it so the text reads correctly. The file is UTF-8 with a byte order mark, the marker Excel looks for to recognize UTF-8 when you double-click a CSV, so accents, non-Latin scripts and emoji appear as written. If you import it through Data, From Text/CSV instead, check that File Origin shows 65001: Unicode (UTF-8) before you load it.
Phone numbers. Excel guesses each column's type when it opens a CSV, and a handle such as +15550001111 may be shown as a number without its plus sign. To keep handles exactly as written, import with Data, From Text/CSV and set Data Type Detection to Do not detect data types, which loads every column as text.
Cells that start like a formula. A message that begins with =, @, or a + or - that is not a plain number could run as a formula when a spreadsheet opens it. BackupPaper puts a leading apostrophe in front of those cells so they are treated as text. Everything else is written exactly as stored, including Arabic and Indic text and characters the PDF cannot draw.
Limits worth knowing. One conversation per file, so export each thread you need separately and combine them in Excel if you want one sheet; the chat column keeps rows identifiable. Attachments are names only, not the files. And Apple says a computer backup leaves out iMessages and texts that already sync to iCloud, so with Messages in iCloud on, the backup may hold few or no conversations to export.