Skip to content

Instantly share code, notes, and snippets.

@aymericbeaumet
Last active September 11, 2024 15:10
Show Gist options
  • Save aymericbeaumet/d1d6799a1b765c3c8bc0b675b1a1547d to your computer and use it in GitHub Desktop.
Save aymericbeaumet/d1d6799a1b765c3c8bc0b675b1a1547d to your computer and use it in GitHub Desktop.
[Recipe] Delete all your likes/favorites from Twitter

Ever wanted to delete all your likes/favorites from Twitter but only found broken/expensive tools? You are in the right place.

  1. Go to: https://twitter.com/{username}/likes
  2. Open the console and run the following JavaScript code:
setInterval(() => {
  for (const d of document.querySelectorAll('div[data-testid="unlike"]')) {
    d.click()
  }
  window.scrollTo(0, document.body.scrollHeight)
}, 1000)
@Jsdfngjkds
Copy link

i have the same problem, the no. of tweets is 300 but it says on the likes tab You don’t have any likes yet
. ANY HELP?

@bobmagicii
Copy link

bobmagicii commented Jan 8, 2023

every weekend i have to go back to twitter and more likes are there. its almost like it takes their system forever to dig them out of super old archive. and if i unlike like 20 of them, while still staring at more and refresh all of them will vanish. until next weekend again. im down to 291 now.

you just have to keep on keeping on.

@10ensura
Copy link

10ensura commented Jan 18, 2023

by favorite, you mean bookmarks yes or no ? thats can be usefull for myself if yes.

@jbreckmckye
Copy link

It's hard to say what the deal is with Twitter right now. Since the takeover it seems increasingly unstable. A lot of non-core things are apparently silently broken

@gomz404
Copy link

gomz404 commented Jan 23, 2023

thankyou sir :) worked your all script ,

@allbombs
Copy link

Thanks for sharing this.
It removed 5k likes, but now i'm stuck at 4k? It appears around 2018 is when the above script stopped working.

It's been 36 hours and stuck

@RodLeyton
Copy link

RodLeyton commented Feb 2, 2023

Working very well. Thank you, glad I searched first!
Takes a while, set interval a lot longer to stop twitters rate limiter.
Even 10sec still hit the rate limiter, but this was a new account so only had 10k likes.
Take note of the "[HTTP/2 429 Too Many Requests 208ms]".
If you want to run it overnight, may need to add delay per click instead.
Thank you very much

@rafacampoamor
Copy link

Is there a way to the same with Retweets?

@MohdAsad5
Copy link

My dear sir, I disliked all my posts on Twitter at once through the code you mentioned. And I became very happy. But I want to ask you that can we delete or undo all tweets or retweets on Twitter in one go through code..??
Let me know if you have any such code. I want to delete and undo all tweets of twitter through code.
If you have any such code please send me code on E-mail: mohdasad3786@gmail.com so that I can delete all tweets.
I am waiting for your reply. of your answer..!!

Regards
Mohd Asad

@subsubsubsubsubsub
Copy link

subsubsubsubsubsub commented Feb 25, 2023

is there a new code to remove likes? The above doesn't work for me anymore. deleted 2000 likes. 1000 left?

@subsubsubsubsubsub
Copy link

is there a new code to remove likes? The above doesn't work for me anymore. deleted 2000 likes. 1000 left?

try using this use the refresh and ctrl+L to clear the console and start this code

const run = () => { let intervalId = setInterval(() => { for (const d of document.querySelectorAll('div[data-testid="unlike"]')) { d.click(); } }, 3000);

let scrollIntervalId = setInterval(() => { window.scrollTo(0, document.body.scrollHeight); }, 5000);

setTimeout(() => { clearInterval(intervalId); clearInterval(scrollIntervalId); setTimeout(run, 900000); }, 900000); };

run();

net::ERR_BLOCKED_BY_ADBLOCKER

@subsubsubsubsubsub
Copy link

such a problem, in the likes, there are no likes on the posts themselves. it is necessary to like and remove, maybe because of this the script does not work? and need to be redone? likes for 2018

@jbreckmckye
Copy link

jbreckmckye commented Feb 25, 2023

I am aware that this is turning into the programmer's version of playing Stairway to Heaven.

But here's mine

  • rather than estimating a scroll offset, it simply uses focus() to scroll the next item into view
  • has a backoff every 50 unlikes to prevent HTTP 429: Too Many Requests
function nextUnlike() {
  return document.querySelector('[data-testid="unlike"]')
}

function wait(ms) {
  return new Promise(resolve => setTimeout(resolve, ms))
}

async function removeAll() {
  let count = 0
  let next = nextUnlike()
  while (next && count < 500) {
    next.focus()
    next.click()
    console.log(`Unliked ${++count} tweets`)
    await wait(count % 50 === 0 ? 30000 : 2000)
    next = nextUnlike()
  }
  console.log('Out of unlikes, count =', count)
}

removeAll() 

At time of writing this is printing Unliked 1506 tweets

@subsubsubsubsubsub
Copy link

Doesn't work again. a day has passed.

@isabellechia427
Copy link

