100% free. Runs completely locally on your machine. Bypasses the 3200 tweet limit. May require some eye bleach for the script. Here's how to use it:
-
Go to settings -> account -> your Twitter data and request a download. This may take a few hours. You'll get an email with a link to download a zip file. Extract the zip file and navigate to the
data
directory. -
Go to Twitter in a web browser and find any Tweet you want to delete. We're going to use it to extract your authentication credentials for the next step. Open developer tools, delete the tweet, and find the request to
https://twitter.com/i/api/graphql/.../DeleteTweet
. Right click it and copy it as cURL. -
Save
delet_tweets.sh
into yourdata
directory. Open it in a text editor, and paste the command you got from the previous step where it saysYOUR_CURL_COMMAND_HERE
. Replace theid
parameter for--data
with$tweet_id
(make sure to adjust quoting accordingly). Add--compressed
as well to tellcurl
to un-gzip the response. -
Let 'er rip. It will probably take a while (for me, somewhere around 10-20k tweets an hour), so leave it running in the background. If you want to see your deleted tweets as they go by, pipe the output of
curl
tojq -r .full_text
(add-s
tocurl
too).
The delete requests these days seem to be for
https://twitter.com/i/api/graphql/$queryId/DeleteTweet
, and thecurl
command includes a line like--data-raw "{\"variables\":{\"tweet_id\":$tweet_id,\"dark_request\":false},\"queryId\":\"$queryId\"}"
. Also, there's rate limits which make it a bit more convenient to restrict the date range both ways:(
gdate
isbrew
-speak for GNU date on MacOS.)