Bulk-delete your Threads posts and replies. Free, open-source, runs locally.
Project description
threads-cleaner
🌐 Landing page: vincentmathis.github.io/threads-cleaner
Bulk-delete your Threads posts and replies via browser automation.
No API keys, no developer account, no rate limits.
Desktop web status: Meta broke the
threads.comdesktop web UI — the More (⋮) menu doesn't open.
This tool works around it by using a mobile viewport. The browser opens phone-sized, which serves the working mobile web version.
Installation
pipx install threads-cleaner
# or
uv tool install threads-cleaner
You can also download a packaged .exe directly from here
Then install the Chromium browser:
threads-cleaner install-browser
Quick start
# 1. Log in (opens a phone-sized browser — go to threads.com, sign in, go to your profile)
threads-cleaner login
# 2. Delete all posts (default action — no subcommand needed)
threads-cleaner
# 3. Watch what happens
threads-cleaner --headed --max 5
Usage
| Command / Option | Description |
|---|---|
| (default) | Deletes posts/replies — no subcommand needed |
login |
Opens a headed browser — log into Threads, session saved automatically |
install-browser |
Download the Chromium browser required by Playwright |
--target, -t |
What to delete: posts (default), replies, or both |
--max N, -m N |
Stop after N deletions (0 = unlimited) |
--dry-run |
Open browser, navigate to profile, no destructive clicks |
--headed |
Show the browser window (for debugging) |
--yes, -y |
Skip the confirmation prompt (for scripting) |
Examples
# Delete up to 10 posts, show browser
threads-cleaner --headed --max 10
# Delete everything including replies, no prompts
threads-cleaner --target both --yes
# Preview what the tool would do
threads-cleaner --dry-run --headed
# Delete 50 replies only
threads-cleaner --target replies --max 50
How it works
-
loginopens a Chromium window in mobile mode (390×844).
You sign intothreads.com— session cookies are saved to~/.config/threads-cleaner/session.json. -
threads-cleaner(default action) loads those cookies, navigates to your profile, and for each post:- Clicks the More (⋮) button via Playwright's native mouse click
- Clicks Delete in the mobile bottom-sheet menu
- Clicks Delete in the confirmation dialog (or detects auto-deletion if no dialog appears)
- Marks each item as "tried" immediately to prevent loops
-
With
--target repliesor--target both, it also navigates to@{username}/replies/and repeats.
Each UI interaction takes ~4-5 seconds. The tool scrolls automatically and can delete hundreds of items per session.
Safety
--dry-runopens the browser but never clicks anything destructive.--max Nstops after N successful deletes.- "Something went wrong" toasts are detected and counted as failures (never falsely reported as deleted).
- Session cookies expire — re-run
browser-loginif you see a login error. - Every "More" button is tried at most once — no infinite retry loops.
Requirements
- Python 3.11+
- Chromium (installed via
threads-cleaner install-browser)
Why not use an API?
| Approach | Result |
|---|---|
| Meta Threads Graph API | Requires approved FB Developer account (author's was suspended) |
Instagram REST API (text_feed, media/delete) |
Returns 404 or kills the session server-side |
Threads GraphQL endpoint (threads.com/api/graphql) |
Same-origin fetch fails from extension context |
| Browser UI automation ← you are here | Works. Clicks the real UI like a human. |
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file threads_cleaner-1.0.1-py3-none-any.whl.
File metadata
- Download URL: threads_cleaner-1.0.1-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ebc5d47dddcbf12c14f60670e08dd93b21b2671bbffa72a789ccd47567eaac0
|
|
| MD5 |
824077d5ac844e4afd8755e0b1c21315
|
|
| BLAKE2b-256 |
10124d575b3abca0258b24a6fd3c4a265a12d048ed966094e3c6c4b2526acf8a
|