“Build a decentralized social network” sounds like a startup pitch, and for a few years it was one. Crypto-funded projects raised large sums to build Web3 alternatives to Twitter and Instagram. In January 2026 the two best-known ones changed hands within a day of each other. That’s a good moment to look honestly at what decentralized social actually means for a developer today, which protocols are worth building on, and what you can build in an afternoon.
What “decentralized social” means
On a traditional platform, one company runs the servers, owns the database of accounts and follows, decides what appears in your feed, and can change the rules or shut down your account. Decentralized social protocols try to separate those roles so that no single company controls all of them. In practice that usually means:
- Portable identity: your account isn’t tied to one app, so you can switch apps and keep your followers.
- Open data: posts and follows are published in an open format that any developer can read.
- Multiple apps and servers: several independent clients, feeds and moderation services can work on the same network.
The three main approaches differ a lot in how they achieve this, and in how much blockchain they involve.
ActivityPub and the fediverse
ActivityPub is a W3C standard, published in 2018, and the protocol behind Mastodon and the wider “fediverse”. Anyone can run a server (an “instance”). Servers exchange posts, follows and likes with each other using JSON messages over HTTPS. Meta’s Threads has added support for federating with ActivityPub, which has brought more attention to the protocol.
For developers, the appeal is that it’s a plain web standard with no tokens or chains. The trade-off is that your identity lives on a specific server. Moving between servers is supported but your posts don’t move with you.
Every account is an “actor”, described by a JSON document like this simplified example:
{
"@context": "https://www.w3.org/ns/activitystreams",
"id": "https://example.com/users/alice",
"type": "Person",
"preferredUsername": "alice",
"inbox": "https://example.com/users/alice/inbox",
"outbox": "https://example.com/users/alice/outbox"
}
Other servers discover the actor through WebFinger, then deliver activities such as “Follow” or “Create a Note” to the inbox. A real implementation also needs HTTP signatures so servers can verify who sent each message. Unless you specifically want to learn the protocol, it’s usually better to build on existing server software or a library than to implement it from scratch.
AT Protocol and Bluesky
The AT Protocol is the open protocol behind Bluesky. Its design separates the pieces of a social network into distinct services:
- Personal data servers (PDS) store each user’s posts and follows in a signed repository.
- Relays collect updates from many servers into a single stream, often called the firehose.
- App views build the timelines, threads and search that apps display.
- Feed generators and labelers let anyone offer a custom algorithmic feed or a moderation service.
Identity is based on decentralised identifiers (DIDs), and handles can be your own domain name. Because the account’s data is signed and portable, you can move to another PDS without losing your posts or followers.
For developers, the AT Protocol is currently the easiest decentralized network to build on. The public firehose and APIs are well documented, and a custom feed or bot is a realistic weekend project. Here’s a minimal script that posts using the official @atproto/api package:
// npm install @atproto/api
import { Agent, CredentialSession } from "@atproto/api";
const session = new CredentialSession(new URL("https://bsky.social"));
await session.login({
identifier: "yourhandle.bsky.social",
password: process.env.BSKY_APP_PASSWORD, // an app password, not your main one
});
const agent = new Agent(session);
await agent.post({
$type: "app.bsky.feed.post",
text: "Hello from the AT Protocol",
createdAt: new Date().toISOString(),
});
Create an app password in your Bluesky settings for scripts like this. The package’s documentation notes that password-based login is deprecated for full applications in favour of OAuth, which you should use if you’re building something other people will sign in to.
Farcaster and Lens: the Web3 protocols
Farcaster and Lens are the two best-known crypto-based social protocols. Both used blockchains for identity and, in Lens’s case, for the social graph itself. Both had real technical ideas: Farcaster’s “mini apps” that run inside posts, and Lens’s model of profiles and follows as on-chain assets that any app could read.
Both have also had a difficult 2026:
- Lens: on 20 January 2026, Aave founder Stani Kulechov’s team handed stewardship of Lens to Mask Network, which said its focus would be on products people actually use rather than more protocols.
- Farcaster: a day later, Neynar acquired Farcaster, including its contracts, code, app and the Clanker token launchpad. The founders stepped back after five years. Co-founder Dan Romero said that after trying a social-first approach for four and a half years, “it didn’t work for us”. Neynar, which had long provided APIs for Farcaster developers, said it would publish a new builder-focused roadmap.
Neither protocol has shut down, and both still have active developers. But if you’re choosing where to build, you should factor in that their direction is being reset by new owners. Check the current documentation and roadmap before committing to either.
Which to choose
- Want the biggest open audience and the easiest APIs? Build on the AT Protocol.
- Want a plain web standard, self-hosting and no company at the centre? ActivityPub.
- Building something that needs payments or on-chain assets as a core feature? Farcaster or Lens may fit, but plan for uncertainty.
- Thinking of launching your own new protocol? Think hard. The hardest problem in social isn’t technology, it’s getting people to show up. Building on an existing network gives you users from day one.
Realistic first projects
Rather than building a whole new network, most developers get further by building one piece of an existing one:
- A custom feed on Bluesky that selects posts on a niche topic, such as Pakistani tech news or Angular releases.
- A bot that posts updates from an RSS feed or a GitHub repository.
- A moderation labeler that flags spam or a specific kind of content for users who subscribe to it.
- A “share to the fediverse” button for your blog, or letting people follow your blog from Mastodon using a WordPress ActivityPub plugin.
Each is small enough to finish, teaches you how the protocol works, and is useful to real people.
Things decentralization doesn’t solve
It’s worth being clear-eyed about the limits:
- Moderation is still hard. Distributing it across servers or labelers changes who makes decisions, but someone still has to make them.
- Most users don’t care about architecture. People join a network for the people and the content. Ownership and portability are benefits they notice only when something goes wrong.
- Costs don’t disappear. Relays, app views and media storage cost money to run, and someone has to pay.
- Tokens don’t create communities. The Farcaster and Lens stories suggest financial incentives are a weak substitute for a product people want to use.
Summary
Decentralized social is less hyped than it was, and more practical. The AT Protocol and ActivityPub are mature, well documented and have real users, and both let you build useful things without a token or a funding round. The Web3 protocols are in a period of transition. For most developers, the best way in is to build a feed, bot or tool on an existing network, learn how it works, and go from there.
Related reading
- Cross-Chain Swaps for Developers
- Age Verification in the Operating System
- Can Terms of Service Be Updated by Email?
Sources: W3C ActivityPub, AT Protocol, @atproto/api README, CoinDesk, The Block.