Productivity

Reminders

Overview

The macOS Reminders application stores task data in SQLite databases within a versioned container structure. Reminders include task titles, notes, due dates, completion timestamps, priorities, locations, and list organisation. The data provides insight into the user's planned activities, deadlines, and task completion patterns.

Forensic Significance

Evidence TypeForensic Value
Task contentWhat the user planned to do
Due datesDeadlines and scheduling
Completion timestampsWhen tasks were marked done
Location-based remindersPhysical locations of interest
Priority levelsUrgency assessment
NotesAdditional context and details
List organisationHow the user categorises their tasks

File Locations

ArtifactPathFormat
Reminders database~/Library/Reminders/Container_v1/Stores/*.sqliteSQLite (Core Data)
Legacy path~/Library/Calendars/Calendar CacheSQLite (shared with Calendar)

On older macOS versions, reminders were stored in the same Calendar Cache database as calendar events. Modern macOS versions use a separate Reminders container.

Database Schema

ZREMCDREMINDER (Core Data entity)

ColumnTypeDescription
Z_PKINTEGERPrimary key
ZTITLE1TEXTReminder title
ZNOTESTEXTReminder notes
ZDUEDATEREALDue date (Core Data timestamp)
ZCOMPLETIONDATEREALWhen marked complete (Core Data timestamp)
ZCREATIONDATEREALCreation timestamp
ZMODIFIEDDATEREALLast modification timestamp
ZPRIORITYINTEGERPriority (0=none, 1=high, 5=medium, 9=low)
ZCOMPLETEDINTEGERWhether the reminder is complete (0/1)
ZLISTINTEGERFK to list
ZFLAGGEDINTEGERWhether the reminder is flagged

ZREMCDLIST (Reminder Lists)

ColumnTypeDescription
Z_PKINTEGERPrimary key
ZNAME1TEXTList name
ZCOLORINTEGERList colour
ZCREATIONDATEREALList creation timestamp

Key Fields for Analysis

SELECT
    r.ZTITLE1 AS title,
    r.ZNOTES AS notes,
    datetime(r.ZDUEDATE + 978307200, 'unixepoch') AS due_date,
    datetime(r.ZCOMPLETIONDATE + 978307200, 'unixepoch') AS completed_date,
    datetime(r.ZCREATIONDATE + 978307200, 'unixepoch') AS created,
    CASE r.ZPRIORITY
        WHEN 1 THEN 'High'
        WHEN 5 THEN 'Medium'
        WHEN 9 THEN 'Low'
        ELSE 'None'
    END AS priority,
    l.ZNAME1 AS list_name
FROM ZREMCDREMINDER r
LEFT JOIN ZREMCDLIST l ON r.ZLIST = l.Z_PK
ORDER BY r.ZCREATIONDATE DESC;

Timestamps

Reminders uses Core Data timestamps (seconds since 2001-01-01 00:00:00 UTC).

Analysis Notes

  • Task completion patterns: The gap between creation and completion dates reveals how the user manages their workload.
  • Location reminders: Some reminders include geofence triggers that reveal locations of interest.
  • Overdue tasks: Reminders with past due dates that remain incomplete may indicate abandoned plans.
  • Cross-device sync: Reminders sync via iCloud across all Apple devices. Data collected from a Mac may reflect tasks created on an iPhone or iPad.

Tool Support

ToolSupport
macforNot yet implemented (planned)
sqlite3Manual database inspection

References

Previous
Calendar
Next
Notes