A blog engine that became an archive
The first post on this site is about a photo I put on Instagram in 2012. The link still works. The photo doesn't.
That post was about one archive — mine — and one rule: media comes home. This one is about what happened when that rule was applied to every platform I could find an export for.
The roster is closed
Twenty-two sources import now, in three groups.
Social networks: Bluesky, Facebook, Instagram, Mastodon, Pixelfed, Threads, Twitter/X.
Blogs and publishing platforms: beehiiv, Blogger, Ghost, Jekyll/Hugo and any markdown folder, LiveJournal, Medium, Movable Type and TypePad, podcasts (any feed with audio), Squarespace, Substack, Tumblr, Wix, WordPress and any RSS or Atom feed.
And dead sites: the Wayback Machine, for blogs whose platform no longer exists at all.

That last group is the one I did not expect to build, and it is the reason this post exists.
What changed isn't the count
An engine with eight importers is a blog engine that can read your old blog. An engine with twenty-two, covering every social network you are likely to have posted to, is something else: it is a place to put the things you wrote on other people's websites.
So here is the claim, plainly. This is a blog. You can also use it as an archive of your social networks. Point it at an export, and what comes out the other side is a folder of JSON files and the actual image and video and audio files, on your disk, with the origin recorded as a tag and every post reachable at a permanent address.
You do not have to put any of it on the web. The import writes the files and then asks whether to rebuild and deploy; answer no and the archive stays on your disk. An archive that only you read is still an archive.
Why the exports and not the APIs
Every importer here reads a file you asked the platform for, not a live API. That was a decision, and it holds up better every year: an export is a legal right in most of the world, it does not expire, it does not get repriced, and it does not need a developer account that a policy change can revoke. The three sources that talk to a network at all — Bluesky, Tumblr, LiveJournal — do it because those networks hand a public archive to anyone who asks, no token required.
The Facebook importer is built on Meta's own "Download Your Information". The Threads one reads the same export. Instagram, Mastodon, Pixelfed, Twitter, all the same shape: a file, not a permission.
The uncomfortable arithmetic
On the reference Facebook export used to build that importer, 95 % of the posts were mirrored in from somewhere else — Twitter, Posterous, the whole crosspost era. They are recognized and skipped, with a count, because those platforms' own exports carry the originals and importing both would double your archive with worse copies.
That number stayed with me. Nineteen out of twenty things on that account were not really written there. Whatever you think you have on any one platform, a good deal of it is a copy of something you put somewhere else — and the somewhere else has usually closed.
The point, again
An archive is only yours if the files are yours. Fourteen years was long enough to watch a few landlords disappear; twenty-two importers is what it took to stop renting.
Every source, and what each export does and doesn't contain, is in docs/importing.md.
