A while ago I decided to delete my ‘like’ history on Twitter.
Since then, I’ve discovered interesting ways in which Twitter’s engineering makes it impossible to do.
The recent ones are easy, if you have access to the Twitter API. You can request the list of ‘favorites’ (they never renamed them to ‘likes’ on the API layer) and from there you can delete them, one at a time.
#!/usr/bin/env python3
import os
import twitter
api = twitter.Api(
os.environ['CONSUMER_KEY'], os.environ['CONSUMER_SECRET'],
os.environ['ACCESS_TOKEN_KEY'], os.environ['ACCESS_TOKEN_SECRET'],
sleep_on_rate_limit=True
)
while True:
favorites = api.GetFavorites(count=200)
if not favorites:
break
print(f"GetFavorites(): Received {len(favorites)} status objects.")
for status in favorites:
print(f"{status.user.screen_name:20}: {status.text}")
status = api.DestroyFavorite(status_id=status.id)
From the looks of things, you can delete the most recent 3,000 or so ‘likes’ you’ve ever made using a script like this.
After that, things get harder.
I’ve been thinking about what a ‘like’ on Twitter and Facebook means.
When you click it, you’re sending a single piece of information to the person who wrote the tweet. Ostensibly, I guess, that you liked their tweet. Really it’s just read-receipt for Twitter — you’re just telling someone that you read what they wrote. If you’re mentioned in a tweet it seems almost fait accompli that you’re going to hit ‘like’. It means “yeah yeah, I got your message”, and not much else.
After that, it just sits there, in your history, and in Twitter’s database. It becomes part of their algorithm to tune your feed to keep you hooked.
Once you’ve deleted all the ‘likes’ that the API will allow you to see, you’ll find, to your surprise, that there are still thousands to go. They show up on your ‘likes’ page, and they show up in your exported data archive, but the little red ‘heart’ isn’t active.
I guess these ‘likes’ are in some sort of static cold storage. I’d be fascinated to hear from a Twitter engineer (a) how it works, and (b) why they still work for Twitter.
You can’t delete them, the platform doesn’t treat them as ‘liked’ tweets at all.
The only way to get rid of them is to is to click the heart twice: to ‘like’ it anew and then ‘unlike’ it. This sends the author and anyone mentioned a fresh notification telling them that you liked their tweet.
If you want to delete your old history of tweets. You’re going to have to send a new notification to every single person in every single tweet you’ve ever liked. Thousands upon thousands of them. For tweets that can be years old.
I like it when people like my tweets. I come up with witty, snarky things to say so that people click ‘like’. I want to write more of them. It keeps me coming up with ‘tweetable’ things to say.
At its most cynical, “like” is the endorphin button: Every time you like someone’s tweet you’re sending them a tiny little burst of pleasure that keeps them addicted to Twitter.
The sad thing is, the better you are at twitter — the better you are at pithy, wry sarcasm in short form — the more effective you are at keeping everyone else addicted to an intentionally-addictive platform.
We all are each other’s drug pushers.
The only way someone won’t get a notification when you “like” their tweet is if (a) they don’t follow you, and (b) you set your account to ‘private’ mode first.
To get an exhaustive list of the tweets you’ve liked, you have to download your Twitter “data archive”, a .zip
file of all data Twitter keeps on you (that they want to admit to). In the date/like.js
file is the list of all the likes, along with their ID numbers.
This would be enough to use the API to ‘like’ and ‘unlike’ each tweet, but if you want to reduce the disruption to others you need to take more steps.
I used the Twitter API to retrieve the full details of every Tweet in the list so that I could group them by author and by accounts mentioned in the Tweet. I ended up writing some unreasonable amount of Python and SQLAlchemy code to correlate them all.
My plan was to group the operations so that I could (a) prevent notifications to strangers by being in ‘private mode’ whenever I was running my program, and (b) when it came time to disrupt my friends’ by sending them notifications, I’d try to group them all so it all happened at once instead of spread out over interminable days of hundreds of notifications.
It would be hundreds, after all: your likes are pretty proportional to the tweets you see. The tweets you see most tend to be the friends you’ve followed the longest.
I started working my way through the list. A couple of times a day the routine was:
- set my twitter profile to ‘protected mode’
- start my script. Watch it chug through ‘liking’ and ‘unliking’ a stream of tweets
- crash when the rate limit was hit
- reset my Twitter profile to ‘public’ mode
- wait a couple hours, and repeat
For friends of mine who’s tweets I’d liked *hundreds* of times, I either blocked them first so they wouldn’t get notifications (knowing I could unblock them afterwards, and invite them to re-follow me), or I tried to message them first to warn them that I was about to spam them.
For the people who get scores-to-hundreds of notifications, having this tweet pinned on the top of my profile would at least give them some explanation as to what the hell was happening.
It definitely weirded people the hell out though. Some of my friends politely removed me till it was done.
I also accidentally re-started conversation threads left hanging years previously, thanks to the fresh notification on an old tweet.
But finally, after about two weeks of running the script at least once a day until rate-limited, I had finally deleted all my likes. Finally, I had a clean slate.
Only, I didn’t.

You can’t delete a like on an old tweet without ‘liking’ the tweet again.
It turns out that there are plenty of tweets old tweets you might have hit ‘like’ on once, but you can’t see any more.
Tweets from deleted or suspended accounts remain in the count even if they’re not visible by the system. Tweets by people who you don’t follow who have protected their accounts are inaccessible.
Tweets that you liked, by Twitter users who have subsequently blocked you, can never, ever by removed by you.
And so, at the end of the day, I can no longer see my liked tweets, but maybe you can. And some of the tweets will be people who no longer follow me, and some of them — there forever — will be from people who loath me.
What was the point of all this?
When it became obvious that I wasn’t going to be able to delete my like history without sending thousands of notifications. I decided to press on with the project because I wanted to see exactly what social cost Twitter would exact upon me, just for trying to reclaim my own data.
I didn’t measure how many people unfollowed me, but I certainly got some bewildered reactions. I had friends reach out to me out-of-band to ask me if my account had been hacked.
And for all that, it turned out to be un-completable. Twitter will not allow you the means to completely wipe your “like” history short of actually deleting your account.
‘Likes’ might not seem important. But it’s critical to the sorts of algorithms social media use to tune their feeds to keep you hooked, and to target you with advertising. They’re also a paltry, lazy mode of communication. From now on, if I like someone’s tweet, I’ll conjure the mental effort to at least tell them so, with words.

Aww, there’s no WordPress like button! 🙂
LikeLike
I stopped using ‘like’ when it became a little heart, a symbol which I would simply never use IRL!
I then went back and manually removed a bunch of likes back to a particularly meaningful one, and stopped there basically.
You and I must be on the outlier list of “freaks who don’t like”!
If I like a tweet these days I reply or retweet, or very very occasionally bookmark, which was what I used the old star icon for.
Rgds
Damon
LikeLike