Guide

memories_history.json explained: every field in Snapchat's Memories file

memories_history.json is the file in a Snapchat data export that lists your Memories. It sits in the export's json/ folder and holds one entry per Memory, with the date it was taken, whether it's a photo or video, the location if one was recorded, and download links. It does not contain the photos and videos themselves; when you request Memories, those arrive in the export's memories/ folder. The file is how you get the original dates and places back onto those photos.

The shape of the file

It is a single object with a "Saved Media" list. A synthetic entry:

Field by field

FieldWhat it holdsNotes
DateWhen the Memory was taken, as YYYY-MM-DD HH:MM:SS UTCAlways UTC. Convert to your own time zone when displaying
Media TypePhoto or videoThe wording varies between exports ("Image", "Video", "PHOTO"), so don't rely on exact values
LocationLatitude, Longitude: <lat>, <lon>Can be empty. A value of exactly 0, 0 usually means no location was recorded
Download LinkA link to fetch that Memory from SnapchatReported to stop working after about a week
Media Download UrlAnother link form for the same MemorySame caveat

Third-party guides, including Redact's, report that these per-Memory links stop working after about a week. Snapchat's help page doesn't state a lifetime for them. Tools and scripts that fetch Memories by following these links need fresh links, which means a fresh export.

If you requested Memories in your export, you usually don't need the links at all. The files are already in memories/.

How entries connect to files in memories/

This is the awkward part. Files in memories/ are named like:

  • 2022-06-25_<uuid>-main.jpg or -main.mp4, the photo or video
  • 2022-06-25_<uuid>-overlay.png, the caption layer, when there is one

Nothing in a memories_history.json entry names its file. What they share is the date. A reliable way to match them:

  1. Group the entries by day, using Date.
  2. Group the -main files by day, using the date at the start of the file name or the timestamp stored with the file.
  3. On a day where both counts are the same, sort both by time and pair them in order.
  4. On a day where the counts differ, don't guess. Leave that day's files without a location.

This is the approach Lidly takes. It prefers a missing location over a wrong one. Restoring date and location explains what that means when you save to your camera roll.

What you can do with the file

  • Read it. Any text editor will open it, though a large one is easier in a JSON viewer.
  • Count your Memories. The number of entries is roughly how many Memories Snapchat has listed for you. The number of -main files in memories/ can differ slightly, for example when an entry has no file.
  • Restore metadata. Combine Date and Location with the matching file and write them into the photo's metadata, or save it to Photos with them attached.

Opening it with Lidly

Lidly reads memories_history.json straight from the ZIP when you import your export. You get your Memories in a timeline by date, with captions back on, and can save any of them to your camera roll with the original date and recorded location. Lidly reads only what's in your ZIP and never follows the download links; it makes no network requests at all.

Common questions

My memories_history.json is there but memories/ is empty or missing

The export was requested without Memories media, or some of it is in other parts of a split export. Check every ZIP part; see multi-part exports. If the media really isn't there, request again with Memories on. Which toggles to choose explains.

While they work, possibly. Once they've stopped working, no. Request a new export instead; see download not arriving or link expired.

Is there a chat equivalent?

Yes: chat_history.json lists saved chat messages and connects them to files in chat_media/ through a media ID. What's inside the export covers it, and viewing chats by person shows what it makes possible.

Sources