Skip to content

Instantly share code, notes, and snippets.

@aymericbeaumet
Last active December 6, 2025 15:47
Show Gist options
  • Select an option

  • Save aymericbeaumet/d1d6799a1b765c3c8bc0b675b1a1547d to your computer and use it in GitHub Desktop.

Select an option

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)
@tahakara
Copy link

I think the fastest way is to block the CDN domains that I will provide in the Ublock Origin > My FILTERS section and then use the script below with an interval of 600 ms because the current rate limit is 500 req/5min, so 600ms is suitable for this situation.

CDN domains

abs-0.twimg.com/*
video.twimg.com/*
pbs.twimg.com/*

(Don't forget to delete the filters afterwards.)

setInterval(() => {
  const d = document.querySelector('div[data-testid="unlike"]')
  if(d) {
    d.click()
  } else {
    window.scrollTo(0, document.body.scrollHeight)
  }
}, 1000)

@btywoniuk
Copy link

setInterval(() => {
  for (const d of document.querySelectorAll('button[data-testid="unlike"]')) {
    d.click()
  }
  window.scrollTo(0, document.body.scrollHeight)
}, 1000)

@cerohazuri
Copy link

cerohazuri commented Jul 11, 2025 via email

@iamxeeshankhan
Copy link

Try this one 👇 in case the above methods don't work

setInterval(() => {
  for (const button of document.querySelectorAll(
    'button[data-testid="unlike"], button[aria-label*="Liked"]'
  )) {
    button.click();
  }
  window.scrollTo(0, document.body.scrollHeight);
}, 1000);

@levifasten
Copy link

I want to delete likes from a suspended account, and also from an account that is private (likes don't show up on my likes page, but count as number of likes I have, BTW I can see the links to those tweets in my likes.js of my archive data).

Will any script delete those??

@jconnnewby
Copy link

Is there a code to get rid of all bookmarks?

@jconnnewby
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 && 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

stops at 10 tweets

@enzoysss
Copy link

enzoysss commented Dec 6, 2025

Is there a code to get rid of all bookmarks?

setInterval(() => {
  const d = document.querySelector('button[data-testid="removeBookmark"]')
  if(d) {
    d.click()
  } else {
    window.scrollTo(0, document.body.scrollHeight)
  }
}, 1000)

This worked for me. It cleared all my bookmarks.

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