Here’s What Threads Needs to Do to Beat X.
What made Twitter awesome, and what Threads needs to do to attain the same level of awesomeness
No intro. No preamble. You know what Threads is, you know what X is. Here’s what Threads needs to do to beat X and be crowned the best microblogging social media platform (which happens to be my favorite medium of social media), a title that now remains unclaimed due to Elon Musk’s brutal murder of Twitter, the previous title-holder. Written by a years-long Twitter user with very strong thoughts on microblogging services (I will use “Twitter” to describe the microblogging service pre-October 2022, and “X” to describe the microblogging service post-October 2022):
Trends
Twitter was the front page of the internet (sorry, Reddit). Why? The ‘What’s Happening’ page. As I wrote on Threads a couple days ago:
Twitter’s trending page is the front page of not just the internet, but the world. MY world. It puts the world’s conversation at the tip of my fingers.
Twitter’s trending page would instantly show me what was happening in my world. If a new iPhone rumor broke out, it would trend. If Technoblade died, it would trend. If Trump tweeted that the election was stolen, it would trend. If a hurricane made landfall on the Florida coast, it would trend. If Biden flamed Peter Doocy for saying something stupid, it would trend. Whenever something stupid happened, it would trend; whenever something influential happened, it would be right there on the right of the Twitter website; whenever the world was talking about something, it was right there. How did Twitter know I was interested in these things? Nobody really knows (including Twitter). But my best guess is that it probably learned what I interacted with the most based on years of usage data (likes, Tweets, hashtags, etc.). It was right almost all of the time, though, which is unusual for even the best of algorithms. (More on Twitter’s superior algorithm, why I think it works the way it does, and how Threads can copy it later in this blog post.)
By just navigating to one website, I could instantly get a bird’s-eye view of what was happening in the world, and what the world was talking about. It didn’t matter if it was important or not — it was real people were talking about real things in real time. Threads does not do that. It doesn’t even come remotely close. ‘What’s Happening?’ was Twitter’s tagline, for god’s sake — it was the placeholder text for the Tweet compose box, and it was the heading for the Trending section of the webpage. It captured the essence of Twitter well — it’s not simply what’s trending, it’s What’s Happening. This is not the news. This is the internet, and I want to know what the internet is talking about.
For Threads to get this right, they need to do 4 things:
- Customize trends for everyone, but also have a national trending page, just like Twitter did. Sports stuff often trends on Twitter. I don’t care about sports. I’m usually just interested in the things the people I follow are talking about. But oftentimes, something from my circle is so big that it trends nationally. I want to know about things that are important to me first, but also things that are important to the country. Show me both. The personalized one should show first, but you should also be able to change this behavior if you want. Meta is a god at algorithms. Threads should use that to its advantage. Pick important keywords from trending threads and display them. Show me where they’re trending and why that topic is being recommended to me. Show me the industry in which it’s trending (e.g. “Sports,” “Music,” “Technology,” “Gaming,” “Entertainment,” etc.) Show me how many people are talking about that topic (e.g. “42K threads in the last hour”). Make sure the threads from that topic are recent (from the last couple hours or day).
- Display personalized topics in the sidebar of the main feed on desktop, like X. You shouldn’t have to navigate to a separate part of the website to get to them (though on the app, it’s inevitable). Pick 5 to display by default, alternate through them frequently (unless one has been clicked on recently), and allow users to view more topics by clicking on the sidebar item (a “Show More…” button would do). Allow users to flag items for spam or policy violations from the sidebar or list of trending topics (so that unfavorable content doesn’t spread further on the platform). Allow people, places, and things to trend — not just events. You don’t need or want hashtags. Hashtags are spammy garbage. Categorize a thread entirely from thread text so the best threads about that topic are shown first. Essentially, copy the good stuff from Twitter, and don’t bring the bad stuff along (e.g. “JUST ANNOUNCED” trending for hours or explicit material showing up for the name of a celebrity [though the latter is an X problem, not a Twitter one]).
- When clicking on a trending topic, show the people involved in that topic first (like if a celebrity is trending, show their profile at the top so that people can easily access it), along with their commentary on the situation (if applicable). Don’t prioritize news articles or threads that link to news articles. Prioritize organic conversation that’s exclusive to Threads. Don’t be afraid to show replies, too — replies are important when things are moving fast and are oftentimes where the bulk of the conversation happens. Prioritize media along with organic conversation — media (photos and videos) is important for context. Use Instagram to your advantage — you know how to rank images and videos. Do that.
- Please, for the love of god, don’t shy away from “hard news.” This is a microblogging platform, not Instagram. It’s Facebook for younger, more liberal people. Hard news is important on a microblogging platform. That’s why Twitter succeeded, and Adam Mosseri’s comments on “hard news” not being welcome on Threads was something I believe contributed to the massive decline in active users. But, prioritize news in industries that typical news organizations wouldn’t cover (new media, technology) over typical hard news (“Man shot up library in Wichita, KS”). This is a microblogging platform with many young people on it — leverage them and their content, not just the content of the major news outlets. Young people want to be heard — facilitate that in the way that Twitter did. Hard news contributes to conversations; conversations stem from hard news. They’re the same thing. You can’t have one or the other unless you want to run a meme website like iFunny (which is what Threads was for the first couple of days, which I think scared away users).
Search
Many opponents of full-text search cite the fact that people’s opinions on a particular topic change over time and that enabling full-text search and search engine indexing on a microblogging service enables bullying. I’m here to argue with that logic: We need full-text search on microblogging platforms so that we can dig up old conversations, understand our previous thought processes, and learn from our mistakes and what other people have told us about our thoughts. On X, I have a six-year-old catalog of all of my random thoughts. Just searching the term from:eshumarneedi "iPhone"
yields a world of results from over the years, from the time I viciously argued that the iPhone 12 Pro was a bad buy (I still stand by that statement, by the way), to that time I incorrectly assumed Prosser's iPhone 14 Pro rumors from 2021 were correct. Sure, some of the stuff I said over the years is embarrassing; it'll come back to haunt me. But that's the point. I want to know what I said and how my feelings changed.
Search is also fantastic for finding old content over the years. That’s necessary as part of a social media platform! I want to look at what I shared when Joe Biden won the 2020 Election — how have my thoughts changed on the presidency over the years? What were the moments of my life I chose to share on the internet, and why did I share those things? Oftentimes, I dig up old Tweets of shower thoughts and retweet them from time to time for humor reasons — kind of like a “Hey, this is what I was thinking 2 years ago.” It’s fun — digging up old content and reminiscing good times is fun, useful, and practical.
This is one of the main reasons Twitter succeeded — years and years of knowledge built up over time was and still is easily searchable via search engines and X’s powerful search tools. Hell, before Twitter killed their API (or effectively nerfed it), tens of hundreds of search tools were created to help researchers and content creators dig up old content. There’s a whole history of memes on X, all searchable with Google Images. X is an endless treasure trove of knowledge, thoughts, and conversations. It’s useful; search makes the service live over time. Posts on X don’t have an expiry date, whereas threads do.
To get full-text search right — which they need to do in order to power Trends — they need to:
- Enable powerful syntax and search parameters. Searching shouldn’t just be limited to a “GUI,” and Threads should allow searching via text parameters. Here’s what I mean:
from:[username]
contains:[image, video, link]
type:[repost, reply, thread, quote]
in:[MM-DD-YY-HH-mm-SS/MM-DD-YY-HH-mm-SS]
mentions:[username]
- You should be able to combine any of these parameters to create a search term or use
-
to exclude threads that don't match that parameter. For example, if I wanted to find threads where I talked about iPhones, but not iPads, between the dates 07-22-23 and 08-24-23, that included images, and mentioned @verge, I would enter this search term:from:eshumarneedi "iPhone" -"iPad" contains:image in:07-22-23/08-24-23, mentions:@verge
. This is powerful - search is used by power users, and it deserves to be powerful.
2. Make threads indexable by search engines. If you search a term on Google and append “X” or “Twitter” to it, Google does a pretty excellent job of finding posts that are relevant to you. Better yet, if you search for a term in Google Images, Google finds posts on X that are relevant to your term as well! Threads should tag threads with keywords (internally) and use ML/AI to tag images and videos depending on their content. Links to threads should be permanent, even if someone changes their username years down the line (“permalinks”). They should just redirect to the correct user. Never break links. Remember that 80% of users are lurkers — they might not even have an Instagram/Threads account at all. They don’t care about Threads, they just want to know what’s happening in the world. Proper search indexing is one of the reasons why hundreds of thousands of journalists chose to break news first on Twitter. They knew their content would be indexed by search engines, they knew that their Tweets would end up embedded in news articles, and they knew people were looking at their reporting even though they weren’t interacting with it. Nerds interacted with content on Twitter because Twitter was inherently a nerdy platform — what kind of dorks care about a service with only 140 or 280 characters? Normal people don’t interact with Twitter content, but they consume it. Threads needs to understand that and make it easier for people who don’t have the “means” (“means” i.e., have an account) to interact with content to find content.
3. Work with partners (Google) to get live Threads content into search. This beautifully ties into my last point. If you’re wondering what this means, go and Google “Joe Biden” right now — you’ll see a carousel of posts from the President on X, and that carousel updates live. Believe it or not, this is how most people consume content on X, and previously Twitter. This is why Mr. Musk (unsuccessfully) tried to limit signed-out users from looking at Tweets on Twitter a couple months ago. He can’t monetize logged-out users (because advertisers demand user demographics data before entering a bidding war), but by preventing logged-out users from looking at Tweets, his usage numbers dropped significantly, which is not good for business! (Not like X is doing very well in the business department, anyway.) Another prime example of this is the “Perspectives” section of Google Search (this is recent, so you might’ve missed it) — it pulls recent posts from journalists on a specific term and updates live, so you can catch up on what’s happening from a variety of different… perspectives, as the name suggests. Threads needs to work with partners — especially Google — to get Threads content into search engines and other places where users consume text-based content. Sports and news TV channels had and still have special ways of bringing in X content into their programming — millions of people view posts that way! I haven’t seen a single thread on TV yet, and that’s too bad! I know that Meta, like Apple in many ways, doesn’t like working with partners. They want to collect user data, they want to advertise to those users using that data, and they don’t want to share any of that precious user data they so painstakingly collected. But microblogging platforms have taken off because they’re versatile. You don’t have to join X to enjoy the benefits of X. It’s not that way with Threads.
APIs
I’ve echoed a theme throughout this blog post: Threads should aim to become the best place for journalists to break news and should stop the “We’re not going to promote hard news” line of thinking before it’s too late. Twitter gave journalists and news organizations the best way to share their content and it gave users the best way to consume their content. But journalists, for the most part, still write articles. Sure, they might promote their articles on X, but many (I’d argue most) of them write for a major news publication that publishes and advertises their work for them. If this was 2008, the answer as to how users consumed these articles would be simple: RSS, or Really Simple Syndication; essentially, a feed of all the latest articles from all your favorite publications all in one place. But since the fall of Google Reader and the subsequent rise of Twitter in the early 2010s, people have come to rely on news organizations auto-posting their articles to Twitter. If something was breaking, it would show up with just a pull-to-refresh of your Twitter timeline. Threads does not have that in its current iteration. Why? My guess is as good as yours, but I’m willing to bet it’s because of Meta’s tight control over its ecosystem. It wants people to post from its official clients, look at its ads, and post organic content that Meta owns the rights to (I assume this is a clause in their terms of use). But I could very well be wrong, and that excites me. Jesse Chen, who works on Threads engineering, posted a thread a couple days ago asking their audience what kind of APIs people enjoyed on Twitter. I counted: 11 people out of the 30-something replies wanted a posting API on Threads to automatically post content.
It makes sense: Much of the “real-time news” aspect of Twitter came from the posting API. Hootsuite, Sprout, Sprinklr, and Buffer are all tools social media managers use to auto-post articles and content for their organizations on X. Vox Media, up until recently, posted all of its articles via its own Chorus CMS. WordPress, up until the X API shutdowns of January 2023, offered a quick way to tweet your new blog posts directly to a Twitter account. Medium did the same — I even used this for a while until X unscrupulously banned my account for some unknown reason. The point is that news organizations wanted to tweet on Twitter, and hundreds of tools (like the ones I mentioned above) spawned due to the free, open API that Twitter had to make auto-posting content easier. Threads does not have an auto-posting API for publishing companies or developers to use. The only way to post your articles on Threads is to have a poor social media manager take the time to copy the link, write up a quick thread, and hit send. And it was worse before the web app came — social media managers had to use their phones to do all that engagement. This is one of the reasons the DAU (daily active user) count of Threads sharply declined after the first few days since Threads’ launch. Social media managers quickly realized that it was unfeasible to run their massive operations off tiny smartphone keyboards, so they simply stopped posting content, which was a death sentence for Threads. Threads came in to disrupt a market that had TweetDeck, for god’s sake — a smartphone app being the only way to post for weeks was an abysmal, irreversible blunder on Meta’s part. It’s embarrassing. It still is embarrassing — Threads needs a way to auto-post articles and the only way that Threads will succeed is if there’s a way for news organizations to spread the word quickly and a way for brands to engage with their audiences quickly.
It’s not just auto-posting articles. Many people joined Twitter just to complain about their things not working. Look at the mentions for @Apple on X — they’re inundated with support requests from people not being able to figure out their iPhones. This is not uncommon — people go to X to ask companies for help; it’s a well-known phenomenon at this point. If someone’s stuck on the runway for 4 hours on a Delta flight, you bet they’re tagging @Delta on X to complain. How do companies deal with these massive amounts of support requests, oftentimes at a rate of thousands per minute? Third-party tools like the ones I mentioned above, which make it easy to send DMs and canned responses for simpler questions. Threads doesn’t have any third-party tools to post from. The only way to post and respond to questions is via the dinky, bad, squished notifications tab of the web interface, which is terribly organized (I’ll get to this later in the blog post). Brands can’t use that to deal with support requests. Hell, the website doesn’t even refresh fast enough to see all of the requests that might come in. Brands know this, which is why they’re not making their presence known on Threads to the extent that they do on Instagram, Facebook, and X. There is no way for brands to be able to do that on Threads in a way that’s manageable, which is a real shame.
For Threads to nail the APIs down, here’s what they need to do:
- Make the APIs free, and “unlimited.” “Unlimited” is in quotes because, well, you can’t make an API truly unlimited without it being susceptible to abuse, but what I mean by “unlimited” is that the API limits should be so large that nobody other than bad actors could run into them. In other words, the limits should be similar to the private APIs Threads uses for their own clients. Also, it’s not just large-scale companies with millions of dollars to spend on APIs that auto-post on X — that was one of the main arguments made by opponents of the new X API rules and prices that went into place earlier this year. Hobby bots made Twitter fun. Take the “Year Progress Bar” countdown bot, for example, or the NASA ‘Picture of the Day’ bot. These bots are hobby projects run by one-person developers. They don’t make money, they don’t aim to advertise anything, and they just… make the platform more fun and engaging for everyone! They’re “good bots,” so to speak. The conversations that could be had below the Tweets these bots made were fun to engage with; they inspired a sense of community. Threads needs to use this to their advantage. X has no API that these hobbyists can use right now. I mean, their only API is $100 a month. No hobbyist is paying that. Threads should offer a free posting and thread retrieval API that allows users to do anything they want on the service (within reason, of course) with a bot that they can make themselves. Bots that can respond to other people’s threads, like those bookmarking bots on Twitter, are important for a growing platform to thrive. Document the APIs well and make them easy to use. I know this is against Meta’s ethos of trying to collect as much data as humanly possible and sending all of that data to advertisers, but if you want your platform to grow, make it easier for people to use it and make the consumer and developer experiences better.
- Enable third-party posting clients, like Buffer or Hootsuite. I’ve made my case for third-party “end-user” clients on that thread by Jesse — and many others have as well — but I just don’t think that’s ever going to happen under Meta’s Terms of Use. But what I think can and should be enabled are third-party posting clients for businesses to use. Partner with content management companies (like the ones I mentioned above) to get Threads working, and work with CMS companies like WordPress to get Threads support built right in. (Heck, I’d love a Medium auto-poster too!) Work with popular brands (like Delta, as a prime example) to build tools to accept customer support requests from Threads users. Enable easy Instagram DM access (I don’t think Threads needs DMs because Meta has way too many messaging products already that they can just integrate into Threads [they already know all of the accounts that belong to you due to the Meta “Account Center”]) via hyperlinks, a button on profiles, and directly from within the API. Bottom line: Make it easier for brands to interact with people on Threads, and enable third-party posting tools that brands and social media managers are accustomed to using. Threads shouldn’t feel like a foreign product when compared to Twitter — it should instead aim to fill the void that Twitter left behind as it transitioned to X. Threads should not try to reinvent the wheel by creating new services and ways of interacting with text-based social media content yet — right now, the market is in crisis. Desperate crisis. Communities are fragmented, none of the services are good (Mastodon and Threads come close, but aren’t quite there yet for the reasons I’ve outlined here), and someone needs to fix that. I believe Meta is the only company that can fix the damage Mr. Musk has done to the market, but to do that, they need to be set on a sole objective which is to make their service as close to Twitter as possible. People crave Twitter, they don’t crave an Instagram/X hybrid. Give them Twitter, not Instagram.
- Make the APIs full-featured. I cannot emphasize this enough: Nobody nerdy enough to develop for a text-based microblogging platform wants a nerfed, half-assed API. The API should have all the features that the web app does (actually, if we’re being specific, more than the web app does — at the time of writing, the web app still doesn’t have quote posts which is laughably hilarious and incredibly embarrassing), including reposts, threaded replies, and profile metadata. Much of the reason Twitter succeeded is because its API wasn’t nerfed, allowing developers to interact with and contribute to the service in a way that was honored by the creators and that also was powerful. You could rightfully argue that Twitter wasn’t profitable until 2020 (and X still isn’t profitable, though that’s due to Mr. Musk’s ridiculous rules around content moderation rather than Twitter as a service not giving a damn about making money) due to this approach (you can’t collect usage data from users who don’t use your official clients), but profitability isn’t everything here, especially for Meta.
- Meta makes enough money on Facebook and Instagram to keep afloat. They haven’t poured much money into the R&D for Threads, from what I can tell, either — the engineers are from Instagram, and the product ideas are all from Twitter. They’re not reinventing the wheel and shouldn’t reinvent the wheel — their sole job is to copy Twitter well enough using their existing workforce and budget. Here’s why this approach makes sense for Meta: They can fix their tarnished brand reputation with just one product… if it’s a hit. Since the Cambridge Analytica scandal, Meta (previously Facebook) has been unsuccessfully trying to wipe its hands clean and restore users’ trust in its services. It’s not working, but they have a good shot this time: Threads. X is not a platform people feel comfortable using right now — it’s home to Nazis, white supremacists, homophobes, and wing-nuts destined to spread hate across the internet. Nobody wants to use that. They’d much rather use a service that… just so happens to use all of their data for advertising. People have accepted that companies on the web use their data for advertising purposes — they’re largely fine with that. But they want the platforms to which they contribute to be properly moderated. If Meta shapes an amazing product with Threads, a sort of “next-generation Facebook” people will switch to it, and Meta (more specifically Mark Zuckerberg, even though I don’t think this app was Zuckerberg’s idea) will be hailed as a hero for saving microblogging services as a product category. They’ll be clean from their data collection scandals. This is the cultural shift that Meta needs and wants. Facebook, for years, has been known as the “boomer app” where your racist uncle posts homophobic memes while sitting on the toilet. This is the reason Threads is branded as “An Instagram app,” and why the word “Facebook” appears a grand total of 0 times in the entire app. This is, at its core, Facebook for young people, but they need to show the world that it’s as good of a product as X with moderation as good as Instagram — all with no connection to that dreaded boomer app. I mean, they’ve won over the youth with Instagram, so it’s possible. This is their chance, and I think it’s in their best interest to put money aside for a second and focus on beating everyone else to gain support from consumers.
Everything Else
Throughout this article, I’ve mostly focused on philosophical “big picture” ideas and concepts. Concepts that I attribute Twitter’s success to. But there are still a lot of smaller UI decisions that I think Threads should just blatantly copy from X. It’s a Facebook product, copying is not a novel idea for them. Twitter, up until Mr. Musk took it over, held up remarkably well as a product, even with 450M monthly active users (mDAU). It was fast, it barely ever went down (actually, when other services, like Facebook, went down, users would go to Twitter to complain about them being down. I have never seen someone complain about Twitter being down on another website except post-Mr. Musk’s murder of Twitter.), images and videos would always load (again, up until Mr. Musk’s takeover and murder of Twitter), and it had every feature anyone could ever want (except for an edit button, which tragically arrived right before Mr. Musk’s acquisition) or didn’t want. Threads is not like that, but I can excuse them right now because the product is only 9 weeks old or something. It’s very early days and I know the team is aggressively rolling out new features to try to catch up to speed. That being said, here’s a (non-exhaustive, this list will change, and when it does, I will post about it on my Threads account) list of things I want Threads to implement soon, and places where I think Threads falls behind even to services like Mastodon (I’ll get to ActivityPub support later and why I’m not too bothered about it at the moment). Ranked in order of importance:
- Speed enhancements. If you have an Instagram account (which I’m guessing you do if you made it this far into this article), go to https://www.threads.net and just admire how embarrassingly slow the website is. The whole website is like that, it’s not just slow to load the timeline. I have a pretty speedy internet connection — over 350 Mbps down and over 10 up (if that upload speed sounds dog slow to you, you either live in a metropolis with fiber internet, or you’re European — either way, I envy you) — but Threads is unbelievably slow. Every page loads slowly. I even performed a test to see if I was just going crazy, and my results affirmed my suspicions: My Threads chronological timeline (via the mobile app) takes nearly twice as long to refresh as my X one,and my algorithmic timeline takes nearly five times longer to fetch new threads than my X one does. I follow roughly the same amount of people on both services (actually, I follow more people on X), but it’s still obscenely slow. The whole app is slow and that makes it very difficult to use. I think Meta knows this because if you hit the Threads logo at the top-left corner of the Threads webpage when you’re viewing a thread (as in, one level deep in the navigational structure), the progressive web app (PWA) doesn’t reload your timeline automatically. You have to double-click it for a new network call to be triggered; if you just click it once, it only works as a home button. The timeline also doesn’t “auto-refresh” in the background, as X’s does, which is even worse in my opinion. I should not need to refresh the timeline myself when Threads is sitting in a browser tab doing nothing. I’m unsure why a Meta product is so slow — perhaps it just needs more work and optimization? Even Instagram isn’t this slow.
- As I mentioned in the linked thread I wrote earlier, a major part of the “What’s Happening?” nature of Twitter was that the app and website were fast. Lightning fast. When a major news event was happening, every refresh of the timeline would result in tens of new Tweets being loaded in a split second. On the website, you wouldn’t even have to refresh — the website would automatically refresh as soon as new Tweets were tweeted, showing you the latest on what was happening. It was so fast, that sometimes I could even see the timestamp on Tweets say “Now” (on the website) because the Tweet was just tweeted. And with apps like Tweetbot, which I frequently used on the Mac, I could just keep a window open off to the side, and the timeline would automatically refresh with the world’s latest thoughts and trends. Dan Frommer, editor-in-chief of the website “The New Consumer,” wrote a Tweet to Jack Dorsey, former CEO and founder of Twitter, when Twitter discontinued Twitter for Mac in 2018 (they later replaced it with a Catalyst version in 2019, but X hasn’t touched it since so I consider that one dead too) that perfectly explains why a native app, or reliable, fast auto-refreshing timeline on the website, is important for a microblogging service like Threads. Dan wrote:
Twitter on the web feels like a static product. Like something you open, read, and close. Twitter for Mac made it feel alive; a never-ending conversation, in a way even the best mobile clients don’t. Really too bad.
- “A never-ending conversation.” So well-put. A well-designed microblogging website needs to feel like a never-ending conversation, not one that you open and close. That’s what made Twitter awesome. It comes back to my point about trends earlier in this blog post: Twitter has a “What’s Happening?” nature to it that makes it addictive, but not distracting. It thoughtfully notifies you of what’s happening in the world without you having to actively seek out what’s happening in the world. A Trends section of the website that lives in the sidebar would do a lot for Threads in this regard, but so would speed enhancements. One can’t work without the other — what’s the good in static trends that don’t accurately reflect what’s trending now? Threads doesn’t feel “live” at the moment, and I always feel like I’m reading things a bit late on there. Other people have noticed this too, which is why they don’t feel inclined to post things as they’re happening on Threads. Threads feels like Instagram, in the sense that I only see people talk about things after they’ve happened, and not while they’re happening.
- Much of this is exacerbated by a bug in the Threads PWA and app where the algorithmic feed frequently reshuffles old threads and rarely reloads new ones even if you keep refreshing for new ones. Bugs like this shouldn’t be occurring on such a frequent basis. I’m rarely ever able to see new threads on the website even if I keep refreshing the webpage, which is not how a microblogging service that aims to spur real-time conversations should work; it kills the “What’s Happening?” nature of websites like these. The timeline should auto-refresh with new, interesting, and most importantly, recent threads. That’s how you keep the “never-ending” conversation going. Twitter built up so much engagement over the years because all the nerds kept it open in a browser window or app window on the side while they were doing other things. Whenever something was breaking, everyone would respond to it and each other all at the same time. That’s not the case with Threads, and much of it has to do with the app and website being slow, buggy, and repetitive.
2. Algorithm improvements. I can’t believe I’m saying this, as Threads is a Meta product made by the criminal masterminds at Facebook — you know, the ones that made the News Feed — but the Threads algorithm is dogshit compared to the Twitter one. (I try not to swear in these posts, but man, no less-obscene words describe how furious I am at this algorithm.) This is just anecdata, but other people have also experienced the Threads algorithm being horrible at finding posts that they’re interested in. It seems to me that this is how the Threads algorithm ranks threads:
- Threads and reposts from people you follow, ranked based on how “trendy” they are (impressions divided by engagement or time since the thread was sent divided by engagement).
- Replies to other threads from people you follow to people you may or may not follow (replies from people you follow to people you follow [mutual replies] are ranked higher).
- The “trendiest” threads from all over the goddamn universe, ranked based on “trendiness” (time ÷ engagement).
It’s part 3 of this equation I’ve surmised is the main issue. I don’t want threads from the whole goddamn universe in the timeline. That’s why there should be a “Trends” tab! I don’t always care about what’s trending in the world, I want to know what’s trending in my world. Before I got unscrupulously banned from X, my timeline was filled with things that I cared about. My Threads timeline — even though I’m a “hardcore” user of the service — is full of crap that I really couldn’t care less about. I’m not even sure the topics are actually trending on Threads, either. Many of them only have 2 likes or something. I find some good links in there from time to time, but the amount of thirst trap accounts I’ve had to mute in just the last week is mind-boggling. It’s just… models! Models whom I’ve never heard of and models whom I don’t care about. Bear in mind that Instagram has 6 years of usage data from me that they can use to recommend posts to me that they know I’ll like. Instagram knows I like tech! Instagram knows I care about U.S. politics! Why doesn’t it use that data to show me things I actually want to read? Threads doesn’t even need a good algorithm to be good at this (Twitter is not good at ML, for god’s sake, most certainly not as good as Meta). Just do what Twitter did and rely on my friends’ likes. 3/5 of the posts I find via X’s algorithmic timeline are posts that people I follow liked. When I tap on one, a little blurb appears at the top that says exactly who liked it. If I like more posts from that user, X learns and feeds me more, recent posts from that user. It’s a simple algorithm, but somehow, Threads falls flat at this. I don’t know why. Use data from other people whom I follow to recommend things. If someone I like likes something, there’s a really good chance that I’ll like it too. That’s why likes were public on Twitter ( you can now hide them on X if you pay for X Premium). It’s a simple social graph, and it worked. If someone you knew followed someone else, they would appear higher than if nobody you knew followed that person.
As Casey Newton notes in Platformer (paywalled), most users hate chronological timelines, or at least don’t use them. Threads knows this, which is why they make the chronological timeline hard to get to. It doesn’t remember if you’re on the chronological feed or not, and the only way to get to the chronological feed is by… double-tapping the home tab bar item (or hitting a small button in the bottom-left, if you’re on the website). As a nerd, I think they should at least give us the option to pin the chronological feed on the web app and mobile apps, but they’re not going to listen to me unless I live in Europe, a place that Threads isn’t even available in due to the EU’s ridiculous insistence on controlling the speech of private citizens by enacting laws that tell tech companies how to behave. Sorry, I realize I’m getting off-track here. The point is, essentially every non-nerd user of any social media platform uses the algorithmic timeline, so it has to be the best. And Threads’ algorithmic “For You” timeline is not the best. It’s not as good as Instagram, and it’s not as good as X, and that’s a big problem for Threads’ user retention. This is the reason nobody stuck around on Threads (well, also, the lack of a web app at launch contributed to the death, but the truth is that more people use social media on their phones than on the desktop) — the algorithm for the first few days was shoving everyone’s “Hey, I’m on Threads!” posts on everyone’s timelines, and nobody’s interested in that. Now, a month and a half into Threads’ launch, my timeline is filled with dorks writing “Is anyone still on here?” 12 days in a row. Normal people, who don’t read 10,000-word blog posts about microblogging platforms in their spare time (unlike you, dear reader ❤), do not want to read about social networks on social networks. It’s common sense, they just want to talk to their friends! X is actively silencing speech about alternate social media platforms (paywalled), and Threads is full of people saying they’re on Threads. Tell me: Which one sounds nicer to a normal person?
The bottom line is this: Users rely on a service’s algorithm to determine if that service is interesting to them or not, and as a nerdy user who pays attention to what people are saying about social media products, I can say that Threads’ algorithm does a horrible of justifying Threads as a product that’s worth people’s time. (I can also say that Threads is absolutely worth people’s time, more so than Mastodon, Bluesky, or T2.) That’s why users have left. Threads needs to work on their algorithm, recommend more interesting threads, and fix that pesky bug that shuffles the same 5 threads over and over again. An algorithm should be very high up on this list of “Things Threads needs to nail.” It’s the main way content gets served to users. If the algorithm isn’t good, people automatically (and incorrectly) assume the product isn’t good. (See: Apple Music.) Threads’ algorithm is slow, repetitive, buggy, and not personalized enough, and they need to use engagement data from people I follow to recommend new users and threads, as X does. (Hell, if Threads engineers want to go take a peek at what X is doing over there, they’ve open-sourced their code for everyone to view. I don’t understand Scala, the programming language ‘The Algorithm’ is written in, but if you do, take a peek.)
3. A complete gut and redo of the way notifications are handled. People who post a lot on Threads get a lot of notifications, it’s just how social networks work. The more you post, the more people interact with your posts; common sense. So, if you want to inspire accounts that post a lot to respond to replies, your notification system has to be good. Twitter’s notification system was… not good. But it was better than Threads’, and that’s all that matters here. Though, apps like Tweetbot and Twitteriffic made the situation much more bearable, especially for large accounts (which is another reason why Threads should enable API access for consumer third-party clients, but as I said earlier, I’ve already lost that fight). First, a notification badge is in order (I said these were going to be small UI feature requests, not big requests that I already discussed earlier). The dinky little red dot that exists now only appears in the app, and it’s inconsistent when it does appear. On day one of Threads, the engineers made the terrible mistake of enabling crappy haptic feedback whenever you received a new notification. As the website was popping off with new users all at once at the time, the feature became ridiculously annoying and was quickly pulled from the next build. Rightfully so. Instead of this mess that we have now, a bubble with the number of notifications you have unread should appear right next to the notifications icon, similar to X. The accent color should be white/black, not red, and the text should prominently show the number of grouped notifications you have unread.
What do I mean by “grouped” notifications? Well, the way Threads groups notifications right now is… stupid, quite frankly. Take likes as an example: If 1–3 people like your thread, each one shows individually (e.g. “User X liked your post.”). Once 4 or more people like your thread, they’re grouped, irrespective of how much time has gone by since your thread was created or since the thread was liked last. This is not how it should work. Heck, even Mastodon handles this better. If 2 or more people like a thread, both notifications should be grouped into and handled as one single notification (e.g. “User X and User Y liked your post,” or “User X, User Y, and 37 others liked your post.”). In this example, as such, the badge should only display an unread count of “1” unless the notification type is different, such as a repost (e.g. “User X, User Y, and 37 others liked your post” and “User Z, User A, and 12 others reposted your post” should be 2 notifications, not 1 or 49, even if the users that performed both actions are the same [they aren’t in this case for clarity reasons, but you get the idea]). Mentions, quotes, and replies should always be handled as separate, individual notifications, even if the same user replied to and quoted your thread (that would make 2 notifications). The current system is way too messy. Right now, if 5 people like your thread, you get 3 notifications. That makes no sense! Consolidate notifications the way everyone else (except for Instagram, for some asinine reason) does.
The notification badge should always appear if a user has unread notifications. The count can be truncated on the app for space reasons (e.g. 1–9 unread notifications get no truncation, 10–20 can be displayed as “10+,” and over 20 can be displayed as “20+”), but the web version should accurately show how many unread notifications a user has (e.g. 23, 49, whatever). Notifications should also be delivered instantly. I mean, within seconds. There should be virtually no delay between a mention arriving and me seeing the badge. That’s how you maintain the conversational nature of Twitter; everything has to be speedy. I shouldn’t have to refresh my notifications list manually — new notifications should come in fast and I should be alerted of them quickly while I’m using the app (also, please don’t add a “notification banner” of sorts in the app; just a badge will do). Here’s another detail that’s important for good UX: When the notification tab is opened, the new unread notifications should be briefly highlighted in the list to let the user differentiate between new and older notifications without looking at the timestamps. Look, I don’t know when I last opened the notifications tab (it’s hard to keep track without a proper unread notifications badge…). Just tell me which notifications are new and which ones I can safely ignore since I already read them. This can be accomplished via an unread indicator of some sort, but I’d like it if Threads did it just like X does. On X, new notifications are just briefly (for less than a second) highlighted using the app’s accent color, and the list scrolls up from the last notification I read. This visual distinction lets me know exactly which notifications I need to read in a non-obtrusive manner that also doesn’t require me to hit a “dismiss notifications” button when I’m done reading (which I have to do on the Mastodon web client). If unread indicators somehow don’t fit the Threads design ethos (once again, I’m no UI designer), at least do what Ivory does and remember the scroll position in the notification list so I know where I last stopped reading. (But really, unread indicators that appear briefly would be nice.)
As you can tell, I have very strong, nit-picky opinions on the way notifications should be handled on a microblogging service. I want to be constructive here, too, so I will say that I really like Threads’ filtering options in the current iteration of the notifications tab. It makes it much easier to manage large amounts of unread notifications. But the real-time notification aspect of Twitter was integral to its success, or so I believe. Seeing a Tweet go viral in real time was not only a serotonin boost — something important for retention — but was also a way to interact with people who… wanted to interact with you; people who enjoyed what you said or had something to add. It inspired engaging conversations that onlookers enjoyed, and that ultimately contributed to the growth of the platform. So many people joined Twitter because they went “Hey, that’s an interesting conversation, maybe I should add to that!” Threads lacks that feeling of community — notifications are not “real-time” like they are on X and Mastodon (they might be on Bluesky too, I just haven’t used that service all that much), and that needs to be fixed. I attribute part — but not all — of that failure to the slowness of Threads I discussed earlier. But the UI needs a massive overhaul. Notifications are one of the most under-baked parts of the Threads interface, in my opinion, and that’s not very good for interaction or spurring healthy, interesting back-to-back dialogue. These opinions I have about notifications might not suit everyone’s tastes. I know John Siracusa is probably ranting in a corner somewhere about there not being a “unified timeline” — that is, a timeline where mentions and threads from people you follow are all in one, central timeline — but that’s why we need third-party clients. (I’m not going to divulge on that rant further — you’ve got to pick and choose your battles.) This is the way Twitter does notifications, which I personally find pleasing and sensible. But everyone’s tastes are different. This article is not about them. This is about how Threads can beat X, and this is the way to beat X — by copying them. (Except don’t copy the Nazi problem.)
Epilogue
I haven’t covered a lot of things in this article, things that really do bother me about Threads. Like how the iOS app doesn’t remember your timeline position after the app is killed by iOS in the background, or how the iOS app doesn’t have context menus when you hold down on an image or thread, or how the media player in the iOS app is true garbage (I mean, come on, it doesn’t even use the Now Playing API to pause your background audio, let alone support scrubbing, Live Text, etc.), or how the app and website both lack an OLED-optimized dark mode, or the tens of features missing from the web app that are present on the iOS app. I recognize that Threads is a work in progress and that the engineers are diligently developing new features and tweaking things all the time. I appreciate that, seriously! On the off chance that a Threads engineer is reading this, thank you! You’ve made a great product. But it’s far from done, and it needs to do a lot to beat X. It’s competing with X; it’s getting there. But there’s so much work to be done to get the masses interested in it.
And that’s what I’m trying to highlight here: The masses — though to a lesser extent than Mastodon — aren’t interested in Threads very much. It’s evident by the mDAU numbers on Threads: 10M. They were when it first came out, though, because the masses are sick of X. They want a new app, but the new app isn’t very good. That being said, they’re not going to become interested in Threads again if all they focus on is OLED dark modes and native context menus. The masses want a product that is fundamentally better than X in every way. They’ll excuse a slightly ugly app — hell, Instagram doesn’t have any of the features I described and everyone uses Instagram. I’m going to excuse the lack of an iPad app, the privacy concerns in the Meta world, and the zillions of details that infuriate me about Threads. Those don’t matter. The people matter, and I will be wherever the people are. Because, at the end of the day, the people make or break a social network, no matter how crappy it is. People put up with the China-backed TikTok even though it’s a privacy nightmare. Why? Because everyone’s on it — nobody wants to miss out on the next trend, do they? But Threads isn’t the home of any trends — yet. It can be, and it should be. It has the potential to be. They have over 125 million users for god’s sake, they’ve just to reel them back in! Hell, most of them still have the app installed on their phones! Their biggest competition here is a sinking ship where 40% of the mDAU is comprised of OnlyFans girls, crypto bots, sextortion scams, and gambling ads owned by a billionaire who’s openly admitted to everyone that his mission of “Restoring free speech in America while building the ‘X, the everything app’” might fail after all. The competition’s employees are busy replacing bird logos across the site with Unicode X characters the company doesn’t even have the rights to in lieu of checking the trust and safety email inbox for wrongfully-suspended account appeals and bot reports. Nazis and white supremacists dominate the search results of nearly every term. Verification is a mess, with multi-billion dollar companies being impersonated daily, sliding into the DMs of unsuspecting customers, robbing them of thousands of dollars. The competition’s app is a UX nightmare, with floating translucent tab bars and thousands of lines of custom UI code that bogs down users’ devices and kills battery life. The competition’s new privacy policy gives them the right to collect biometrics data, job history data, and other personally-identifiable information from their users and the right to use that data to train artificial intelligence models owned by Mr. Musk. The competition has no staff to fix the site when it goes down, staff who are all at the whim of someone who doesn’t know how to run a social media network, and someone who publicly (and somehow proudly) states the company is running at a 50% loss while the CEO polls her audience on how many Xs she should append to her handle instead of rescuing a company she’s in charge of that’s on the brink of bankruptcy. The competition is easy to beat here. Meta can do it. It’s Mark Zuckerberg versus this X fuckery, and any sane-headed human being would place their bets on Zuckerberg winning this fight.
Threads is very committed to appeasing the nerd crowd by enabling ActivityPub federation on Threads. (I will not bother to explain ActivityPub here. You just read 8,000 words about social networks for god’s sake. If you don’t know what ActivityPub is, I don’t know what you’re doing here.) While I think it’s admirable that Threads wants to make Threads decentralized, I don’t think this is particularly important to the growth of the platform. Don’t get me wrong, I am in favor of decentralization for the same reason all of the other nerds are in favor of decentralization — if any of these services undergo unfavorable moderation changes, leadership changes, or worst of all, fall entirely, there’s a backup so that you can keep your followers. If Twitter was decentralized, we wouldn’t be in the same pickle we’re in now. Everyone would just move their followers and content to another service and continue as normal. Threads, by promising ActivityPub federation, is trying to skirt antitrust regulation and scrutiny from nerds who are understandably weary about putting all of their eggs in one basket controlled by a multi-billion dollar social media company known for harvesting user data. If Zuckerberg decided “Hey, let’s allow Nazis on Threads” one day, everyone could just move their data over to a Mastodon service or whatever. However, this kind of “openness” only concerns the most nerdy of users. Most people don’t sign up for a social network with the thought in mind that it might fail someday. People trust Meta, and rightfully so. If Meta allowed Nazis on Threads, all of their shareholders would flame Zuckerberg and have him ousted from the company. (Though, theoretically, Meta could be bought by some other Nazi billionaire, which is never going to happen.) But, once again, I cannot state enough that I want Meta to enable ActivityPub support on Threads, and I believe that Meta will (unlike many skeptics, who don’t believe that Meta is that good of a company. It’s not about Meta being a good company, it’s that they want to chase regulators off their tail.). I just don’t think that it’s all too important to the growth of the platform. Not as important as full-text search, trends, speed improvements, or other UI enhancements that will attract people to and retain users on Threads.
ActivityPub support will indeed fix many of these issues with Threads. Mastodon’s UI — though not perfect — is more polished and runs faster than Threads’ (for the reasons that I’ve outlined throughout this blog post). But I feel like that’s the wrong approach. When non-nerds complain about Threads not having “X” feature or not looking like “Y,” the solution is not to say “Oh, you should transfer your following to a Mastodon account!” Most normal people want nothing to do with Mastodon and the ones that do already have accounts on there. Sorry, Mastodon people. I’m a Mastodon user myself, and it did not take me long to figure out that most people don’t want to use Mastodon. Think of it this way: X is Windows, Threads is macOS, and Mastodon is Linux. Windows is the most popular of the three offerings, but it’s not the best. The OS is plastered in ads, its design isn’t consistent, and it’s made by Microsoft, a company more interested in selling you Microsoft 365 than making a great, bespoke desktop operating system. macOS, though it might not have all the features of Windows, nor the critical mass of Windows, is more well-designed and intuitive; it’s made with a purpose. It works well with other Apple devices, which many Windows users use (like the iPhone and iPad), and runs on hardware that’s much better, albeit much more expensive in many cases. And then we have Linux, which seems great on paper — with more choices and options — but lacks critical mass. Why? Because it’s not intuitive; it’s not made for end users who just want to get stuff done. To get into Linux, you need to figure out which distro you want to run (which is not common knowledge), what hardware you want to run it on (no hardware comes with Linux on it to boot), and you need to work out all of the kinks with drivers and and the programs you want to use. Nobody develops for Linux, the community is small, and it requires a lot of tinkering. That’s Mastodon, and that’s why nobody wants to deal with Mastodon. Nerds on Mastodon love poking fun at the general public for “not even being able to pick a server,” but what they fail to realize is that kind of shaming, in part, makes people lose interest in Mastodon. The community is small and mean. Mastodon is not very diverse. It’s mostly middle-aged, straight, white men poking fun at the rest of the internet for “supporting Nazis” just because they use X. News flash: That’s not fun for most people. And the middle-aged, straight, “liberal” white men on Mastodon are strongly opposed to federating with Threads because Threads is owned by Meta and the sentiment on Mastodon mostly seems to be “Meta bad.” If and when Threads federates, it will be met with strong opposition. Many Mastodon instances will face pressure from their users to defederate Threads. The point is, Threads should focus on improving their product first before adding value to other products that might not even want Threads to federate with them! The goal is to defeat X, and 99.99% of X users don’t care about Mastodon, federation, or decentralization. Controversial take incoming: Threads should stop working on ActivityPub support for right now until their product is as good as X from a technical perspective.
The masses are interested in a product that’s 1. Stable, 2. Fast, and 3. Powerful. Threads is only 2 of these things right now: Stable. It has not gone down since its launch, which is very admirable. Nice work, Threads team! Threads is one of the fastest-growing internet services of all time, and Meta did an awesome job of keeping it online. But now, they’ve got to make their product awesome. It feels rushed and incomplete right now in its current iteration. Many Threads users feel the same way as I do about the UI, describing it as “glitchier” than X. Yeah, it is glitchier than X. X feels like a fully-developed platform (because it is), whereas Threads feels barebones and unwelcoming. That’s what I’ve tried to describe in this blog post: Why Threads feels barebones. It’s slow, notifications aren’t grouped properly and aren’t in “real-time,” it’s missing trends and search, its algorithm is chaotic and uninteresting, it’s missing APIs for developers and publishing companies to use to interact with users, the web app is incomplete, the mobile app is far from done, threads aren’t indexed by search engines causing a major discoverability issue, and together, these issues form a product that’s unable to retain users. Threads has the users because Instagram has the users. They’ve just got to reel them in, and that’s part two of the Threads journey: To get the users to open the app on their phones again. I’m excited, and I have hope that Meta will do something amazing here. They’ve just got to just keep swimming. 🧵