Why your Instagram export is missing half your life
Most people open their data export, find a third of it empty, and assume something broke. Nothing broke. Here is what is actually missing, and why.
If you have downloaded your Instagram data, from Meta's own Download Your Information
tool, and opened it expecting to see your life, you have probably already hit the
wall: a folder of folders, some sections full, some sections empty, some files that
look like a page of text containing nothing that resembles data.
Nothing broke. The file is not corrupted. What you are looking at is the difference
between what you lived and what the export format chose to describe, and in some cases
between what two different export formats are able to describe at all.
This is the most common confusion we run into, so here is the whole thing in one place.
The short answer
Your data arrives in more than one format, and the formats are not equally complete.
Some sections are delivered as structured JSON. Others can arrive as HTML, which is a
rendered web page of the same underlying information, and a rendered page throws away
the structure that makes the data readable. When a section arrives as HTML, whole
categories of detail are simply not present in the file. Re-requesting that section as
JSON is the single most useful thing most people can do.
The second part of the answer: some things were never in there at all. An export is a
snapshot of what the platform currently holds about one account. It is not a backup of
your life, and it was never intended to be.
JSON and HTML are not two versions of the same file
This is where most people get stuck, so it is worth being concrete.
JSON is the raw structure: nested objects, arrays, timestamps, identifiers, field
names written for machines. If a piece of information exists about an interaction,
JSON is where it lives, including the unglamorous parts that make an archive readable
later, like the exact time of day, the count, the type, the reaction.
HTML is a human-facing view of the same information: styled tables, headings,
labelled rows. It is genuinely useful for reading. It is genuinely bad for counting,
because a page that tells you "You reacted to a post on 14 March" is not a page that
gives you a stable field you can count across a thousand interactions.
A conversion tool can turn HTML back into structured data. It cannot invent the fields
that the HTML never contained. That distinction is the whole ballgame:
A converter can recover structure from a rendered page. No converter can recover
information that was never rendered.
So if a section came to you as HTML, and something looks absent, it is not a bug in the
tool you used afterwards, and it is not something a better parser can fix. The
information was left out when the page was produced. The fix is upstream: request JSON
for that section.
This is why we tell you which format each section arrived in, and why we say out loud,
in the app, when a section came from an HTML export, instead of quietly converting it
and letting you believe you are looking at a complete record. You are entitled to know
which of your two options you actually chose, months ago, without remembering.
How to check which format you actually got
You do not need any tooling for this. Unzip the download and look at the folders.
Sections delivered as JSON contain .json files, and inside them you will find
nested structures with field names in quotation marks: arrays of objects, identifiers,
timestamps. If you open one and it is a wall of labelled keys rather than sentences,
it is the good version.
Sections delivered as HTML contain .html files. Open one in a browser. If it
looks like a tidy, readable web page, a heading and a table of things you did on a
particular date, then that section was rendered for human eyes, and it is the
incomplete one. It will read completely fine, which is exactly the trap: nothing about
an HTML section looks broken. It simply does not contain what the JSON version would
have contained.
Two practical consequences. First, a file that looks fine to read is the one most
likely to be quietly lossy. Second, if one section is HTML and another is JSON in the
same download, you did not do anything wrong. Different sections can arrive in
different formats, and it is worth knowing which of yours are which before you conclude
anything about what you are looking at.
Keep the two downloads side by side if you request a second copy. The same section
arriving in a different format is genuinely one of the more clarifying things you can
do with your own archive, because the difference between the two versions is the
invisible half of the problem.
A null is not an absence. It is a silence.
Export files are full of null, and this is where honest tools and dishonest tools
part company.
A null means the file does not say. It does not mean the event did not happen. It
does not mean you did nothing. It means the data you are holding does not contain an
answer to that question.
That distinction matters more than it sounds, because the human reaction to a blank
field is almost always "I guess I didn't do much then" — a conclusion drawn from a
gap in a file, about your own life, using a format you did not choose. Most people
never notice they made that leap.
The honest response to a null is to mark it unknown and move on. That is all a tool can
honestly do, and any tool that does anything else is inventing data about you.
Four things no export can bring back
Some absences are not fixable by re-downloading anything.
- What you deleted before you requested the file. The export describes what is held
now. If something was removed beforehand, it is not there to be handed over, in any
format. - What happened elsewhere. Conversations in a browser, calls, plans made in person,
the entire part of your life that was not on the platform. The file is not shy about
this; it just cannot help. - What belongs to other people. A message someone else deleted from their side is
not in your copy. Neither is anything a platform no longer retains. The archive is a
record from one account's point of view, not a shared record. - The meaning. Even a perfect, complete, correctly-formatted file has no opinion
about whether any of it was good. It can tell you exactly what happened and nothing
about what it meant. Any product that tells you what your data felt like is writing
fiction and putting your name on it.
What a trustworthy tool does with an incomplete file
This is the part worth holding any product to, including ours.
- Say which format you got. Not in a settings page. On the screen, next to the
data, at the moment it matters.
- Mark the gaps instead of smoothing them. A dashboard that quietly renders an
empty month as a flat line is making a claim: that nothing happened. A trustworthy
tool draws the hole. This is unfashionable and it is the correct behaviour. - Refuse to invent. No interpolating a number you do not have, no inferring a total
from partial data, no presenting an estimate in the same typeface as a measurement.
- Keep the arithmetic boring. Counts derived deterministically from your own file,
on your own machine, are checkable. Anything that involves a model guessing what
your data "means" is both less accurate and a worse privacy proposition.
Why re-downloading is worth the twenty minutes
If you are going to do one thing about this, do this: request the export again, and
select JSON for every section the interface lets you choose a format for. Give it a
few days to be prepared. Keep the first download too. Comparing the two is genuinely
interesting, and it is the closest thing to watching your own history get more complete.
Then open it with a tool that tells you the truth about its edges, which is a lower bar
than it sounds and rarer than it should be.
The files are not broken. They are partial, unevenly detailed, and limited by decisions
made by a company about what an account export is for. That is worth knowing clearly
rather than discovering at 2am, alone, in an unlabelled folder, feeling quite
reasonably that there is something wrong with you rather than something ordinary about
the format.
Questions this comes up
Why don't my own posts show like or comment counts in the export?
Because Meta never writes a post's own engagement totals — likes, comments, views — into the
archive. This is a separate absence from the fourth thing no export can bring back: S5 notes
Meta does not keep per-account "who liked your" histories; here, the totals for your own posts
simply were never put on the record either.
Does my Instagram export upload anything to LMKFR?
No. In local mode the file is read inside your browser and no byte of it is sent to
us. There is no account required to read your own archive.
Why is one of my folders empty?
Usually because that section was delivered as HTML rather than JSON, so the fields
that would have described those interactions are not in the file at all. Sometimes it
is because nothing of that type exists in the period. Both look identical from the
outside, which is why the format matters.
Can I get the missing data back by requesting the export again?
Sometimes. Re-requesting with JSON selected gives you the fields an HTML section
omitted. It cannot return anything the platform no longer holds, anything you deleted
before requesting, or anything that happened away from the platform.
Does an empty month mean I did nothing?
It means the file does not say. A null is a silence, not an absence, and the
difference is worth refusing to blur: any tool that renders a gap as a flat line is
claiming something the data cannot support.