Your search history is a shadow diary
Why the one list nobody else ever sees reads more honestly than your feed, what psychology says about the private self, and how a local-first archive shows it without judging it.
A search happens before you know what you want from it, with no audience
watching - which is why psychologists treat unobserved behaviour as the closest
thing to an honest signal, and why the search list in your export reads like a
diary you never meant to keep. The archive can show you that diary as counts,
times and terms; it deliberately never tells you what any of it meant.
Every post is a performance. Stories are performances. Even likes are
half-performances - deliberate taps you chose to leave where someone could see
them. The search bar is the exception in the whole platform: you type a name, a
symptom, a job title, a city, an ex, before you have decided anything, and
nobody is watching you decide. Then it lands in your export anyway, as a row
with a term and a timestamp.
That asymmetry - performed self versus unperformed self - is one of the oldest
ideas in social psychology, and it is the reason this one list is worth reading
slower than the rest.
The two selves, and which one your export holds
Goffman's classic framing is that social life is staged: we manage the
impression we give others, and the backstage version of us is the one that
never makes the show. Online, that split got sharper. Research on the "online
disinhibition" of unobserved behaviour keeps finding the same asymmetry: what
people do when they believe nobody is measuring them diverges from what they do
when measurement is visible.1
Your export holds both versions side by side:
- The performed self - posts, stories, likes, comments, follows: everything
you did knowing it could be seen.
- The unperformed self - searches, login times, watch history: everything
you did without an audience in mind.
The archive itself treats them as different categories. Activity kinds are
tagged by intent - made, reacted, consumed, searched - so "searches you ran"
never shares a bucket with "stories you shared".2 That is not a UI
convenience; it is the same performed/unperformed split a psychologist would
draw, expressed in a parser.
Why the unperformed list reads as more honest
Three properties do the work, and all three are structural rather than
sentimental:
- Pre-decision timing. A search sits before action - looking up a person
before messaging them, a hashtag before following it, a symptom before
Googling it elsewhere. It records consideration, not conclusion. Everything
else in the archive is an outcome. - No audience, no curation. Nobody prunes a search list for taste. The
embarrassing and the profound get identical formatting, which is exactly why
it ages differently than your feed. You cannot perform yourself in a box
nobody knows you are standing in. - Repetition without cost. Looking up the same person thirty times across
four years would be strange to publish and is unremarkable to do. Repetition
therefore tracks attention rather than performance - the property a journal
wants and a feed destroys.
The healthy reading is weather, not testimony: a record of what passed through,
with the file's own limits attached. An unhealthy reading treats every row as a
revealed preference carved in stone. The data supports only the first reading,
and a well-built tool should refuse to help you with the second.
What the product does - and pointedly does not - say about it
The honest constraints come first, because they bound everything above:
- Instagram only exports your most recent 100-500 searches, so the list is a
sample of a sample - counts are floors, never totals.3
- A row is four fields: term, link, timestamp, label. There is no outcome
field, no sentiment field, no "what you found" field - so nothing downstream
can honestly infer one. - Undated rows stay in totals and leave the dated views; HTML exports lose the
four-way kind split at the source.
Within those bounds the app shows the diary flatly: the four search kinds
(people, tags, keywords, other) kept separate on purpose, per-account lookup
charts, day-hour heatmaps, filters by "has searches", and retrieval queries
like "what did I search for in 2023". What it refuses to do is add an
interpretation layer: no sentiment labels, no personality inference from query
text, no "you were anxious in 2022" tags.4 The ask-anything engine
answers questions about your inner life with an absence, not a diagnosis - the
same rule that governs everything else in the product.
Checking it against your own file
This post is made of filesystem claims, and every one is cheaply checkable:
- Unzip your export and find
logged_information/recent_searches/- count theJSON files present.
- Open one: rows with a
string_map_datatimestamp are dated; bare stringlists are not, which is why totals and heatmap cells can legitimately differ.
- If you requested HTML instead, find
search_history.htmland note themissing sibling files: the kind split is gone at the source, not hidden by
any viewer. - Compare the row count against your years on the platform. A few hundred rows
after a decade is the platform's sampling window, not your life.
If a tool cannot survive that four-step check, it should not be trusted with
the list. The derivation here stays visible, the file stays yours, and if the
two ever disagree, the file wins.
Is my search history really the most honest part of my export?
It is the part least shaped by an audience, which is a structural property, not
a claim about your character. Searches were never visible to anyone else, so
there was nothing to perform for. What it lacks - outcomes, meaning, full
history - is real too: the platform samples your most recent 100-500 entries.
Read it as the unperformed layer, with the sample cap attached.
Does this app analyse what my searches mean about me?
No. It counts them, times them, groups them by kind, and lets you filter and
search them. There is no sentiment analysis, no personality scoring and no
diagnosis of query text anywhere in the product - the same no-inference rule
applies to your searches as to your messages.
Why are my search counts so much lower than I expected?
Because the platform only lets you export your most recent 100-500 searches.
Older searches are outside the window by construction. Treat every search count
in the app - and in this post - as a floor from a sample, never a lifetime
total.
Can other people see my searches?
No - and no export can put them there either. You receive only your own
account's data. Other people's searches for you are not in your archive, in
anyone else's archive, or in any feature of this product.
Related reading
The search-history inventory post for exactly which five files feed the list and
what each of the four kinds records; the person-in-your-archive post for the
profile-lookup layer profile searches feed; and the top-fan post for the flip
side - the performed self, sorted and displayed for others.
1: Suler, J. - "The Online Disinhibition Effect," CyberPsychology
& Behavior (2004) - the distinction between online identity and unobserved
behaviour; cited here as the research frame, not as a claim this product tests.
2: packages/shared/src/analytics/activity-taxonomy.ts - ACTIVITY_KINDS
tags each kind by group: made / reacted / consumed / searched, so search kinds
never share a bucket with performed ones.
3: packages/shared/src/analytics/compare.ts - the in-product caveat:
"Instagram only lets you export your most recent 100-500 searches, so treat this
as a sample rather than a total."
4: packages/shared/src/ama/tone.ts - the refusal contract for questions
about inner life; queries about what your searches "mean" get an absence answer,
never an interpretation.
Footnotes
- disinhibition
- taxonomy
- sample
- refuse