Converts a Mastodon thread to Markdown, and downloads all contained media files.
Find a file
2026-04-25 18:18:23 +02:00
LICENSES Add REUSE licenses 2026-03-27 10:10:53 +01:00
src Remove a stray comma (thanks, Clippy!) 2026-04-25 18:16:57 +02:00
.gitignore Add REUSE licenses 2026-03-27 10:10:53 +01:00
Cargo.lock Release v0.1.2 2026-04-25 18:18:23 +02:00
Cargo.lock.license Add REUSE licenses 2026-03-27 10:10:53 +01:00
Cargo.toml Release v0.1.2 2026-04-25 18:18:23 +02:00
README.md Rename ACCESS_TOKEN to MASTODON_ACCESS_TOKEN 2026-04-17 13:28:13 +02:00

threadcat 🧶🐱

Takes the URL to a Mastodon toot, and converts the thread (all children by the same author) to a Markdown blogpost. It also downloads all included media files, and their alt texts.

Installation

You'll need Rust's cargo command. Then run:

cargo install threadcat

Usage

$ threadcat https://example.com/@user/12345678987654321
Fetching thread...
Found 13 toots.
Writing index.md...
Downloading 4fccc6671b254665.jpg...
Downloading 34dbf96666113346.jpg...
Downloading 8599bd70f4d23ba6.jpg...
Completed in 1.09 s! 🧶🐱

API limits

Mastodon's default API limit is a maximum thread length of 40. You can increase that to 4096 by providing an access token via an environment variable!

Generate one in the Mastodon settings, under "Development". Give it "read" permissions. Then, run

export MASTODON_ACCESS_TOKEN="<your access token>"

You can also put this line in an .envrc file, and activate it using direnv.

License

GPLv3+. This project is REUSE compliant.