Hey everyone, Johnny here. I want to share a quick (but important) update on what's going on with SnapSavior, and what's going on with Snapchat's data export more broadly. The short version: the latest Snapchat exports we're seeing no longer contain the download URLs that every export tool, ours included, depends on. That includes Snapchat's own download page. We've paused new signups and payments while we figure out what comes next, and I want to walk you through exactly why.
I want to be upfront: I don't know if this is a permanent change, a bug, an A/B test, or a transitional step toward a new export format. I just know what we're seeing in the exports our customers (and Sameer and I) have requested over the last few days. So this post is part technical explainer, part "here's what we're doing about it," and part "here's what you can do."
What Actually Changed
When you go to Snapchat > Settings > My Data and request your data, Snapchat eventually sends you a ZIP file. Inside that ZIP there's a file called memories_history.json (plus a friendlier memories_history.html that's meant for opening in your browser). For years, each memory in that file came with a download link pointing to Snapchat's cloud storage. Something like this:
{
"Date": "2019-10-12 14:00:00 UTC",
"Media Type": "Image",
"Download Link": "https://app.snapchat.com/...?token=...",
"Media Download Url": "https://sc-memories.snapchat.com/..."
}That URL is the whole game. It's the only way for any tool to fetch the actual photo or video. Snapchat's servers hold the files; the export just gives you the keys to grab them.
In the exports we've received recently, those URL fields are gone (or empty). The metadata is still there: dates, media type, sometimes location. But the link that says "here is where to get the actual file" isn't in the JSON anymore, and Snapchat's own memories_history.html page (which is just a viewer on top of the same JSON) opens with no clickable links either.
Because every export tool reads from this same file, the change affects all of us at once. It isn't something we can route around with cleverer code on our side. There's nothing to fetch.
A Quick Tour of How SnapSavior Works
I think it's worth showing you what happens when you upload your Snapchat ZIP to us, because it makes the "why is this so impactful" part a lot clearer. At a high level, there are four stages.
1. We read your memories_history.json
When you drop your export onto SnapSavior, the first thing our backend does is unzip your file and look for the memories index. It checks a few common paths (json/memories_history.json, memories_history.json, Memories/memories_history.json) because Snapchat has shifted the location around over time. We then parse each entry: the date, the media type (photo or video), any GPS coordinates, the duration if it's a video, and (this is the important bit) the download URL. Every memory becomes a row in our database with a "pending" status.
2. We download each memory from Snapchat's servers
For every row we created, our worker fires a GET request at the download URL Snapchat gave us. If Snapchat responds with a 200 and the bytes of your file, great. If we get a 500 or a timeout, we retry with exponential backoff (2s, 4s, 8s) before giving up. Sometimes the URL points to a nested ZIP that contains a base media file plus an overlay PNG, so we unpack that too. We also sniff the magic bytes of whatever comes back so we can tell a JPEG from a PNG from an MP4 even when the response has no file extension.
This is the step that has stopped working. With no URL in the JSON, there's nothing to request. We can't guess the URL because it includes a signed token tied to your account and an expiry, which only Snapchat's systems can generate.
3. We rebuild your memories
Once we have the raw bits, we put each memory back together. Snapchat stores your captions, drawings, and stickers as separate PNG files with transparent backgrounds. We composite the overlay on top of the base photo or video so what you see is what you originally posted. Then we look at the date from the JSON and stamp it back into the file's EXIF metadata, so when you drop these into Apple Photos or Google Photos they show up on the right day instead of all bunching up on "today." Sameer wrote about that whole nightmare in more detail in his post on fixing Snapchat exports if you want the full version.
4. We hand the finished files back to you
After the heavy lifting is done, you get a gallery to browse, filter, and pick from. You decide whether to download a ZIP, send it to Google Drive, or push it to Dropbox. Your raw files are encrypted at rest and wiped from our servers after you grab them.
Every single one of those four stages depends on stage 2 succeeding. And stage 2 needs a working download URL.
Why This Affects Every Tool, Not Just Us
I want to be careful here, because there are a few small open source scripts on GitHub that do similar work, and a handful of paid alternatives. People reasonably ask: "Well, can't you just do what they do?"
The honest answer is that none of us have a separate, secret way to talk to Snapchat's servers. We all read the same JSON, follow the same URLs, and receive the same files. Snapchat's own official download interface, the memories_history.html page they hand you with the export, is the simplest possible client: it's just a list of links straight from the same JSON. When those links aren't there, that page sits empty too. So whatever is going on, it isn't something you can fix by switching tools.
It's entirely possible Snapchat is in the middle of changing the format and will reintroduce download access in a different shape. It's also possible this is a regression that'll get rolled back. We'll keep an eye on each new export that comes in.
What We're Doing About It
Here's where we landed for now.
New signups and payments are paused
If you've been on the site today, you've probably already noticed the banner at the top and the "new signups paused" message on the registration page. The reason is simple: we don't want anyone paying us seven dollars for a service we can't deliver on right now. So we've turned off new account creation and the checkout flow until the export situation changes.
Existing accounts still work
If you already have an account, you can still sign in. If your export was generated before this change and still contains the download links, our pipeline will process it normally. You'll find out pretty quickly when you upload: if we can't find any download URLs in your JSON, the job will fail with a clear message rather than charging you anything new.
We'll post updates as we learn more
We're actively requesting fresh exports (both ours and from friends who've agreed to share theirs for testing) to see if the behavior changes. The moment we see download links return, or a new mechanism appears that we can plug into, I'll post about it here on the blog and lift the pause.
What You Can Do Right Now
A few practical suggestions, depending on where you are in this process.
If you haven't requested your export yet
Hold off for a bit, or at least don't delete anything from Snapchat after you receive your ZIP. Open the memories_history.html file in a browser. If you see clickable download links, you got the older format and you're in good shape. If the page looks empty, your export is in the new format and you'll want to wait to see how things shake out.
If you have an older export sitting on your hard drive
Hang onto it. If it's the version with working URLs, it's genuinely valuable right now. You can still run it through SnapSavior if you have an existing account, and you can also work through it with any of the open source scripts out there.
If you have memories you really care about, open the app and save them manually
I know this isn't ideal at scale, but if there are specific memories you don't want to lose (the ones from a trip, or a graduation, or someone who isn't around anymore), you can still save them straight out of the Snapchat app to your camera roll. It's slow, but it works without relying on the export pipeline at all.
A Personal Note
Sameer and I built SnapSavior because we'd both lived through how painful the Snapchat export was and felt strongly that people shouldn't have to pick between a weekend of Python scripts and losing a decade of their life. It's genuinely strange to be in a position where the very thing we built around has shifted under our feet.
I'd rather be transparent about what's happening than quietly take orders we can't fulfill. If you've already paid and your export is in the new format, please email us at support@snapsavior.com and we'll make sure you're taken care of.
Thanks for reading, and thanks for being patient with us while we figure out the next move. As soon as something changes on Snapchat's end, you'll hear it here first.
Questions or an export you want us to look at?
We'd love to hear from you. Email us at support@snapsavior.com and we'll get back to you as soon as we can.
Back to the Blog