Your saved posts are only links in your export
The saved-posts list in your Instagram export is a list of references — link, timestamp, account — not a gallery of the posts themselves. What the record contains, what HTML adds that JSON drops, and when the link breaks.
There is a recurring, quietly urgent search: how do I see all the posts I saved on
Instagram. The urgency is real — the in-app saved collection is a private shelf people
fill for years, and some apps and services have appeared around exactly that need. The
answer this post gives is simpler than any tool: the list is already in the export you
can request for free, it has always been in the saved area, and understanding what it
contains takes about a minute — because what it contains is disappointingly small. A
save, in the machine-readable export, is a link. A title, a URL, a timestamp. Not
the post.
That is the honest shape of one of the archive's most sought-after folders, and it
deserves the careful treatment this series gives everything: what the record actually
holds, why the format you picked changes what you see, what happens when the linked
post no longer exists, and what the shelf never had any way of containing.
Yes, your full saved list is in the export — saved_posts.json (withsaved/saved_music.json beside it), and the app reads both. But each entry is a
reference: the link and timestamp of what you saved, not the media, not a thumbnail,
and in JSON not even the caption. Request the HTML format and saved posts carry their
captions — the one folder where HTML is genuinely richer. And a saved link to a post
that has since been deleted is a link to nothing: your shelf remembers the address, not
the building.
- 1minwhat one saved record contains (four fields, honestly).
- 4minwhy format choice changes this folder, and what "link rot" does to it.
- ongoing — where saves surface in the app, and the two lists that never exist.
What one save looks like in the file
Under the hood, saved posts arrive as a generic activity record: the parser walkssaved_posts.json, reads each entry's map fields, and produces four things — avalue (the label or link the record carries), an href (the URL, when the record
has one), a timestamp (when you saved it), and a title (often the post's address
itself).1 That is the whole object. There is no caption field in the JSON
shape, no media reference the parser can rely on, no like count, no comment, and no
thumbnail. If you open the raw file yourself you will see the same thing in its
native form: a small map per entry saying this URL, at that time.
The music shelf is its own file — saved/saved_music.json — and it is the richer
sibling: track and artist details survive there, which is why the app's Features list
advertises "posts you saved plus music tracks you bookmarked, with artist info and
dates" as two data sources rather than one.2 A save of a song is a different
record than a save of a post, and the export treats them accordingly.
Notice what kind of list this makes yours: a collection of references, not a set of
actions you took at someone. The app's own taxonomy marks this distinction
deliberately — saved posts and saved music sit in the group labelled "collected," next
to likes and comments which are interactions you directed at people's content.3
The shelf is yours in the private sense: it recorded what you kept, not what you said.
Why the format you picked changes this folder
The request post's format rule has exactly one exception, and this is it. In JSON —
the complete, machine-readable record — a saved post is the reference described above:
link and time, no caption. In HTML — the human-readable rendering — saved posts
carry their captions. The same shelf, two depths: HTML shows you what the post
said; JSON shows you where it lived.4
Which makes the choice depend on what you are saving the archive for:
- Rebuilding the shelf as you remember it — captions, context, the reading you
were doing — favours HTML for this folder, at the cost of the structured detail
everywhere else in the export. - Counting, sorting, diffing two exports, or feeding any tool favours JSON, and
the caption is the price.
- Both is available the way everything in this series recommends: two requests,
two formats, one archive each.
There is a quiet corollary. If your export arrived as JSON and you are staring at a
wall of bare links wondering whether the captions were dropped by accident — they were
not; that is the shape of the raw record. And if you arrive at the opposite
conclusion, that the HTML shelf looks like the "real" one, remember it is a rendering:
the structure that makes saves countable, comparable and searchable lives in the JSON
file that looks emptier. Neither format is the complete shelf; they are complete in
different directions.
When the link breaks
A reference is only as durable as its target, and the saved list is where link rot is
most personal. Three ways your shelf loses buildings while keeping every address:
- The post was deleted. You saved it; the author later removed it. Your record
still points at the old address — and the address now resolves to nothing. The
eight-things post's first entry is exactly this mechanism operating on the other
side: a deletion before the snapshot takes the content everywhere, including out of
every saved list pointing at it. Your export will faithfully contain the link to a
post that no longer exists. - The account changed. A renamed account moves its posts' addresses; a
deactivated or removed account takes the whole shelf section with it. The record
does not update itself — it was written when the save happened. - The save predates your date range. A request bounded to a window returns the
saves inside it. Saves outside the window are absent from that export, read like
"nothing happened there," and come back only when the request covers them.
None of this corrupts the file. The record is doing its job — remembering where
something was — and the world underneath it moved. The honest reading of a saved list
is therefore a list of intentions to revisit, some of which have already outlived
their targets, and no export can tell you in advance which.
What the saved shelf never held
Two absences frame this folder better than any feature description:
- Nobody else's saves, anywhere, ever. Your saved posts are invisible to other
accounts — the shelf has no audience — and by the same custody wall, every other
person's saves are invisible to you and absent from your archive. There is no
"who saved your posts" file, at any scale, in any format, for the same reason there
is no profile-views file: it would be other people's private collection, and your
request only reaches your own records. The five-questions and eight-things posts
own the general case; this folder is its most common specific one, because the
thing I want is "who saved my post" is the natural follow-up to the thing I got is
"my saved posts." - The posts themselves, as content. You get the reference; you do not get a
personal copy of everyone else's media to redistribute. What media your archive
contains is your own — profile and post media, DM media you were part of — which is
why the shelf reads as links rather than as a private mirror of other people's
work.5 The distinction matters beyond bookkeeping: a list of addresses you
collected is yours to keep forever; a folder of other people's files would be a
different product with different problems, and it is not the one you requested.
Where saves surface in the app
Once the records are parsed, the shelf shows up in four places, each using a different
slice of the same four fields:
- The Activity view carries saved posts and saved music as searchable sections —
the music one searchable by artist or track, because its record carries those
details while the post record does not. - The Accounts view turns saves into a filter: *saved posts — accounts whose posts
you saved*. That works by attributing each reference's link back to the account it
points at, which is thehreffield earning its keep.6 - Compare shows a saved-posts metric card on each side and a row in the changes
table, so two exports taken months apart show the shelf growing or shrinking — one
of the few metrics where growth is unambiguously just growth. - The heatmap plots save events over time as their own event kind, alongside
saved-music events, so the collecting habit itself gets a shape in time.
Every one of those views is reading the same links. None of them can show you the
post behind a dead one — and none pretends to.
How do I see every post I have saved on Instagram?
Request your export (HTML if you want captions alongside the links), opensaved_posts.json — or load the archive in this app and use the Activity view's
saved section. The list is complete for the date range you requested; widen the range
if the shelf looks younger than you remember.
Why are my saved posts just links in the export?
Because a save is recorded as a reference — the address of what you kept and when you
kept it — not as a copy of the content. The raw JSON record carries a value, a link, a
timestamp and a title; captions appear only in the HTML rendering, and the media
belongs to the original post.
The saved list shows posts that no longer exist. Is the export broken?
No — the record remembers the address, and the post at that address was deleted after
you saved it. Deleted content leaves every view of it behind (see the eight-things
post); a saved link is one of those views. The link's presence proves the save; its
deadness proves only that the target did not outlive it.
Can I tell who saved my posts from my export?
No. Other accounts' saves live in their records, and no export reaches them — at any
scale, in any format. Your shelf is private to you; everyone else's shelf is private
to them. This is the same custody wall that hides profile views and who-blocked-you.
Is saved music in the same file as saved posts?
No. Posts are in saved_posts.json; music is in saved/saved_music.json, and its
records carry track and artist details that post records lack — which is why the app
can search one by artist and only list the other. Same folder, different shelves,
different field shapes.
Does a date range cut my saved list silently?
The saved records inside your requested window arrive; the ones outside it do not, and
an absent shelf reads as an empty one until you widen the range. The request post's
"all time" section covers the trap generally: a filtered request returns what the
filter allowed, not what exists.
Questions this comes up
The activity post for the full map of which file each action lives in; the request
post for choosing the format that gives this folder captions; the eight-things post
for why some links on your shelf will never open again.
1: packages/shared/src/parsers/activity.ts — saved_posts.json is read via
the generic record extractor: string_map_data entries resolve to value, href,timestamp and title, with the timestamp preferring an explicit time/date field.
The HTML variant saved_posts.html is collected the same way after conversion.
2: The Features view's "Saves & Music" row — posts saved plus bookmarked
music with artist info and dates — as backed by saved_posts.json andsaved/saved_music.json.
3: packages/shared/src/analytics/activity-taxonomy.ts — savedPost
("Posts you saved") and savedMusic ("Music you saved") are classified yours: true
in group collected, separate from interaction kinds; the people-mix and
classification code keeps collected items out of "who you reached" totals.
4: This site's request guide, format section: saved posts carry captions in
HTML and lose them in JSON — the single folder where the human-readable format is
richer than the raw record.
5: The archive's media is organised around your own content (profile and post
media, media from your message threads); the saved shelf parses to reference records
without a media bucket behind it — see the content and activity posts for the
file-by-file split.
6: The Accounts view's saved-posts filter matches accounts whose parsed
interactions include savedPosts, attributing each reference record to the account
its link points to.
Footnotes
- records
- features
- taxonomy
- formats
- media
- accounts