tl;dr: The file below, purged-users.csv, contains a data table of stats from my Twitter followers who appear to have been "purged" on 2018-07-12 from my followers count. As Twitter said in its announcement, only follower counts have been adjusted. The actual user accounts who constitute the purged followers counts were not deleted, nor does their list of "followings" reflect the change. This makes sense because the "purged" accounts aren't necessarily fake, but they've been "locked" for suspicious behavior and have been inactive since.
Sometime on July 12, 2018, Twitter conducted a mass purge of user accounts suspected to be fake. Via the Twitter blog, Confidence in follower counts (emphasis added):
Over the years, we’ve locked accounts when we detected sudden changes in account behavior. In these situations, we reach out to the owners of the accounts and unless they validate the account and reset their passwords, we keep them locked with no ability to log in. This week, we’ll be removing these locked accounts from follower counts across profiles globally. As a result, the number of followers displayed on many profiles may go down.
On July 11, I did a snapshot of my followers using the sferik/t command-line tool:
$ t followers --csv > 20180711.csv
I took a second snapshot on the afternoon of July 13:
$ t followers --csv > 20180713.csv
(Note: Unless you have a time machine, or you took a snapshot of your followers before July 12, you won't be able to do this analysis yourself)
Then, with grep
and csvkit's csvcut
, I did the equivalent of a LEFT OUTER JOIN
and filtered for user IDs that appeared on the earlier list that did not exist in the latter list:
$ csvcut -c ID followers-20180711.csv \
| grep -v --file <(csvcut -c ID followers-20180713.csv) \
| sed '1i\
ID
' > /tmp/missing-ids.txt
Finally, using csvjoin, I joined this list back to the 2018-07-11 followers list (which has all the profile data, such as name, follower count, etc):
$ csvjoin -c ID followers-20180711.csv /tmp/missing-ids.txt \
| csvcut -c 'Verified,Protected,Followers,Following,Listed,Tweets,Favorites,Since,Last tweeted at' \
| csvsort -c Followers -r \
> /tmp/purged-users.csv
The resulting CSV file is the file attached to this gist, purged-users.csv, which amounts to about 110 user accounts.
An important caveat: there's no way for me to know which followers I've lost from July 11 to July 13 to the purge, versus followers who I've lost because of natural reasons -- e.g. they're tired of my shitty tweets. There was one user who I know unfollowed me, because I unfollowed him first for being a dick, and so I've removed his record from purged-users.csv.
Because I have no way of knowing which of the remaining accounts also quit me out of principle rather than computational purge, the purged-users.csv file deliberately leaves out identifying information.
I didn't read the Twitter blog post before today, so I had assumed the "Great Twitter Purge of 2018" meant that actual user accounts were going to be deleted. When I skimmed my list, I noticed "purged" accounts that had followed me for a long time and had no personal beef with me (because they were brand accounts that followed everyone). When I checked to see if their accounts had been deleted, I was surprised to see they were still active, and still following thousands of other accounts.
I manually checked some of my "purged" followers that most definitely seem like sham accounts, such as a user named Peter Heckman, who has 0 followers and 0 tweets and has been around since 2011.
Lo and behold, Mr. Heckman's account has not been deleted:
Well, the Twitter blog post did say that it was follower counts that would be changed, not that the locked/fake accounts would actually be deleted from the system:
This week, we’ll be removing these locked accounts from follower counts across profiles globally. As a result, the number of followers displayed on many profiles may go down.
And I guess the data on who those accounts follow -- i.e. their "Following" count/list -- would not be changed either. For example, I'm still listed as someone whom Mr. Heckman's twitter account follows:
To be clear, it makes sense why accounts that no longer contribute to "follower counts" are not yet deleted or suspended. Again, from Twitter's blog post:
Why does an account get locked?
If we detect sudden changes in account behavior, we may lock the account and contact the owner to confirm they still have control of it. These sudden changes in account behavior could include Tweeting a large volume of unsolicited replies or mentions, Tweeting misleading links, or if a large number of accounts block the account after mentioning them. We sometimes lock an account if we see email and password combinations from other services posted online and believe that information could put the security of an account at risk — so we require accounts to change of their passwords for protection. Until we confirm that everything is ok with the account, we lock it, which makes them unable to Tweet or see ads.
How are these accounts different from spam or bots?
In most cases, these accounts were created by real people but we cannot confirm that the original person who opened the account still has control and access to it.
In other words, these accounts may or may not be actually "bad". They currently are just in limbo, because they may still represent genuine users whose accounts have been compromised, and Twitter doesn't want to delete those users since the actual (human) owners may eventually log back on.
Twitter's blog post was more or less upfront that this so-called purge wouldn't delete total Twitter accounts, or affect their Monthly Active Users (MAUs), because by definition, these locked accounts could not be "active":
Will this change affect your Monthly Active User (MAU) or Daily Active User (DAU) metrics?
No, it will not. Removing locked accounts from followers doesn't impact MAU or DAU. Locked accounts that have not reset their password in more than one month are not included in MAU or DAU.
Anyway, you can look at the purged-users.csv file to see the characteristics of the "purged". Again, I've removed the identifying fields from the data, and I have no way to tell which of these users manually unfollowed me, and which of them are "locked". Remember that "locked" is different from being suspended, and there's no way to tell when visiting an account page to tell that it has been "locked".