EN PT ID

Mastodon Fediverse Archive 2026: 5 Ways to Save Posts, Media & Feeds

August 1, 2026 · 11 min read · by ThreadGrab

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

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

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

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

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

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 Archiver

FAQ

Does Mastodon have built-in bookmarking like Bluesky?

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.

Can I use the ActivityPub API to save Mastodon posts for free?

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.

Does ThreadGrab support Mastodon archiving?

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.

What is the toot CLI?

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.

Can I archive an entire Mastodon instance locally?

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.

Which Mastodon archiving method is best for LLM data preparation?

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.