tumblr-backup
tumblr-backup is a Python tool that backs up your Tumblr blog locally as HTML files, preserving all your posts, images, and media. It creates a beautiful, browsable archive of your blog that you can view offline.
This is a fork of bbolli's tumblr-utils, with added Python 3 compatibility, bug fixes, support for dashboard-only blogs, and many other enhancements.
Quick Start
Step 1: Install Python (if you don't have it)
Windows and macOS: Download and install Python from python.org. During installation on Windows, check the box that says "Add Python to PATH" — this is important!
Linux: Python is usually already installed. You can check by opening a terminal and typing python3 --version.
Step 2: Install tumblr-backup
Open a terminal. Then run the install command for your system:
Windows or macOS (if you installed Python from python.org)
pip install tumblr-backup
Tip: If
pipisn't recognized, trypython -m pip install tumblr-backupinstead.
Linux or Homebrew
On Linux (and macOS with Homebrew Python), the recommended way to install command-line tools is pipx, which manages them in isolated environments:
Ubuntu/Debian:
sudo apt install pipx
pipx install tumblr-backup
Fedora:
sudo dnf install pipx
pipx install tumblr-backup
macOS (Homebrew):
brew install pipx
pipx install tumblr-backup
Other distros / alternative method: If your package manager doesn't have pipx, you can use uv, a fast Python tool installer:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install tumblr-backup
Step 3: Get a Tumblr API key
- Go to https://www.tumblr.com/oauth/apps (log in if needed)
- Click Register application
- Fill in any values for the required fields (the specific values don't matter)
- Copy the OAuth Consumer Key shown on the next page
Step 4: Save your API key
tumblr-backup --set-api-key YOUR_API_KEY
Replace YOUR_API_KEY with the key you copied.
Step 5: Back up a blog
tumblr-backup blog-name
For example, to back up staff.tumblr.com:
tumblr-backup staff
This will create a staff/ directory in your current folder containing an index.html file you can open in your browser to view the backup, along with monthly archive pages, individual post pages, and all images and media.
Updating an existing backup
To add only new posts to an existing backup:
tumblr-backup -i blog-name
Optional extras
tumblr-backup has optional features you can enable by installing extras. Add them in square brackets after the package name:
pip install "tumblr-backup[video]"
(On Linux/Homebrew, replace pip install with pipx install or uv tool install as above.)
| Extra | What it does |
|---|---|
video |
Save video files (uses yt-dlp) |
exif |
Add post tags to image EXIF metadata |
jq |
Filter posts with custom rules |
dash |
Back up dashboard-only blogs |
all |
All of the above |
Documentation
- Installation Guide — Detailed installation instructions including optional features
- Usage Guide — Complete list of options and command-line arguments
- Operation Guide — How tumblr-backup works under the hood
Support & Community
If you get stuck, have questions, or want to request features, join the Discord:
Third-party Components
This project redistributes npf2html (MIT) from https://github.com/nex3/npf2html at commit 05d602a.
- Upstream license: see
3rdparty/npf2html/LICENSE. - Source used to produce the bundled JS:
3rdparty/npf2html/with build steps in3rdparty/README.md.
Acknowledgments
- bdoms for the initial implementation
- WyohKnott for numerous bug reports and patches
- Tumblr for their discontinued backup tool whose
output was the inspiration for the styling applied in
tumblr_backup. - Beat Bolli
Metadata
Release files for tumblr-backup 1.6.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tumblr_backup-1.6.7.tar.gz | 101.9 kB | Without provenance | Details for tumblr_backup-1.6.7.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| tumblr_backup-1.6.7-py3-none-any.whl | Python 3 | none | any | Details for tumblr_backup-1.6.7-py3-none-any.whl |
Total release size: 201.8 kB
Release files / tumblr_backup-1.6.7.tar.gz
| Download URL | tumblr_backup-1.6.7.tar.gz |
|---|---|
| Size | 101.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f4f399550de0f228dc45ac9f33fe0bffa22efbb706b6ca2faaa63ede18338823
|
|
BLAKE2b-256 checksum How to use checksums |
0a4b4e10e725f1aaf1d30eeb78f7e2e1489913d2c9c480903cb8066dc7f9e4e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / tumblr_backup-1.6.7-py3-none-any.whl
| Download URL | tumblr_backup-1.6.7-py3-none-any.whl |
|---|---|
| Size | 100.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d470bf70830df97b7572107b955bf64260b744b63e3494cd2e71c16dd1466f29
|
|
BLAKE2b-256 checksum How to use checksums |
b1b1e5591cef496241c793c38a2bd0b5b3f10dd38768ca472e6937eb2e21c289
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Security for tumblr-backup 1.6.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.