# 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 ``, `