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 macOS and iMessage. It may work with older databases, but all features may not be available.
- 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
typedstream
message body data - Detects the service a message was sent from
- In HTML exports, balloons are colored correctly for the service they were sent with
- Formatted Text
- Parses formatted text ranges from
typedstream
message 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
typedstream
edited 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
typedstream
message 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 images can be converted for even more portable exports:
- Attachment
HEIC
files convert toJPEG
- Sticker
HEIC
files convert toPNG
- Sticker
HEICS
files convert toGIF
- Attachment
- Attachments are displayed as
- File paths in TXT exports
- Embeds in HTML exports (including
<img>
,<video>
, and<audio>
)
- 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
NSKeyedArchiver
payload 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)
- Apple Maps (including
Placemark
data) - App Store (including app metadata)
- Rich Collaboration
- Parses the
- App Integrations
- Parses the
NSKeyedArchiver
payload 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
- Parses the
- Handwritten Messages
- Parses the protobuf payload to extract handwritten message data
- Displayed as embedded
svg
in HTML exports - TXT export behavior depends on attachment settings:
disabled
: embedded inline as anascii
graphiccompatible, efficient
: saved as ansvg
file
- Displayed as embedded
- Parses the protobuf payload to extract handwritten 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