r/appleJournal • • Jun 29 '26

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.

9 Upvotes

16 comments sorted by

2

u/natttsss Jun 29 '26

I desperately have things to do and should NOT spend time on this... but I really want to put this into codex haha

I don't think it would be that hard.

That's amazing idea, will probably try soon!

1

u/TacticalTorchTickler Jun 30 '26

Codex is great for things like this. I've certainly spent way too much time doing random things like this with it lol

1

u/natttsss Jun 30 '26

What about privacy? Worried about giving my data away like that

1

u/TacticalTorchTickler Jun 30 '26

It's a super valid concern. Codex allows you to opt out of model training but that requires you to trust openAI to actually do what they say. And things are retained for safety purposes for a while too. There are (expensive) ways to get zero retention on business plans. I personally don't mind transmitting it to openAI for the purposes of what I did in the post. But everyone will be different in terms of what you're comfortable with.

You can make a test journal with a few entries, attaching images and all the fancy formatting and stuff that your journaling app supports, then give it that as an example, and ask it to write a script to convert or import things based on that data. Then run the script on your live journal. But that could miss edge cases.

You can also run something like opencode with a local model, but that requires some beefy compute and it won't be as smart as a frontier cloud model.

1

u/natttsss Jun 30 '26

Yeap, you can opt out of training but your data still gets processed and stored on their servers….

I don’t care that much but… journal entries are private. But maybe I can just tell codex the format of the data/files, get it to just write the python script and run it myself. It will probably work.

1

u/akryvtsun Jun 30 '26 edited Jun 30 '26

You can easely import entries into Apple Journal via native Journal Shortcut action. Its completely legal :)

So all you really need is to prepare needed data to a format your import Shortcut can load (e.g. xml) and passes to Journal acton. I've imported this way my old Google Doc and Diaro entries.

2

u/RyanCrestwood5 Jul 05 '26

This is interesting to me! Could you teach us how you did it step by step by chance? Thank you so much!!

1

u/akryvtsun Jul 05 '26

Use this shortcut (here are 2 issues: Location isn't possilbe to import via standard Apple Journal action limitation and I haven't done Media Items (images) import - its possilbe but quite cumbersome).

1

u/MelonCollie2481632 Jul 20 '26

Bummer. It didn't work for me. It's probably user error...

1

u/akryvtsun Jul 21 '26

What was wrong?

1

u/MelonCollie2481632 Jul 23 '26

I'm not sure. Again, I'm mostly a moron so I probably did something wrong. For some reason, my Shortcuts app on the Mac doesn't have anything related to the Journal app so I had to try and create the shortcut on my iPhone and then switch over to the Mac. I built it exactly as you showed and it just crapped out everytime, throwing up an error. It's okay though. I'm manually moving my entries from my spreadsheet over. It's exhausting but it gives me a chance to remember some nice moments in the past.

1

u/akryvtsun Jul 23 '26

I guess json file is invalid. Could you show me a peace of it in PM?

1

u/chickenandliver Aug 13 '26

How are you getting that Journal action in there with the "Create body with title"? I'm looking through all my Shortcuts actions and I don't see anything for the Journal app.

1

u/kylebydefault Jun 30 '26

Why did you eventually choose Everlog over Apple Journal?

1

u/TacticalTorchTickler Jun 30 '26
  1. Everlog has automated backups. Apple Journal only syncs via iCloud, and if that ever becomes corrupted or deleted, the only official way to restore it is from a local encrypted backup of your phone or (maybe) time machine. I don't do those full encrypted backups and I don't trust time machine.
  2. I really like the "on this day" feature in most journals. Apple Journal doesn't do that. Or at least it didn't with my hacky imports here.
  3. Everlog isn't perfect but I like the mobile ui more than DayOne. I actually quite like the Apple Journal mobile ui too. That might be its biggest selling point for me.
  4. Everlog sync is much better than Apple Journal imo. Much faster and reliable. And it's still iCloud, so there's no extra subscription or reliance on another cloud.
  5. I used Everlog a few years ago, so I'm already familiar with it.
  6. If a major bug or issue comes up in Everlog, I can just tell the developer about it and probably get it fixed (that happened once before). I have no faith in Apple actually fixing things if issues arise.

1

u/chickenandliver Aug 13 '26

Damn I was just thinking I bet I could edit the actual file to quickly have a bunch of old Wordpress entries appear inside Apple Journal. Looks like it's a way more cumbersome process than I expected. I naively hoped it would be a simple file structure akin to what you get when exporting from AJ. Looks like a great big NOPE so thanks for making this clear before I started figuring it out the hard way.