Features

June 8, 2026 ยท View on GitHub

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
  • 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
    • 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
      • Hyperlinks
      • OTP/2FA
      • Animations and Styles
      • 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
        • 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 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 <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
    • Genmoji are displayed with their prompt descriptions
    • Inline stickers (Memoji, Genmoji, and custom stickers placed within the message text) render inline in HTML exports, scaled like jumbo emoji (larger when only a few are present)
  • Apple Pay
    • Displays Apple Pay transaction (source, amount, type) messages
  • 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 and lyrics)
      • Apple Maps (including Placemark data)
      • App Store (including app metadata)
      • Rich Collaboration
  • 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
      • Polls and Votes
      • Business Chat messages
        • Quick Replies
        • Interactive Forms
        • List Pickers
  • 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 an ascii graphic
        • clone, basic, full: saved as an svg file
  • Digital Touch
    • Parses the protobuf payload to extract Digital Touch message data
      • Supports all Digital Touch effects:
        • Taps
        • Sketches
        • Kisses
        • Heartbeats, including heartbreaks
        • Fireballs
        • Photos and videos
      • HTML exports render a static frame depicting the captured data as an embedded svg on a black 4:5 canvas
        • A photo is shown as the canvas backdrop, with any sketch drawn over it
        • A video is shown as an embedded video player
      • TXT exports describe each effect on a single line, including stroke and point counts or beats per minute
  • 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
      • Divergent chatrooms that map to the same conversation in the chat_lookup table are combined
  • Announcements
    • Handles all types of chatroom announcements
      • Group photo changes
      • Chat participant modifications
      • Phone number changes
      • Chat background settings