isabellechia427 commented Feb 27, 2023

image

hi! may i know is there anyway to fix this? i've tried the code above but it became like this. very thankful if anybody can help me to solve this problem :( thanks a lot!

@rogervenson
Copy link

image

hi! may i know is there anyway to fix this? i've tried the code above but it became like this. very thankful if anybody can help me to solve this problem :( thanks a lot!

hey, were you able to fix this somehow?? I'm so annoyed by it, and the worst thing is that other accounts can see these likes that are invisible for me...

@bitridge
Copy link

bitridge commented Mar 6, 2023

This is amazing

@isabellechia427
Copy link

image
hi! may i know is there anyway to fix this? i've tried the code above but it became like this. very thankful if anybody can help me to solve this problem :( thanks a lot!

hey, were you able to fix this somehow?? I'm so annoyed by it, and the worst thing is that other accounts can see these likes that are invisible for me..

noooo, my Twitter is still like this :( but not sure can other accs see the likes

@razaahmed301
Copy link

It worked for me! Thanks

@10ensura
Copy link

10ensura commented Mar 9, 2023

Pour votre information, pour tous ceux qui traversent cet essentiel, il y a une limite de 1000 likes / likes par jour et les anciens tweets aimés n'apparaissent pas comme "aimés" sur votre chronologie, vous devez donc les aimer et ne pas les aimer pour les supprimer. J'utilise semiphemeral pour supprimer les likes et les retweets. Selon https://github.com/micahflee/semiphemeral#deleting-old-likes

isn't work...

@ranjanquiet
Copy link

none of the code on this page are working.

@verma-rajatk
Copy link

Great job! It works as of Mar 17 2023. Many Thanks.

@ianathompson
Copy link

I am aware that this is turning into the programmer's version of playing Stairway to Heaven.

But here's mine

  • rather than estimating a scroll offset, it simply uses focus() to scroll the next item into view
  • has a backoff every 50 unlikes to prevent HTTP 429: Too Many Requests
function nextUnlike() {
  return document.querySelector('[data-testid="unlike"]')
}

function wait(ms) {
  return new Promise(resolve => setTimeout(resolve, ms))
}

async function removeAll() {
  let count = 0
  let next = nextUnlike()
  while (next) {
    next.focus()
    next.click()
    console.log(`Unliked ${++count} tweets`)
    await wait(count % 50 === 0 ? 30000 : 2000)
    next = nextUnlike()
  }
  console.log('Out of unlikes, count =', count)
}

removeAll() 

At time of writing this is printing Unliked 1506 tweets

This works wonderfully. Thank you @jbreckmckye

@limeraiin
Copy link

I am aware that this is turning into the programmer's version of playing Stairway to Heaven.
But here's mine

  • rather than estimating a scroll offset, it simply uses focus() to scroll the next item into view
  • has a backoff every 50 unlikes to prevent HTTP 429: Too Many Requests
function nextUnlike() {
  return document.querySelector('[data-testid="unlike"]')
}

function wait(ms) {
  return new Promise(resolve => setTimeout(resolve, ms))
}

async function removeAll() {
  let count = 0
  let next = nextUnlike()
  while (next) {
    next.focus()
    next.click()
    console.log(`Unliked ${++count} tweets`)
    await wait(count % 50 === 0 ? 30000 : 2000)
    next = nextUnlike()
  }
  console.log('Out of unlikes, count =', count)
}

removeAll() 

At time of writing this is printing Unliked 1506 tweets

This works wonderfully. Thank you @jbreckmckye

It is not working either

main.2b1c61fa.js:1 POST https://twitter.com/i/api/graphql/ZYKSe-w7KEslx3JhSIk5LA/UnfavoriteTweet 429

it logs "x tweets removed" but in reality nothing changes.

@jbreckmckye
Copy link

jbreckmckye commented Apr 2, 2023

@limeraiin You may need to increase the timeout. Wait a day or so as well, so you aren't on any LB blacklists.

I think sometimes it takes a little while for the API to fully reconcile updates.

It's also possible twitter are clamping down further on rate issues due to problems on their platform. It's a bit inexact.

@danielraffel
Copy link

Any idea how to unretweet a tweet If you’re blocked? I read this...
https://medium.com/@SeloSlav/how-to-unretweet-a-tweet-if-youre-blocked-9b4c294f4b3f
And have the tweetID...possible to modify one of the above scripts and use the ID and unretweet it in the console?

@nicoh88
Copy link

nicoh88 commented Apr 18, 2023

Hello, can the script be tapped so that only likes older than 30 days are removed? Would be great!

And maybe the whole thing for retweets too?

Thanks

@GitJuankof
Copy link

Funcionó hasta cierto punto, porque, al igual que otros, me apacen likes invisibles que no se dejaron borrar. ¡Muchas gracias!

@sunnycs121
Copy link

sunnycs121 commented May 17, 2023

I thought it was working until i refreshed the likes page, all likes were there and now I cannot even unlike manually. I f i try to manually unlike any post it automatically likes it again. Long story short now my likes are permanent forever. 👎

@asontemn
Copy link

Thanks!

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