Skip to main content

Bulk-delete your Threads posts and replies. Free, open-source, runs locally.

Project description

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.com desktop 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

pip install threads-cleaner
# or
uv add threads-cleaner

Then install the Chromium browser:

threads-cleaner install-browser

Quick start

# 1. Log in (opens a phone-sized browser — go to threads.net, sign in, go to your profile)
threads-cleaner browser-login

# 2. Delete all posts
threads-cleaner browser-delete

# 3. Watch what happens
threads-cleaner browser-delete --headed --max 5

Usage

Command Description
install-browser Download the Chromium browser required by Playwright
browser-login Opens a headed browser — log into Threads, session saved automatically
browser-delete Deletes posts by clicking the Threads mobile web UI
--include-replies Also delete your replies
--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 browser-delete --headed --max 10

# Delete everything including replies, no prompts
threads-cleaner browser-delete --include-replies --yes

# Preview what the tool would do
threads-cleaner browser-delete --dry-run --headed

# Delete 50 replies only
threads-cleaner browser-delete --include-replies --max 50

How it works

  1. browser-login opens a Chromium window in mobile mode (390×844).
    You sign into threads.net — session cookies are saved to ~/.config/threads-cleaner/session.json.

  2. browser-delete 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
  3. With --include-replies, 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-run opens the browser but never clicks anything destructive.
  • --max N stops 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-login if 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

threads_cleaner-0.2.31.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

threads_cleaner-0.2.31-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file threads_cleaner-0.2.31.tar.gz.

File metadata

  • Download URL: threads_cleaner-0.2.31.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","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

Hashes for threads_cleaner-0.2.31.tar.gz
Algorithm Hash digest
SHA256 207ed4c90f3321a27c8d003547651ac74fe46fad9d37e45cf84174a4daa8aeb7
MD5 eef68beffb14b8ce7e61dbb3a53c1216
BLAKE2b-256 d18dbfd7a77392f19333de54e32b50d34b8de0f05bfa896d63696bd1359937fc

See more details on using hashes here.

File details

Details for the file threads_cleaner-0.2.31-py3-none-any.whl.

File metadata

  • Download URL: threads_cleaner-0.2.31-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","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

Hashes for threads_cleaner-0.2.31-py3-none-any.whl
Algorithm Hash digest
SHA256 0d2c2a2abdd66a890cb209a7f0baa34eb40e0eb21582e82ad3187dd0f3bb5f9d
MD5 4deacefada2414e48f56dcd18b3a6a0e
BLAKE2b-256 da959229b2da4d1a026528abb33187a994103eefdba49c7331424758b383d0cf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page