# Features The library and binary crates aim to provide the most comprehensive and accurate representation of iMessage data available. ## Targeted Versions This tool targets the current latest public release for Messages.app. It may work with older databases, but all features may not be available. ## Supported data sources - Local macOS messages - Encrypted or unencrypted local iOS backups - Unencrypted backups are resolved normally - Encrypted backups are resolved with [`crabapple`](https://github.com/ReagentX/crabapple) - Jailbroken iOS filesystem data - Uses `sms.db`, which follows the same schema as macOS `chat.db` - Resolved as a macOS database with an alternate attachment root ## Supported Message Features - 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 using [`crabstep`](https://github.com/ReagentX/crabstep) - 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, RCS, and Satellite (iMessage Lite) - Displays translated message content alongside the original text - Resolves contact names from the Contacts database when available - Formatted Text - Parses formatted text ranges from `typedstream` message body data - Supports all iMessage text format ranges: - [Mentions](https://support.apple.com/guide/messages/mention-a-person-icht306ee34b/mac) - Hyperlinks - OTP/2FA - [Animations and Styles](https://support.apple.com/guide/iphone/style-and-animate-messages-iphe5c5af4d4/ios) - Data detectors, parsed from `DDScannerResult` payloads: - Unit and timezone conversions - Currency amounts (symbol and amount) - Postal addresses (street, city, state, postal code, and country) - Package tracking (carrier and tracking number) - Flights (airline and flight number) - Edited and Unsent messages - Detects if messages components were edited or unsent - [Edited messages](https://support.apple.com/guide/iphone/unsend-and-edit-messages-iphe67195653/ios) - 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 - Unsent messages - No content, but are noted in context - Recently deleted messages are recovered when available - 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 - Threads and Message Replies - [Threads](https://support.apple.com/en-us/104974) 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 - 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 `HEIC` files convert to `JPEG` - Sticker `HEIC` files convert to `PNG` - Animated Sticker `HEICS` (HEIC sequence) files convert to `GIF` - Video `MOV` files convert to `mp4` - Audio `CAF` files convert to `mp4` - Audio `AMR` files convert to `mp4` - Attachments are displayed as - File paths in TXT exports - Embeds in HTML exports (including ``, `