imessage-exporter is a command-line tool and Rust library that exports iMessage data from Apple's messaging database to portable formats while preserving multimedia content and conversation structure.
The tool solves the problem of iMessage data being locked into Apple's proprietary database format by reverse-engineering the underlying database structure and providing read-only access to message history. It works by parsing the iMessage database directly and converting conversations into open formats like HTML and plain text, while also running diagnostics to identify corruption or issues within the database itself. The project supports the full range of iMessage features including threads, reactions, attachments, edited messages, and group chats across iMessage, RCS, SMS, and MMS protocols.
Developers and users who need to archive messages, migrate between devices, comply with data retention policies, or simply gain ownership of their communication history should consider this tool. It runs on macOS, Linux, and Windows, making it useful for anyone locked into the Apple ecosystem who wants portable backups. The project is particularly suited for those who want to preserve multimedia alongside message text and need reliable diagnostics on their iMessage database integrity. The README does not compare this tool to alternatives.
The project maintains active development with regular updates to support new iMessage features as they are released by Apple. The codebase is well-documented with a dedicated library component providing cross-platform data structures for programmatic access to iMessage information. The maintainer has invested significant effort in reverse-engineering Apple's proprietary formats, including the plist-based payload data and typedstream encoding, drawing on historical source code and detailed Unicode resources to ensure accuracy. The project includes comprehensive feature documentation and a FAQ addressing common questions about usage and capabilities.