Skip to content

Instantly share code, notes, and snippets.

@lindenb
Last active April 26, 2025 15:17
Show Gist options
  • Save lindenb/9da4f65c8b3686019b387fc7f990c87f to your computer and use it in GitHub Desktop.
Save lindenb/9da4f65c8b3686019b387fc7f990c87f to your computer and use it in GitHub Desktop.
Delete Tweets

I want to delete all my tweets without deleting my account.

This script deletes your tweets and repost from twitter without using the Twitter API, just by using the firefox javascript scratchpad.

Chage YOURNAME in the script below.

The script is quite slow but it works so far , I set some long timeout to let the DOM document to (re)load.

May be it could be much faster but I'm not a javascript guy.

function confirmDelete() {
var iter = document.evaluate("//span[text()='Delete' and @style='text-overflow: unset;']",document,null,XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
for(;;) {
var a = iter.iterateNext();
if(a==null) break;
console.log("confirm "+a);
setTimeout(function() {
a.click();
},2000);
break;
}
}
function moreDelete() {
console.log("moreDelete");
var iter = document.evaluate("//span[text()='Delete']",document,null,XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
for(;;) {
var a = iter.iterateNext();
if(a==null) break;
console.log("moreDel "+a);
a.click();
setTimeout(confirmDelete,1000);
break;
}
}
function undoRepost() {
console.log("unretweet");
var iter = document.evaluate("//span[text()='Undo repost']",document,null,XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
for(;;) {
var a = iter.iterateNext();
if(a==null) break;
console.log("undo report "+a);
setTimeout(function() {
a.click();
},2000);
break;
}
}
function removeArticles() {
var L=[];
var iter = document.evaluate("//article[not(.//span/text()='YOURNAME')]",document,null,XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
for(;;) {
var a = iter.iterateNext();
if(a==null) break;
L.push(a);
}
for(i in L) {
var a=L[i];
if(a!=null && a.parentNode!=null) a.parentNode.removeChild(a);
}
}
function collect() {
removeArticles();
console.log("colllect");
if(Math.random()<0.5) {
var iter = document.evaluate("//div[@aria-label='More' and @role='button']",document,null,XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
for(;;) {
var a = iter.iterateNext();
if(a==null) break;
console.log("post "+a);
a.click();
setTimeout(moreDelete,2000);
break;
}
}
else {
var iter = document.evaluate("//div[contains(@aria-label,'Reposted') and @role='button' and @data-testid='unretweet']",document,null,XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
for(;;) {
var a = iter.iterateNext();
if(a==null) break;
console.log("undoRepost "+a);
a.click();
setTimeout(undoRepost,2000);
break;
}
}
}
setInterval(collect, 10000);
@lindenb
Copy link
Author

lindenb commented Jan 10, 2025

@nafal9aadi Hi, I'm afraid this script is deprecated now. Furthermore, twitter detects that too many tweets are deleted and blocks your account for a few days.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment