Mastodon Fediverse Archive 2026: 5 Ways to Save Posts, Media & Feeds
Mastodon and the wider Fediverse crossed a tipping point in 2026. Mastodon.social alone now serves more than 3.3 million monthly active users with 183 million published statuses; specialized instances like fosstodon.org, hachyderm.io, and mastodon.online add another 300,000 between them. Whether you are a journalist tracking a breaking story, a researcher building a longitudinal dataset, or a content creator repurposing your own posts for a long-form article, you need a reliable way to archive Mastodon content before an instance shuts down or a moderator deletes a thread.
The Fediverse runs on ActivityPub -- the same protocol that powers Mastodon, Misskey, Pleroma, Akkoma, Ghost, PeerTube, and Pixelfed. That shared foundation makes ActivityPub-based archiving easier than scraping any proprietary platform, because every node exposes compatible public APIs. This guide covers five proven methods for archiving Mastodon posts, media, and entire instance feeds in 2026, from bookmarks to full federation scraping.
TL;DR. Use Mastodon built-in bookmarks for casual saves. Use the Mastodon REST API for programmatic access without authentication. Use ThreadGrab for cross-platform archiving (Mastodon + X + Bluesky in one interface). Use toot CLI for scripted terminal workflows. Use Mastodon-CLI for heavy bulk exports and instance-level backups.
Why Mastodon Archiving Matters in 2026
Three trends make Mastodon archiving uniquely urgent this year. First, the Fediverse's population has roughly tripled since the 2022 Twitter exodus, with single instances regularly hosting 60k-300k users and millions of public posts. Second, instances can disappear overnight: a volunteer moderator gets burned out, hosting bills go unpaid, or a single DMCA complaint triggers a server shutdown, taking every public post with it. Third, ActivityPub's open design means there is no API key, no paywall, and no developer registration needed for read access on public content -- any tool that can speak HTTP can archive the Fediverse.
Unlike X, which restricts API access to paid tiers, and unlike Instagram or TikTok, which lock read endpoints behind approved-app gating, ActivityPub servers publish their entire public timeline over free HTTP. You do not need to register an app, you do not need to subscribe, and you do not need to pay anybody. This makes the Fediverse the most archivable public conversation network in 2026.
Method 1: Mastodon Built-in Bookmarks -- The Zero-Effort Save
Mastodon Native Bookmarks
Available in every Mastodon app (web, iOS, Android, third-party clients) since Mastodon 4.0 (2023).
Pros: Zero setup, private, searchable within your account, works on every official app.
Cons: No export through the web UI, bookmarks live and die with your account, no batch operations, no media attached.
Mastodon introduced bookmarks in version 4.0 (November 2023), and they work like every other social bookmark you have used. Click the bookmark icon on any post, and it is saved to a private list visible only to you. Bookmarks are searchable in the web UI and the official mobile apps, and they sync between devices if you log into the same account.
Bookmarks are perfect for casual use -- you spot an interesting thread on your home feed, bookmark it, and come back to read it later. But they have a hard ceiling: there is no export button. If you want to migrate, share, or analyze your bookmark collection you need either the API (Method 2) or a third-party tool (Methods 3-5).
When to use built-in bookmarks
- You save posts occasionally and only re-read them inside Mastodon.
- You use Mastodon on multiple devices and want synchronized reading lists.
- You do not need the saved content outside of Mastodon, and you trust your instance's long-term reliability.
Method 2: Mastodon REST API -- The Open, No-Auth Approach
Mastodon Public API (v1 + v2)
Base URL: https://<instance>/api/v1/ and .../api/v2/ -- read endpoints require no authentication.
Pros: Completely free, no app registration, well-documented at docs.joinmastodon.org, works with any HTTP client.
Cons: Rate-limited per IP (300 requests per 5 minutes on most instances), requires familiarity with ActivityPub vocabulary, media binaries need separate fetches.
Every Mastodon instance exposes a REST API that closely mirrors the Mastodon web UI. You can fetch public timelines, individual statuses, hashtag feeds, search results, and instance directory listings -- all with simple HTTP GET requests and no login. The API surface is stable across instances because every server implements the same Mastodon code.
# Fetch the local timeline of any Mastodon instance
curl -s "https://fosstodon.org/api/v1/timelines/public?limit=3" \
| jq '[.[] | {user: .account.username, content: .content[0:120]}]'
# Fetch a specific status by numeric ID
curl -s "https://mastodon.social/api/v1/statuses/113305367338692164" \
| jq '{id: .id, user: .account.username, content: .content[0:200]}'
# Search across the local index of any instance
curl -s "https://mastodon.social/api/v2/search?q=ActivityPub+archiving&limit=10" \
| jq '.statuses[] | {user: .username, content: .content[0:120]}'
The key concept in the Mastodon data model is the numeric ID (a 64-bit integer, often rendered as a Snowflake). Every status, account, and media attachment has a stable ID. Once you have a status URL you can extract the instance and the ID and fetch the same post from any tool that speaks the REST API. Unlike ActivityPub's signed activities, the REST API is a simpler JSON-only surface meant for client apps.
Rate limits are enforced per IP and per access token, with most instances defaulting to 300 requests per 5-minute window for unauthenticated traffic. For personal archiving, a daily cron job stays well within the limit. For large-scale collection, you need an access token (sign in once, save the token) or a federation crawling tool.
When to use the Mastodon REST API
- You are comfortable with curl or a scripting language like Python or Node.js.
- You want to pull JSON for downstream analysis (LLM ingestion, dataset construction, content migration).
- You only need public content, and you do not mind skipping media or login-gated posts.
Method 3: ThreadGrab -- Cross-Platform Mastodon + X + Bluesky Archiving
ThreadGrab
Website: threadgrab.com -- free, no account needed, no app registration.
Pros: Single interface for Mastodon AND X AND Bluesky archiving, free public API, no authentication required for read calls, returns normalized JSON or Markdown.
Cons: Requires basic command-line comfort, does not perform full federation firehose scraping (use Mastodon-CLI for that).
ThreadGrab was built to solve a stubborn problem in social content: every platform has its own API, its own authentication model, its own rate limits, and its own data vocabulary. Mastodon's REST API is JSON, X's API is JSON, but the field names, pagination conventions, and entity shapes are all different. ThreadGrab normalizes them all into one response shape, so the same script that archives an X thread can archive a Mastodon toot without modification.
# Archive any Mastodon account through ThreadGrab (no login required)
curl -s "https://threadgrab.com/api/mastodon/account/mastodon.social/mastodon" \
| jq '.[:3] | .[] | {user: .user, text: .text[0:120], url: .url}'
# Save Mastodon posts as Markdown for an LLM-friendly archive
curl -s "https://threadgrab.com/api/mastodon/account/mastodon.social/mastodon" \
| jq -r '.[] | "## @\(.user)\n\(.text)\n---\n"' \
> mastodon-archive-$(date +%Y-%m-%d).md
# Search posts across the Fediverse by keyword
curl -s "https://threadgrab.com/api/mastodon/search?q=ActivityPub&instance=fosstodon.org&limit=10" \
| jq '.posts[] | {user: .user, text: .text[0:100]}'
Because every Mastodon server implements the same REST endpoints, ThreadGrab can ask you which instance you want to query and route the request automatically. You do not need to learn the difference between mastodon.social's deployment and fosstodon.org's deployment -- they expose the same API surface, so ThreadGrab treats them identically.
The output is clean JSON you can transform into any format: Markdown for blog posts and LLM context, CSV for spreadsheet analysis, plain text for search indexing. Mastodon posts include the original URL, the author's handle (with their instance, e.g. @[email protected]), and a normalized timestamp that you can sort against other platforms' content.
When to use ThreadGrab
- You archive content from Mastodon, X, and Bluesky and want one tool that speaks all three.
- You need clean Markdown output for LLM training, RAG pipelines, or personal knowledge bases.
- You do not want to manage authentication tokens per instance.
Method 4: toot CLI -- The Terminal Power User's Toolkit
toot (CLI for Mastodon)
pip install toot -- the most popular third-party Mastodon CLI, written in Python.
Pros: Full feature parity with the web UI, login is one command, designed for scripting, works with any instance.
Cons: Requires you to register a Mastodon app (one click in settings), adds a Python dependency, less ergonomic for bulk exports.
toot is the de facto command-line interface for Mastodon. It exposes the full read-and-write API in a friendly shell: toot post publishes a status, toot timeline prints your home timeline, toot search runs a keyword query. For archivers, the toot bookmark, toot whois, and toot search commands are particularly useful because they let you triage and capture content without leaving the terminal.
# Install and log in (run once)
pip install toot
toot login --instance fosstodon.org
# A browser window opens; copy the auth code back; toot stores it locally
# Search and save the first 5 results
toot search "ActivityPub archive 2026" --limit 5 \
| tee mastodon-search-2026-08-01.txt
# List your bookmarks programmatically (great for backfilling an archive)
toot bookmarks --limit 20 | tee my-bookmarks.txt
# Inspect any user -- followers, bio, post count
toot whois --user @[email protected] | head -40
toot handles login token storage for you, so you only need to authenticate once per instance per device. It is a brilliant companion for a shell pipeline: pipe toot search into jq, into tee, and you have a daily archive script in 4 lines.
When to use toot CLI
- You live in a terminal and want Mastodon access without a browser tab.
- You want to authenticate once and use the same token for posting, bookmarking, and reading.
- You are building a shell-based archive pipeline (cron, bash, fish, zsh).
Method 5: Mastodon-CLI -- Bulk Archive and Instance-Level Exports
Mastodon-CLI + rake tasks (admin tools)
npm install -g mastodon-cli for non-admins, or RAILS_ENV=production tootctl media backfill for admins.
Pros: Bulk operations, supports hundreds of thousands of posts per session, captures media binaries, includes admin backup for entire instances.
Cons: Heavier setup than other methods, Mastodon-CLI is less actively maintained than toot, instance-level backups require admin access.
When you need to archive thousands of posts -- or an entire instance's worth of content -- you reach for Mastodon-CLI or the official tootctl rake tasks. Mastodon-CLI is a Node.js tool that provides batch-friendly variants of the common REST endpoints, with retry logic and resume support for long-running exports.
# Install Mastodon-CLI globally
npm install -g mastodon-cli
# Log in once (env-based, safe for cron)
export MASTODON_TOKEN=""
export MASTODON_INSTANCE="https://fosstodon.org"
# Archive an entire user account as JSON
mastodon-cli archive @[email protected] --format json \
--output gargron-archive.json
# Save every post that mentions a hashtag as Markdown
mastodon-cli hashtag "ActivityPub" --format markdown --limit 200 \
> fediverse-activitypub-md-archive.txt
# For instance admins: dump everything (statuses + media + DB)
tootctl media backfill --concurrency 20
tootctl backup --path /var/backups/mastodon/
For non-admin users, Mastodon-CLI's sweet spot is hashtag and account-level bulk grabs -- it can pull thousands of posts in a single session, with built-in retry on rate limits and progress reporting. For admins, the bundled tootctl rake tasks are the canonical way to back up an instance before a server migration or shutdown.
When to use Mastodon-CLI / tootctl
- You need to archive more than a single day's worth of posts from a user or hashtag.
- You are running an instance migration and need a server-wide backup.
- You want to download media binaries, not just text content.
Side-by-Side Comparison
| Feature | Mastodon Bookmarks | Mastodon REST API | ThreadGrab | toot CLI | Mastodon-CLI |
|---|---|---|---|---|---|
| Setup time | 0 seconds | 2 minutes (curl) | 2 minutes (curl) | 5 minutes (pip install + login) | 5 minutes (npm install + token) |
| Technical skill | None | Low | Low | Medium | Medium |
| Auth required | Yes (logged in) | No | No | Yes (one app registration) | Yes (access token) |
| Export capability | No | Yes (JSON) | Yes (JSON / MD) | Yes (plain text) | Yes (JSON / MD / DB dump) |
| Real-time streaming | No | Yes (WebSocket, v4.3+) | No | Yes (toot stream) | No |
| Supports X / Bluesky too | No | No | Yes | No | No |
| Bulk / batch | Manual only | Scriptable | Scriptable | Scriptable | Scriptable with resume |
| Markdown output | No | Via jq conversion | Native support | Via piping | Native support |
| Captures media binaries | Reference only | Yes (separate URLs) | Yes (URLs included) | Yes (download URLs) | Yes (writes files) |
| Best for | Casual readers | Scripting enthusiasts | Cross-platform users | Terminal users | Bulk archivists & admins |
Building a Complete Mastodon Archiving Pipeline
Here is how a content creator might combine these methods into a daily Mastodon archiving workflow that also captures X and Bluesky:
#!/bin/bash
# Daily Fediverse + X + Bluesky archiving pipeline (cron at 7 AM)
# Combines ThreadGrab API for cross-platform pulls + file-based storage
MASTODON_INSTANCE="fosstodon.org"
ACCOUNTS=("[email protected]" "[email protected]" "[email protected]")
OUTPUT_DIR="$HOME/fediverse-archive/$(date +%Y/%m)"
mkdir -p "$OUTPUT_DIR"
for acct in "${ACCOUNTS[@]}"; do
INSTANCE="${acct#*@}.${acct##*.}"
HANDLE="${acct%@*}"
curl -s "https://threadgrab.com/api/mastodon/account/${INSTANCE#*.}/${HANDLE}" \
| jq -r '.[] | "### @\(.user)\n\(.text)\n---\n"' \
> "$OUTPUT_DIR/mastodon-$HANDLE.md"
echo "Saved Mastodon $acct: $(wc -l < "$OUTPUT_DIR/mastodon-$HANDLE.md") lines"
done
echo "Fediverse archive complete for $(date +%Y-%m-%d)"
This pipeline runs daily via cron, organizes archives by year and month, and uses ThreadGrab because the same script can also archive Bluesky handles and X profiles without modification -- only the URL changes. The journalist can then feed the Markdown archive to an LLM for summarization, search, or trend detection across the Fediverse.
Pro tip. For maximum flexibility, combine ThreadGrab for cross-platform reads, the Mastodon REST API for one-off investigation, and toot for terminal-side bookmarking during live news events. ThreadGrab handles the Fediverse + X + Bluesky normalization; the native API and CLI give you full control when you need it.
How ThreadGrab Fits Into the Fediverse Ecosystem
ThreadGrab was designed to bridge the gap between social platforms, and the Fediverse is where that bridge matters most. Mastodon's REST API is well-documented, Misskey's is similar but not identical, Pleroma's is older and uses different field names. Without normalization, a researcher who wants to archive posts from all three needs to maintain three sets of code.
ThreadGrab abstracts those differences away. The same endpoint that fetches a Mastodon toot from fosstodon.org can fetch a Misskey post from a Japanese instance or a Bluesky post from an AT Protocol user -- all because ThreadGrab normalizes the response format on the way out. For the average creator who reads X for breaking news, Bluesky for tech discourse, and the Fediverse for community discussion, ThreadGrab is the single archiving entry point that keeps everything consistent.
Archive Mastodon toots, X threads, and Bluesky posts side by side -- no account, no API key, no setup.
Try ThreadGrab -- Free Social Media ArchiverFAQ
Yes. Mastodon has had native bookmarks since version 4.0 (late 2023). They are private and searchable within your account, but unlike Bluesky you cannot export them through the web UI -- you need an API call (Method 2) or a third-party tool (Methods 3-5) to retrieve them as structured data.
Yes. The Mastodon REST API is open and unauthenticated for all public reads. You can fetch timelines, individual statuses, and search results with simple HTTP GET requests to endpoints like https://mastodon.social/api/v1/timelines/public or https://mastodon.social/api/v2/search. Rate limits are about 300 requests per 5-minute window per IP.
Yes. ThreadGrab routes Mastodon requests through the same open REST API every Mastodon instance implements, so you can archive posts from mastodon.social, fosstodon.org, hachyderm.io, or any other instance through one endpoint. The output is normalized JSON or Markdown that matches what ThreadGrab returns for X and Bluesky.
toot is the most popular third-party command-line Mastodon client, installable with pip install toot. It supports posting, reading, searching, bookmarking, and following from any terminal. Its toot search and toot bookmarks commands are particularly useful for scripted Fediverse archiving.
Only if you are the instance admin: Mastodon ships official rake tasks (tootctl media backfill, tootctl backup) that dump every status, media file, and database row into a tar archive. Non-admins can use Mastodon-CLI plus the public REST API to scrape public content at scale, but private posts and DMs cannot be archived without admin access.
ThreadGrab is the most ergonomic for LLM workflows because it outputs clean Markdown or normalized JSON directly. The raw Mastodon REST API and the atproto SDK both require additional processing to convert records to LLM-friendly formats. toot CLI is great if you want authenticated reads (your bookmarks, your DMs); Mastodon-CLI is the right choice for high-volume exports.
Choose Your Method and Start Archiving
The Fediverse's open architecture makes it the most archivable social network in 2026. Whether you use built-in bookmarks for casual reading, the REST API for lightweight scripting, ThreadGrab for cross-platform archiving, toot CLI for terminal-native workflows, or Mastodon-CLI for bulk exports and instance backups, there is a method that fits your workflow.
The key insight is that you do not have to pick just one. Bookmark interesting posts during the day, run ThreadGrab nightly for profile archives across the Fediverse and X, use toot CLI for authenticated reads during news events, and keep Mastodon-CLI ready for the day you decide to back up an entire instance. The tools are free, open, and designed to work together. Start with ThreadGrab for the fastest path to a working cross-platform archiving pipeline.