u/TacticalTorchTickler

Image 1 — Experiment - Importing Into Apple Journal by Editing its Local Database (Don't do this)
Image 2 — Experiment - Importing Into Apple Journal by Editing its Local Database (Don't do this)

Experiment - Importing Into Apple Journal by Editing its Local Database (Don't do this)

First of all, this is extremely unsupported, and it could totally corrupt your Journal data, so always back everything up if you dare try it... but it works.

Also, I ended up sticking with Everlog, so I won’t be updating or supporting this. I’m posting this for educational purposes, and because I was curious whether it was possible.

The basic idea was:

  1. I used OpenAI Codex to format and consolidate all my entries from Day One, Everlog, and Obsidian into one .zip using Everlog’s export format.
  2. I treated that Everlog-style .zip as the source of truth.
  3. Then I had Codex inspect Apple Journal’s local data storage and write an importer that inserted everything directly into Apple Journal’s database.

Apple Journal stores its local data here:

~/Library/Group Containers/group.com.apple.moments/Library/moments.sqlite

And media attachments live here:

~/Library/Group Containers/group.com.apple.moments/Library/Attachments/

Under the hood, Apple Journal is basically a Core Data SQLite store. The important parts were:

ZJOURNALENTRYMO

This stores the journal entries themselves.

Z_5JOURNALS

This links entries to journals.

ZJOURNALENTRYASSETMO
ZJOURNALENTRYASSETFILEATTACHMENTMO

These store photos, Live Photos, audio clips, and their file references.

Entry text is not stored as plain Markdown or plain text. It is stored as RTF blobs. That turned out to matter a lot, because if you insert bad RTF or hard-code black text, it can display wrong in dark mode. The correct “default” text color is Apple’s semantic labelColor, not literal black.

Dates are stored as Apple/Core Data timestamps, meaning seconds since:

2001-01-01 00:00:00 UTC

UUIDs are stored as 16-byte blobs.

For journals, Apple stores name/color/icon metadata inside a private mergeable/CRDT blob, so I did not try to create Apple Journal folders directly. Instead, I manually created matching journals in Apple Journal first, then mapped Everlog journal names to those existing rows.

The conversion worked roughly like this:

  • Parse Everlog’s Entries.json.
  • Generate stable UUIDs for each imported entry and asset.
  • Convert Everlog dates to Apple/Core Data dates.
  • Convert Everlog Markdown into Apple Journal RTF.
  • Use the first # Heading as the Apple Journal title.
  • Convert body headings like ## Heading into bold text.
  • Convert basic Markdown formatting like bold, italic, quotes, bullets, and numbered lists.
  • Strip Everlog attachment placeholders like ![attachment](...), because the media gets imported separately.
  • Insert entries into ZJOURNALENTRYMO.
  • Link them to journals through Z_5JOURNALS.
  • Insert image/audio/Live Photo rows into the asset tables.
  • Copy media files into Apple Journal’s Attachments directory structure.
  • Update Core Data primary key counters.
  • Run SQLite integrity checks.
  • Reopen Journal and let it process the imported data.

Images worked as normal Apple Journal photo assets.

Everlog .pvt Live Photo files were Apple binary plists containing separate HEIC and MOV payloads, so those could be split and imported as Live Photo-style assets.

Audio .m4a files also worked. Apple Journal picked them up as audio assets and processed them after launch.

The weirdest part was comments. Everlog supports comments/replies on entries, but Apple Journal does not. Importing comments as separate entries made them look disconnected and confusing. The best compromise was to fold comments into the parent entry as a final section:

Comments

> Fri, Jun 26, 2026 at 4:29 PM
> This is an example comment from Everlog

That preserved the comment text and timestamp without pretending Apple Journal has a real comment system.

Before doing any of this, I turned off iCloud sync for Journal, quit Journal completely, and made backups of the local database. I also checked the database with:

PRAGMA integrity_check;

After importing, Apple Journal displayed the entries, journals, images, Live Photos, audio clips, Markdown formatting, and folded comments correctly.

Again, this is very much not supported. It is direct surgery on a private Apple database format. Apple could change it at any time, and iCloud sync may add extra risks. But as a local import experiment, yes, it is possible.

u/TacticalTorchTickler — 7 days ago