Skip to content

Instantly share code, notes, and snippets.

@JamieMason
Last active October 2, 2024 09:48
Show Gist options
  • Save JamieMason/7580315 to your computer and use it in GitHub Desktop.
Save JamieMason/7580315 to your computer and use it in GitHub Desktop.
Unfollow everyone on twitter.com

Unfollow everyone on twitter.com

  1. Go to https://twitter.com/YOUR_USER_NAME/following
  2. Open the Developer Console. (COMMAND+ALT+I on Mac)
  3. Paste this into the Developer Console and run it
// Unfollow everyone on twitter.com, by Jamie Mason (https://twitter.com/fold_left)
// https://gist.github.com/JamieMason/7580315
//
// 1. Go to https://twitter.com/YOUR_USER_NAME/following
// 2. Open the Developer Console. (COMMAND+ALT+I on Mac)
// 3. Paste this into the Developer Console and run it
//
// Last Updated: 30 October 2023
(() => {
  const $followButtons = '[data-testid$="-unfollow"]';
  const $confirmButton = '[data-testid="confirmationSheetConfirm"]';

  const retry = {
    count: 0,
    limit: 3,
  };

  const scrollToTheBottom = () => window.scrollTo(0, document.body.scrollHeight);
  const retryLimitReached = () => retry.count === retry.limit;
  const addNewRetry = () => retry.count++;

  const sleep = ({ seconds }) =>
    new Promise((proceed) => {
      console.log(`WAITING FOR ${seconds} SECONDS...`);
      setTimeout(proceed, seconds * 1000);
    });

  const unfollowAll = async (followButtons) => {
    console.log(`UNFOLLOWING ${followButtons.length} USERS...`);
    await Promise.all(
      followButtons.map(async (followButton) => {
        followButton && followButton.click();
        await sleep({ seconds: 1 });
        const confirmButton = document.querySelector($confirmButton);
        confirmButton && confirmButton.click();
      })
    );
  };

  const nextBatch = async () => {
    scrollToTheBottom();
    await sleep({ seconds: 1 });

    const followButtons = Array.from(document.querySelectorAll($followButtons));
    const followButtonsWereFound = followButtons.length > 0;

    if (followButtonsWereFound) {
      await unfollowAll(followButtons);
      await sleep({ seconds: 2 });
      return nextBatch();
    } else {
      addNewRetry();
    }

    if (retryLimitReached()) {
      console.log(`NO ACCOUNTS FOUND, SO I THINK WE'RE DONE`);
      console.log(`RELOAD PAGE AND RE-RUN SCRIPT IF ANY WERE MISSED`);
    } else {
      await sleep({ seconds: 2 });
      return nextBatch();
    }
  };

  nextBatch();
})();

This script:

  • Is completely free and has been since 2013.
  • Doesn't try and get you to sign in or take your personal data.
  • Automates your web browser to make it click unfollow buttons, scroll down to reveal more, then do it again.
  • No tricks, all of the code is here so you can see exactly what it does.

If this script was useful and saved you time, maybe kick in for a Coffee to say thanks:

ko-fi

@benedlore
Copy link

Worked for about 22K of the 40K followings I was trying to remove in one go, but then started to think it was all done and needed to be restarted a few times on a refreshed page. Still better than any others I've tried.

@JamieMason
Copy link
Author

@benedlore glad it mostly worked out, 40K is a lot.

@isinguard
Copy link

@benedlore glad it mostly worked out, 40K is a lot.

It’s not that it stopped working, twitter usually puts ur acc on cooldown if you perform and action like following/unfollowing/like/unlike.. etc excessively. Just let the account rest a while, refresh the “following” page and paste the code again, then resume the unfollowing. Same thing goes with the unliking script ..

@speakingpen
Copy link

This is pretty much helpful

@roy-heinrich
Copy link

Still works damn.

@umitcanakci
Copy link

still working, awesome. thanks.

@JamieMason
Copy link
Author

can you write code for removing followers on Twitter in the same way
@faisal-ansarii

See comment on Jan 31 🤞

@rodcisal
Copy link

rodcisal commented Oct 1, 2022

still working thanks !

@hodunov
Copy link

hodunov commented Oct 7, 2022

nice one, thanks

@CacheMoneyPlaya
Copy link

works November 2022

@DealsBeam
Copy link

Works as of December 2022, it would be amazing if you could make one that would mass delete tweets and dislike liked tweets

@miguelgargallo
Copy link

Still working, amazing

@asdrubalivan
Copy link

It works here

@faderzz
Copy link

faderzz commented Jan 15, 2023

great

@saamhanza
Copy link

can anyone point me in the right direction of understanding how a script like this is put together?

@JamieMason
Copy link
Author

in what respect @saamhanza? like what each line does?

@saamhanza
Copy link

in what respect @saamhanza? like what each line does?

Thank you for getting back to me

Yes, or a video you could point me to that gives some sort of a walkthrough showing how I could replicate this for another site for example.

@JamieMason
Copy link
Author

JamieMason commented Jan 24, 2023

Yes, or a video you could point me to that gives some sort of a walkthrough showing how I could replicate this for another site for example.

@saamhanza here is a commented version of this script to help understand how it works. As far as replicating this process for other sites, a quick Google Search has come up with this Browser Automation With Javascript article which looks a good fit.

@saamhanza
Copy link

@saamhanza here is a commented version of this script to help understand how it works. As far as replicating this process for other sites, a quick Google Search has come up with this Browser Automation With Javascript article which looks a good fit.

Huge thank you for this Jamie!

@JamieMason
Copy link
Author

you're welcome, good luck learning the Web

@gthomson31
Copy link

this is beautiful! did exactly as it says on the tin 👍

@sunderee
Copy link

Legend, thank you so much!

@Articul8Madn3ss
Copy link

Articul8Madn3ss commented Jun 28, 2023

Hey JaimeMason. Do you have a script that can unfollow everybody but Twitter Blue users? I want to keep all my Blue users but unfollow the rest. With API gone its a pain. Thanks.

@K1same17
Copy link

Hello. Is it possible to make such a script for bluesky?

@JamieMason
Copy link
Author

Hello. Is it possible to make such a script for bluesky?

I've never used bluesky but I would expect someone could do this, these kinds of scripts can be written for most kinds of web pages.

@isinguard
Copy link

Ctrl+Alt+J in chrome to open the Developer Tools console, then paste the code (ctrl+V) on the “following” page of your twitter account, and hit enter.

@isinguard
Copy link

@isinguard thanks but I don't mean twitter.
I meant github followings.
Thanks

Script only for Twitter

@darraghoriordan
Copy link

slight change so it only unfollows people who don't follow you back: https://gist.github.com/darraghoriordan/1f8ddff7b12a68c259a1f71bf4000c51

@JamieMason
Copy link
Author

Nice, @darraghoriordan 👍

@yemidavis
Copy link

Is there a way to get this not to unfollow private accounts?

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