Skip to content

Bulk Delete

Open Bulk Delete →

Bulk Delete removes your own posts, replies, reposts, and likes from your Bluesky account, many at a time. It does not touch lists, follows, or blocks.

It works in three stages:

  1. Read. BskyKit reads every post, reply, repost, and like on your account from your own Bluesky server, in your browser.
  2. Choose. Filters narrow the list by type, date, keywords, text, media, and labels. The list is a dry run: it shows exactly the records that match, and nothing is deleted while you filter and select.
  3. Delete. You confirm by typing DELETE. BskyKit first downloads a JSON export of exactly the records that go, then deletes them in a run you can follow, pause, and resume in History.
  • Sign in with the account you want to clean up. See Signing In.
  • Decide whether you want a full backup. The export Bulk Delete downloads holds the records it deletes, with their text and the IDs of their pictures and videos, but not the picture and video files themselves. To keep those, download your account with Account Download first.
  • Allow downloads for bskykit.app in your browser. If the export cannot be downloaded, nothing is deleted.
  • Keep the tab open during a large run. Runs only progress while a BskyKit tab is open.

Bulk Delete, Content Search, Alt-Text Audit, Media Gallery, Reply Settings, and Superfans all work from one read of your posts, reposts, and likes. Read once in any of them and the others show it at once.

  • Read my posts, reposts, and likes starts it. The line above the list counts what was read, such as Reading: 1,200 posts and replies · 300 reposts · 4,000 likes.
  • After the records, BskyKit loads the details of each of your posts and of each post you liked or reposted: its text, media, labels, and counts. A bar shows Loading the posts you liked and reposted, and your own posts’ counts.
  • Stop keeps what was read. Continue carries on from where it stopped.
  • Read again throws the read away and starts over. Clear throws it away without reading.
  • The read is kept on this device. On your next visit it shows at once, then BskyKit checks for posts, reposts, and likes made since. The line says Checking for new items…, then Up to date, 3 new. with the time of the last full read.

See Data on Your Device for where the read is kept and how to clear it.

  1. Open Bulk Delete and sign in.
  2. Choose Read my posts, reposts, and likes. If you already read your account in one of the tools above, the list shows at once. Once the read starts, a Deletes are permanent notice stays at the top of the page.
  3. Set the filters. The list updates as you change them and shows a line such as 0 selected · 21 of 30 match: 18 posts and 3 replies.
  4. Check the rows. Each shows the text (or, for a like or repost, the post you liked or reposted), the date, counts, and badges for media and labels. Choose a row’s link to open the post on Bluesky in a new tab.
  5. Select what to delete. Tick rows one by one, or use the Select menu: Select all shown, Select none, or Invert shown. Records you selected and then filtered out stay selected; the line says how many are selected outside this view.
  6. Choose Delete selected in the panel beside the list. The note under it counts what you selected by type.
  7. If the run is large, choose how much to delete now. See Large runs.
  8. Read the confirmation. It lists what will be removed, that it cannot be undone, the export, and the cost in write points.
  9. Type DELETE in Type DELETE to start, then choose Delete N records.
  10. Your browser downloads the export. The run then starts; the rows leave the list as each batch is deleted. Follow it in the panel or in History.

A run that goes past BskyKit’s daily suggestion of 10,000 deletes, or that takes more than a day at your server’s limits, opens a choice first:

  • Delete the newest N now deletes only as many as fit in today’s suggestion. The rest stay selected for another day.
  • Start the whole run queues everything. It pauses at Bluesky’s limits and continues while this tab is open, or when you come back.

Either way, you type DELETE next, and the export downloads when you confirm.

The confirmation uses the same words every time, with only the numbers and types changing. For one like it reads:

Delete 1 record?

This will remove 1 like from your account.

This can’t be undone. Deleting a like or repost only removes yours, the post itself stays.

When you confirm, BskyKit will first download a JSON export of the record (with its full contents), then begin deleting. BskyKit keeps no copy, the export is yours to keep.

Cost: 1 delete at 1 point each = 1 point. That’s within your server’s limits (5,000 points/hour, 35,000/day).

You can track, pause, and resume this run in History.

When posts or replies are included, it adds “Deleted posts and replies lose their likes, replies, reposts, and quotes, and their pictures can’t be recovered.” When your pinned post is included, it says so: once it is deleted, your profile has no pinned post.

All filters apply together. Left empty, a filter keeps everything.

