The library and binary crates aim to provide the most comprehensive and accurate representation of iMessage data available.
This tool targets the current latest public release for Messages.app. It may work with older databases, but all features may not be available.
- Local macOS messages
- Encrypted or unencrypted local iOS backups
- Unencrypted backups are resolved normally
- Uses crabapple to decrypt data from encrypted iOS backups
- Plain Text
- Correctly extracts time-zone corrected timestamps
- Detects when a message was read and calculates the time until read for both parties
- Humanizes display of time-until-read duration
- Parses
typedstreammessage body data usingcrabstep - Detects the service a message was sent from
- In HTML exports, balloons are colored correctly for the service they were sent with
- Supports iMessage, SMS, MMS, and RCS
- Displays translated message content
- Formatted Text
- Parses formatted text ranges from
typedstreammessage body data - Supports all iMessage text format ranges:
- Mentions
- Hyperlinks
- OTP/2FA
- Unit Conversions
- Animations and Styles
- Parses formatted text ranges from
- Edited and Unsent messages
- Detects if messages components were edited or unsent
- Edited messages
- Parses
typedstreamedited body data - Displays content and timestamps for each edit
- Humanizes display of edit timestamp gaps
- Edited messages received before Ventura display as normal messages without history
- Parses
- Unsent messages
- No content, but are noted in context
- Edited messages
- Detects if messages components were edited or unsent
- Multi-part messages
- iMessages can have multiple parts, denoted by ranges in
typedstreammessage body data - Parts are displayed as
- New lines in TXT exports
- Separate balloons in HTML exports
- Handles Edited and Unsent parts
- iMessages can have multiple parts, denoted by ranges in
- Threads and Message Replies
- Threads are displayed both threaded under the parent as well as in-place
- This is to preserve context, which can be lost if replying to older messages
- Messages from a thread and were rendered in-place are annotated as such
- In HTML exports, threaded messages are hyperlinked to allow for easy reading in context
- For multi-part messages, replies are threaded under the correct message part
- Threads are displayed both threaded under the parent as well as in-place
- Attachments
- Any type of attachment that can be displayed on the web is embedded in the HTML exports
- Attachments can be copied to the export directory or referenced in-place
- Less-compatible attachments can be converted for even more portable exports:
- Image
HEICfiles convert toJPEG - Sticker
HEICfiles convert toPNG - Animated Sticker
HEICS(HEIC sequence) files convert toGIF - Video
MOVfiles convert tomp4 - Audio
CAFfiles convert tomp4
- Image
- Attachments are displayed as
- File paths in TXT exports
- Embeds in HTML exports (including
<img>,<video>, and<audio>)- Audio messages include embedded transcripts
- Attachment date metadata is set to the date and time of message receipt
- Expressives
- Detects both bubble and screen effects
- Messages sent with expressives are annotated
- Tapbacks
- Detects tapbacks to messages
- Messages sent or received with tapbacks are annotated
- For multi-part messages, tapbacks are placed under the correct message part
- Stickers
- Detects stickers sent or placed on messages
- Messages sent with stickers are
- Displayed in HTML exports
- Annotated in TXT exports
- For multi-part messages, stickers are placed under the correct message part
- Sticker effects are annotated in all exports
- Sticker tapbacks are also supported
- Apple Pay
- Detects the transaction source, amount, and type
- URL previews
- Parses the
NSKeyedArchiverpayload to extract preview data- Extracts cached metadata for each URL
- Preview images display in HTML exports
- URLs that have rotten may still retain some context if they have cached data
- Handles cases where URL messages are overloaded with other message types
- Apple Music (including preview streams and lyrics)
- Apple Maps (including
Placemarkdata) - App Store (including app metadata)
- Rich Collaboration
- Parses the
- App Integrations
- Parses the
NSKeyedArchiverpayload to extract balloon data - Supports system message types as well as third party applications
- Apple Fitness messages
- Photo Slideshow messages
- SharePlay/Facetime messages
- Check In messages
- Find My messages
- Polls and Votes
- Parses the
- Handwritten Messages
- Parses the protobuf payload to extract handwritten message data
- Displayed as embedded
svgin HTML exports - TXT export behavior depends on attachment settings:
disabled: embedded inline as anasciigraphicclone, basic, full: saved as ansvgfile
- Displayed as embedded
- Parses the protobuf payload to extract handwritten message data
- Digital Touch
- Parses the protobuf payload to extract Digital Touch message data
- Displayed as text that describes the type of message sent in HTML and TXT exports
- Parses the protobuf payload to extract Digital Touch message data
- Duplicated group chats
- Handles (participants) and chats (threads) can become duplicated
- On startup:
- Different handles that belong to the same person are combined
- Chatrooms that contain identical contacts (i.e., duplicated handles) are combined
- Announcements
- Handles all types of chatroom announcements
- Group photo changes
- Chat participant modifications
- Chat background settings
- Handles all types of chatroom announcements