WebFinger JRD Builder (RFC 7033)
Build a JRD (JSON Resource Descriptor) for WebFinger (.well-known/webfinger) responses with acct: subject, aliases, properties and links (rel, type, href) — as used by Mastodon/ActivityPub.
Como servir
O documento deve ser servido em https://<dominio>/.well-known/webfinger?resource=acct:user@dominio com Content-Type: application/jrd+json. É a base do WebFinger (RFC 7033) e por isso Mastodon/ActivityPub conseguem descobrir o perfil de qualquer servidor a partir de um identificador @user@dominio.
WebFinger and the JRD: how the Fediverse finds people
WebFinger is the discovery protocol defined by RFC 7033 (September 2013) that turns a human-friendly identifier — [email protected] — into a machine-readable description of where that user actually lives on the web. It is the substrate the Fediverse runs on: Mastodon, Pleroma, Pixelfed, GoToSocial, Misskey, Akkoma and the federated previews of Meta Threads all walk WebFinger to resolve @[email protected] before the first ActivityPub message can be delivered. Without WebFinger there is no federation.
A WebFinger response is a JRD (JSON Resource Descriptor) served from a fixed endpoint with a specific content type:
GET /.well-known/webfinger?resource=acct:[email protected] HTTP/1.1
Host: example.com
Accept: application/jrd+json
200 OK
Content-Type: application/jrd+json
Access-Control-Allow-Origin: *
{
"subject": "acct:[email protected]",
"aliases": [
"https://example.com/@alice",
"https://example.com/users/alice"
],
"links": [
{ "rel": "self",
"type": "application/activity+json",
"href": "https://example.com/users/alice" },
{ "rel": "http://webfinger.net/rel/profile-page",
"type": "text/html",
"href": "https://example.com/@alice" },
{ "rel": "http://ostatus.org/schema/1.0/subscribe",
"template": "https://example.com/authorize_interaction?uri={uri}" }
]
}
The acct: scheme and the .well-known path
The acct: URI scheme (RFC 7565) was designed specifically for this — acct:[email protected] means "the account named alice at example.com" without committing to email, ActivityPub or any other protocol. The /.well-known/ path comes from RFC 8615; the WebFinger endpoint is one of the most-deployed entries there, alongside /.well-known/openid-configuration and /.well-known/security.txt. WebFinger replaces the legacy XML format XRD from OpenID 2.0 — the JSON-only shape is dramatically simpler to serve from a static file.
Mandatory link relations and CORS
For Fediverse interoperability the essential link relations are:
selfwithapplication/activity+json— the ActivityPub actor URLhttp://webfinger.net/rel/profile-page— human-facing HTML profilehttp://ostatus.org/schema/1.0/subscribe— remote-follow templatehttp://schemas.google.com/g/2010#updates-from— Atom feed (legacy OStatus)
CORS is non-optional: serve Access-Control-Allow-Origin: * or Fediverse web clients will fail silently. The endpoint must also accept a resource query parameter that may URL-encode the colon as %3A.
Operations, cache and privacy
Real instances cache WebFinger responses for hours — Cache-Control: max-age=3600 is typical. Mastodon rate-limits incoming requests aggressively (the Threads–Mastodon federation rollout in 2024 stressed this). Privacy concern: a public WebFinger endpoint confirms account existence — useful for legitimate discovery, but an enumeration surface for harassment. Some instances (sharkey, akkoma) allow authorized fetch: signed HTTP requests required even for WebFinger. The Brazilian Fediverse hubs (mastodon.com.br, ursal.zone, bolha.us) all expose standard WebFinger.
FAQ
Do I need WebFinger if I run an ActivityPub server? Yes. ActivityPub itself does not define name-to-actor lookup — WebFinger is the de-facto bridge between handles and actor URLs.
Can I disable WebFinger for privacy? Some instance software lets you require authentication (AUTHORIZED_FETCH=true). Disabling entirely breaks federation — you can be followed but only by people who already know the actor URL.
Why application/jrd+json and not plain application/json? RFC 7033 mandates the JRD media type — strict clients reject responses served as plain JSON.
Does Meta Threads use WebFinger? Yes — the Threads federation gateway exposes WebFinger for opted-in Threads accounts since 2024, returning ActivityPub self links.
Related Tools
Handwriting Generator
Convert typed text into an image with handwriting appearance. Useful for adding a personal touch to digital work.
Resume Generator
Fill a simple printable A4 CV from a form with personal data, education and experience.
Favicon Generator
Generate a favicon from text/emoji in all common sizes (16, 32, 48, 64, 192, 512). PNG download.