Filter What it does Default
Type Posts, Replies, Reposts, Likes, each with its count. Posts start a thread; replies answer another post. Pick any mix. None chosen: every type
Date All time, Older than 30 days, Older than a year, Last 30 days, or Custom. The date is when you posted, reposted, or liked. All time
From / To With Custom: the first and last day. Both days are included, in your time zone. The period shown before you picked Custom
Keywords Words or phrases separated by commas. A record matches when its text holds any of them, in any case. For likes and reposts, the text of the post you liked or reposted. Empty
Search Text, an author’s handle (with or without the @), or a record address (at://…). The handle and the text of liked and reposted posts match once their details have loaded. Empty
Has media Images, Video, Link card, Quote. A record matches when it has any of those chosen. For likes and reposts, the media of the post you liked or reposted. None chosen: no media filter
Has labels Self labels: content warnings the author added, such as adult content. Moderation labels: labels from Bluesky’s moderation or a labeler. For likes and reposts, the labels of the post you liked or reposted. None chosen: no label filter

Keywords and Search wait a moment after you stop typing, so a large account stays responsive.

  • Newest first; records with no date come last. There is no other sort.
  • Badges: Pinned on your pinned post, In a delete run on records already queued for deletion (they cannot be selected again), and the record’s media and labels.
  • A liked or reposted post can show as Post not loaded yet, Post unavailable: deleted, or its author is gone, or Post hidden by Bluesky moderation. You can still delete your like or repost of it.

The export is one JSON file named like bluesky-delete-alice.bsky.social-2026-10-27-1405-ks8wnsug2.json: your handle, the date and time, and a random ending, so two exports never share a name. It holds your account, counts by type, and for each record:

  • its address, ID, type, and creation date, and a link to it on bsky.app;
  • the whole record as your server held it;
  • for posts and replies, the text, the embed, and the IDs of its pictures and videos;
  • for likes and reposts, the post it pointed at: its address, author, and text when it had loaded.

The export downloads only when you choose Delete N records, never when the dialog opens.

  • Deleted: exactly the records you selected and confirmed, from your repository on your own Bluesky server. Nothing else on your account changes.
  • Likes and reposts: only yours are removed. The post itself stays, and so does everyone else’s like or repost of it.
  • Posts and replies: the post is gone, with its likes, replies, reposts, and quotes. Replies other people wrote under it stay on their accounts.
  • Reads: your records come from your own server; post details come from Bluesky’s public API. See Data on Your Device.
  • On this device: the read, kept until Clear, Read again, or sign-out, and the run in History. Records a run deletes leave the stored read as each batch is saved.
  • On your computer: the export file. BskyKit keeps no copy of it.

There is none. Bulk Delete runs have no Undo in the panel or in History. Posting the text again makes a new post, at a new address, with none of the old likes, replies, or reposts.

You can stop a run before it finishes: choose Pause on the run in the panel, or in the run indicator in the header. Nothing more is deleted until you resume it there or in History. Records already deleted stay deleted. See History & Undo.

  • Write points: each delete costs 1 point. Your server allows about 5,000 points an hour and 35,000 a day. The confirmation tells you when a run goes past the hourly limit (it pauses each hour and continues by itself) or the daily limit (it takes about the number of days it states).
  • Daily suggestion: BskyKit suggests at most 10,000 deletes in 24 hours, so your account keeps room to post, like, and follow while a large run goes on. The Last 24 hours meter in the panel counts deletes made from this device, plus any still queued.
  • Batches: up to 200 deletes per request to your server.
  • Reading: records come 100 per request, at most 2,500 requests every five minutes. In BskyKit’s tests, a slow server took about two minutes to read 100,000 likes and about three more to load their post details. A kept read shows at once on later visits.

See Limits & Pacing.

Type DELETE in capital letters in Type DELETE to start. Lowercase is not accepted. Spaces before or after the word are fine.

“The export could not be downloaded, so nothing was deleted.”

Section titled ““The export could not be downloaded, so nothing was deleted.””

Your browser blocked the download, so no run started and the dialog stays open. Allow downloads for bskykit.app, then choose Delete N records again.

A filter by text, media, or label misses likes and reposts

Section titled “A filter by text, media, or label misses likes and reposts”

Those filters read the post you liked or reposted, which needs its details. If the read says Post details stopped at…, choose Continue. A post that is unavailable or hidden has no text or media to match.

BskyKit finds records deleted outside it only when it reads your account again. Choose Read again. If you delete such a record anyway, it counts as done.

It shows In a delete run: it is already queued in a run. Follow that run in the panel or in History.

Another tab holds an older version of the run history database open. Close the other BskyKit tab and reload this one.