The year your posting collapsed
Every export contains a curve — posts per month rising, plateauing, dropping off a cliff. How to read your own posting collapse from the timestamps alone, without inventing a cause the file cannot hold.
Plot every post you ever published by its timestamp and you get a shape before you get
a story: a climb, a plateau, maybe a second wind, and — for almost everyone who
requests one of these archives eventually — a cliff. The honest answer to what
happened that year is that the export cannot supply it: a posting curve records when,
not why, and no field in the file holds a motive. What it can give you is confidence
that the cliff is real — four false cliffs have to be ruled out first: deletions,
date-range cuts, timestamp misreads and format gaps — and this post is about reading
the shape without inventing a cause the file cannot hold.
It is the right question and the export cannot answer it. Not because the file is
broken, but because a posting curve is a record of when, with day-level precision
and nothing underneath it — no motive, no diagnosis, no reason field. This post is
about reading the curve honestly anyway: what it measures exactly, how to tell a real
decline from a hole that only looks like one, what neighbouring series in your own
archive can legitimately say next to it, and where the app shows you the shape. The
rule the whole post circles is short enough to hold in one hand: the archive shows
when, never why — and the why is still yours to supply, as long as you label it as
yours.
Your export can tell you, precisely, that you stopped posting — the month, often the
day, the last post before the silence and the first after it. It cannot tell you why,
and it contains no field where a why could live. What it can do is discipline the
question: rule out the impostor declines (deletions, date-range cuts, timestamps read
the wrong way, features that did not exist yet), show you what continued during the
silence (likes, watching, messaging), and hand you a curve clean enough that the
narrative you add to it is at least added to the right shape.
- 2minwhat the curve measures, and the four false cliffs to rule out first.
- 6minreading the shape next to your other series without inventing causation.
- ongoing — where the app draws it: monthly bars, heatmap, streaks, two-export deltas.
What the curve actually is
Every post in the archive carries a timestamp from the same chain the wrong-date post
maps in detail: taken_at, creation_timestamp or timestamp, per-media first,
container second. Sort those moments by month and count them, and you have the raw
material the app's Content by month chart renders — one bar per month, posts and
reels broken out — plus the posting heatmap, which compresses the same events onto
a calendar grid so a dead season reads as a patch of empty cells rather than a number.1
Precision worth stating: the timestamps are real event times to the second, which
means the curve's resolution is far finer than any story you would hang on it. You do
not learn "you posted less in 2021"; you learn the exact week the cadence changed,
which post was last before it, and — if you keep reading — whether the captions
around the boundary say anything at all. The archive is a precise witness to a
single fact.
Two structural details shape every curve before interpretation starts. Reels did not
always exist as a format, so a reel line that begins at a cliff-free wall of zeros is
recording the feature's launch, not your enthusiasm. And posts, reels and stories are
three separate buckets — the dashboard's posts count, its doughnut of posts/reels/
stories, and the heatmap's separate "published" modes all keep them apart, because a
year that looks empty on posts may be a year you lived on stories, and stories
(expired ones, at least) are mostly not in the archive at all.2 The curve
measures published, surviving, timestamped posts. Everything that sentence excludes
can carve the next hole.
One more property earns its place here because it explains most "shifted" curves
before the false-cliff list even runs: the timestamps in modern exports are read in a
defined order — per-media time first, container time inherited second — and exports
that predate the platform's mid-2015 timestamp migration carry a different floor.
The wrong-date post walks the chain field by field; the short version for this
reading is that your axis is only as trustworthy as that chain, and any curve that
looks historically impossible should be audited there first.
Four false cliffs to rule out first
Before any reading, an audit — because most frightening curves dissolve on contact
with their own file paths:
- The deletion hole. Posts removed before the request took their timestamps with
them, and their engagement too. A cliff that coincides with a known period of
heavy cleanup is your own housekeeping, not a publishing decline — the
eight-things post's first entry, wearing a curve's clothing. The tell is
circumstantial (you remember deleting), because the archive, having been asked
after the fact, cannot mark the gap as deletion. - The date-range cut. A request bounded to a window starts when the window
starts. Bars rising from zero at the left edge of the chart are the request's
boundary, not your career's beginning. This is the "all time" trap from the
request post, and it is the single most common false cliff in real archives. - The timestamp misread. If your curve's axis looks shifted — a career starting
in 1970, or a suspicious migration point mid-2015 — you are looking at the
timestamp chain issues the wrong-date post covers, not at your history. Fix the
read before you grieve it. - The format amputation. An export requested as HTML can arrive with structure
that JSON would have carried, and a folder that never made it into the request
shows up as absent rather than empty. When a whole stretch of the chart is missing
rather than low, check what the request actually included before reading it as
silence.
Rule out those four and whatever remains is real. A genuine decline has survived an
audit — which is exactly what makes it worth reading carefully.
Five shapes a real decline takes
Once the false cliffs are gone, the surviving curve still comes in recognisable
shapes, and naming yours before narrating it does most of the discipline for you:
- The sudden stop. Bars at full height, then nothing, inside a week or two. The
cleanest shape to date and the easiest to over-read: single-week boundaries feel
like events, and sometimes they were — but the file dates the stop, it does not
gift-wrap it as a cause. - The long fade. Cadence eroding over a year or more: weekly, then fortnightly,
then the odd stray post. Diffs this shape can absorb almost any story, which is
exactly why it needs the observation/attribution split the hardest. The honest
description is boring and true: fewer posts per month for several consecutive
months. - The seasonal dip. The same quiet stretch repeating annually — exam months, winters,
harvest periods, summers somewhere without signal. A pattern that recurs at the same
point of the calendar for several years is a rhythm, not an event, and the heatmap's
calendar grid shows recurrence at a glance where the monthly bars can hide it. - The one-year gap. A flat block between two healthy stretches, with clean edges
on both sides. Often the shape people mean when they ask the title's question — and
the one where checking the false cliffs matters most, because a gap is exactly what
a date-range cut or a deletion period also looks like. - The plateau. Not a decline at all: high, flat output for years, then a lower
flat level — a step, not a fall. Reading a plateau as a collapse mistakes a
lifestyle change for a collapse, and comparing two exports (below) is how you catch
it: the delta rows distinguish fewer posts per month from none.
Each shape is a description. The stories that fit a sudden stop differ from the
stories that fit a seasonal dip, and getting the shape right first stops your
narrative from being contradicted by your own calendar — the cheapest correction
this archive offers.
Observation and attribution are different rooms
Here is the discipline the emotional reading of a collapse curve needs. Two sentences
that look alike and are not:
- "I posted for four years, then stopped almost entirely in the autumn of 2020."
- "I stopped posting because 2020 broke me."
The first is an observation the archive proves to the day. The second is a causal
claim about interior states, and the file contains no evidence for or against it —
there is no mood field, no reason field, not even a "you were less active because"
link between your posts and your silence. The gap between the two sentences is where
every bad reading of an export happens, and it happens in both directions:
Invented drama — reading a single cause into a multi-factor fade. Curves collapse
gradually for most people: formats moved elsewhere, friends left, posting felt
different, life got louder, the app changed shape. The archive shows the composite
outcome and cannot decompose it, so any single-cause story is a summarising choice you
made, not a finding.
Invented blame — "the algorithm buried me." This one deserves special mention
because the export makes it unfalsifiable: reach and impression totals are precisely
the platform-side metrics your package does not contain (see the five-questions post),
so the archive can neither support nor refute suppression. A tool that lets you infer
it from posting volume alone would be reading a marketing theory into a bar chart.
Invented self-diagnosis — retrofitting a clinical story onto a quiet stretch. You
may be right about your own past; you may also be narrating from the present. The
archive will happily host whichever story you bring, because it does not check.
The honest sentence pattern is embarrassingly simple and worth practising: state the
observation with its date, then attribute in your own voice — "the file shows I
stopped in October; I think it was because…" The archive keeps the first half
admissible; you own the second half out loud. Write both halves in that order and you
can use every precise thing this file knows — the week, the last post, the neighbouring
series — without ever letting a measurement quietly graduate into a motive. That
split is not a limitation of this
tool or of any tool. It is the difference between a record and a memory, and the
person-in-your-archive post makes the same argument at the level of a whole life.
What continued during the silence
The most informative reading of a collapse is not the posting series alone — it is
posting set beside the series that did not stop. Your archive holds, side by side,
several independent rhythms: posts published, likes given, comments left, searches
run, messages exchanged, reels watched. The heatmap plots all of them as switchable
event kinds, and the honest observations that unlocks are genuinely valuable precisely
because they are co-occurrences, not causes:
- Posting stopped but liking continued — the audience habit outlived the creator
habit. A fact about which side of the camera you moved to.
- Posting stopped and watching continued — consumption without publication, visible
as watch-history and likes in the same months your bars went quiet.
- Posting, liking and messaging all stopped together — a full departure rather
than a format change, distinguishable from a mere publishing shift by exactly this
three-series check. - Posting stopped but messaging continued — the private channel persisted while
the public one closed, which is a different shape of leaving entirely.
There is a sixth observation the pairings support, and it is the gentlest: some silences
have nothing beside them. Likes stopped the month posting did, searches thinned,
messaging went quiet — and the whole account exhaled at once. Reading that shape
honestly means resisting both dramatisation and minimisation: the file shows a
complete pause across every recorded channel, no more and no less. What a full pause
meant is, again, the part you own — but you will be owning it with better evidence
than the posting bar alone ever gave you.
None of these is a cause. All of them are observations the file supports, and together
they narrow the space of stories that fit the data. That is what reading this archive
can honestly do: not tell you why you changed, but tell you precisely how the change
looked from outside, across every channel it touched — which is usually more than you
remembered.
Where the app draws it
Five surfaces, five cuts of the same timestamps:
- Dashboard — the posts count, the posts/reels/stories doughnut, and a sentence
when the data supports one: "You kept a N-week posting streak going." The streak
comes from posting consistency — consecutive posts measured in weeks — so it names
your densest run, not your whole history.3 - Content view — Content by month (the curve itself), the posting heatmap
(calendar form), and best posting times — the hour-of-day dimension, which the curve
by month cannot show. Its empty state is honest: "No posts with timestamps." - Compare — the curve as deltas: posts per month, longest streak (consecutive
posts within seven days of each other), average gap between posts, and the plain
posts row — so two exports taken a year apart show whether the cliff arrived, moved
or healed.4 The rhythm rows add the change itself as a fact: posts per
month, side by side, and posting consistency beside it — which turns "I think I
started posting again" into either a measurable recovery or a claim the rows do
not support. Two snapshots also date the decline's edges: the first export that
lacks a stretch and the second that still lacks it bracket the event without either
file having to explain it. - The activity heatmap's Published mode — posts, reels and stories events on one
calendar, switchable against likes, comments, saves and searches, which is the
overlay the previous section runs on. - Nostalgic snapshot and milestones — the span of years and a best year, for the
shape at the coarsest resolution: when the whole thing started and when it was
densest. The Curator's milestone cards do the same work at year granularity: the
archive's own aggregate facts about your years, stated as counts rather than
commentary — which is as close to an official reading of the curve as this tool
will produce.
Notice that none of them prints an interpretation. The app shows bars, streaks, gaps
and deltas; the sentence slot on the dashboard fills only with a count-shaped fact. A
curve, a streak length and an average gap are measurements — everything else on this
page is narrative, and the narrative comes from you.
Why does my posting chart start in the middle of my account's life?
Almost always the request's date range, not your history: a bounded export begins
where the window begins, and the bars climb out of zero at the left edge. Re-request
with all-time scope if you want the earlier curve. If the whole axis looks shifted
rather than cut, see the wrong-date post — that is the timestamp chain, not your
timeline.
I deleted a lot of posts that year. Is the collapse real?
Partly unanswerable from the file: deletions before the request remove their
timestamps too, so a cleanup period reads as silence. You know you deleted; the
archive does not record that you did. The honest reading treats that stretch as
"posts not present," distinct from the stretches where nothing was published — and
the eight-things post explains why the distinction cannot be recovered after the fact.
Can the export show that the algorithm suppressed me?
No. Reach, impressions and insight totals are platform metrics absent from the
package, so suppression is neither shown nor refutable from your archive. What you
can see is what you posted and when; what others did with it after delivery is a
different dataset that was never part of your request.
Does a gap mean I left Instagram?
It means you stopped publishing there — that much is precise. Whether you left depends
on the other series: likes, watch history, searches and messages continuing through
the gap mean you stayed as an audience. All series flat at once is a departure shape.
The archive shows the pattern; you name the event.
What counts as a streak in the app?
Consecutive posts within seven days of each other — the dashboard's N-week sentence
and Compare's "longest streak" both use that definition, with average gap between
posts alongside it. It measures cadence, not effort: a year of stories with no grid
posts will not register, because posts and stories are separate buckets everywhere in
the app.
Two exports show different months for the same last post. Which is right?
Whichever timestamp chain you read more carefully — the two exports should agree, and
when they do not it is usually format (HTML versus JSON rendering) or the timestamp
inheritance rules the wrong-date post documents. Compare the raw fields in both
files before picking a story about your posting history; the curve is only as honest
as the timestamps underneath it.
My curve has no cliff — it just stopped one month and never resumed. Is that the same reading?
Same method, simpler shape: the sudden stop dates itself to the week, the four false
cliffs still need ruling out (a stop at a date-range edge is a request artifact, not
an event), and the parallel series still decide whether it was a publishing stop or a
full departure. What changes is only the narrative load: there is no fade to explain,
one boundary to date — and the date is the entire contribution the archive makes to it.
Questions this comes up
The wrong-date post for making the axis trustworthy; the eight-things post for the
holes that mimic declines; the person-in-your-archive for the wider argument about
records versus memories; the five-questions post for the metrics a curve like this can
never carry.
1: packages/shared/src/parsers/content.ts — per-media timestamp preference
(m.creation_timestamp, m.taken_at) falling back to container timestamps, feeding
the content buckets; the Content view's monthly breakdown, posting heatmap and
best-time ranking all read those parsed timestamps.
2: The content parser returns posts, reels, stories, profile photos,
recently-deleted, watch history and DM media as separate buckets, and the dashboard's
mix chart keeps them separate — which is why a posts-only curve can miss a stories-era.
3: The dashboard's streak sentence comes from posting consistency
(consecutive posts measured in weeks); the stat cards and mix doughnut read the same
parsed buckets.
4: Compare's content metrics — posts per month, longest streak (consecutive
posts ≤7 days apart), average gap, posts delta rows — computed per export and shown
side by side, including the plain posts count row in the changes table.
Footnotes
- content
- buckets
- dashboard
- compare