What Is NodeInfo?
NodeInfo is an open protocol that allows federated social network nodes to expose standardized metadata about themselves. Using the NodeInfo specification, any interested party — another server, a researcher, a monitoring tool — can discover what software a server runs, which protocols it supports, and basic usage statistics.
It follows the .well-known pattern: a discovery document at /.well-known/nodeinfo points to one or more versioned NodeInfo documents, currently at schema versions 2.0 and 2.1.
The Two-Step Discovery Pattern
NodeInfo uses a two-step lookup to allow servers to host the actual data document at any URL:
Step 1: The .well-known Discovery Document
GET /.well-known/nodeinfo
{
"links": [
{
"rel": "http://nodeinfo.diaspora.software/ns/schema/2.1",
"href": "https://example.com/nodeinfo/2.1"
}
]
}
Step 2: The NodeInfo Document
GET /nodeinfo/2.1
{
"version": "2.1",
"software": {
"name": "mastodon",
"version": "4.2.1",
"repository": "https://github.com/mastodon/mastodon",
"homepage": "https://joinmastodon.org"
},
"protocols": ["activitypub"],
"usage": {
"users": {
"total": 1500,
"activeMonth": 320,
"activeHalfyear": 780
},
"localPosts": 45000
},
"openRegistrations": false
}
Key Fields in NodeInfo 2.1
| Field | Description |
|---|---|
software.name | The software identifier (e.g., mastodon, misskey, pleroma) |
software.version | The running version — useful for security scanning |
protocols | Supported federation protocols: activitypub, diaspora, zot6, etc. |
usage.users.total | Total registered user count |
usage.users.activeMonth | Monthly active users |
openRegistrations | Whether new accounts can be created |
Tools for Querying and Mapping the Fediverse
NodeInfo powers a range of tools that aggregate data across the federated web:
Fediverse Observer
fediverse.observer crawls thousands of federated instances, using NodeInfo to collect software types, user counts, and uptime data. It provides searchable directories filtered by protocol, software, and language.
FediDB
fedidb.org offers statistics on Fediverse growth over time, software distribution, and protocol adoption — all sourced from NodeInfo endpoints across the network.
instances.social
This Mastodon instance directory uses NodeInfo data to help new users find communities that match their interests, language, and openness to registration.
Custom Crawling with curl
You can manually inspect any federated server's NodeInfo with basic tools:
# Step 1: Get discovery document
curl https://mastodon.social/.well-known/nodeinfo
# Step 2: Fetch the actual NodeInfo document
curl https://mastodon.social/nodeinfo/2.1
Privacy Considerations
NodeInfo exposes user counts and activity metrics. While this is aggregate data, server operators should be thoughtful about what they expose. Some considerations:
- Small communities — On servers with very few users, aggregate stats may allow individual identification
- Version disclosure — Publishing exact software versions can help attackers target unpatched instances
- OpenRegistrations flag — Setting this accurately helps prevent spam account creation targeting open servers
Some server administrators choose to omit or round user count figures while still providing software and protocol information.
Implementing NodeInfo on Your Server
If you're building a custom federated application, implementing NodeInfo is straightforward:
- Create a static or dynamic JSON document following the NodeInfo 2.1 schema
- Serve it at a path like
/nodeinfo/2.1 - Create the discovery document at
/.well-known/nodeinfopointing to it - Register your software identifier in the NodeInfo software list if it's a new platform
NodeInfo is a low-effort, high-value addition to any federated service — it makes your server discoverable, monitorable, and part of the broader Fediverse ecosystem's data landscape.