Universal DID Native Addressing (UDNA) defines a lightweight, extensible addressing
scheme that makes Decentralized Identifiers (DIDs) native
to resource location and service discovery on the Web. UDNA provides a uniform udna:// URI
scheme that encodes a DID and a resource path, enabling secure, cryptographically verifiable interactions
across decentralized systems. This specification builds on W3C Recommendations ([[DID-CORE]],
[[VC-DATA-MODEL]]) and the DIDComm v2 messaging protocol ([[DIDCOMM]]). It is an incubation deliverable
of the UDNA W3C Community Group and does not represent consensus of the broader
W3C Membership.
This document is a Community Group Draft produced by the W3C Community Group for DID Native Addressing. It is not a W3C Standard nor on the W3C Standards Track. Publication by the W3C does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This specification is being developed to explore the intersection of decentralized identifiers, native addressing, and universal service discovery. The goal is to mature the proposal toward a future W3C Working Group deliverable. The CG welcomes issues and pull requests on GitHub. Before contributing, please review the W3C Community Contributor License Agreement.
The CG has received early reviews from implementers of Solid, DIDComm, and Hyperledger Aries, and expects to conduct multiple interoperability events during 2026.
The Web's addressing model is built on URLs that bind authority to domain names, which in turn rely on centralized DNS and certificate authorities. While this has enabled massive growth, it introduces identity silos, privacy leaks, and intermediary dependency. Decentralized Identifiers (DIDs) offer self-sovereign, cryptographically verifiable identities, but they lack a native addressing scheme to directly locate resources, APIs, or services tied to a DID.
UDNA fills this gap. By introducing the udna:// URI scheme and a
deterministic resolution mechanism, UDNA allows any entity with a DID to publish service endpoints,
resources, and sub-paths that can be resolved in a secure, privacy-preserving way. UDNA leverages
[[DID-CORE]] for identity, [[DIDCOMM]] for secure messaging, and [[VC-DATA-MODEL]] for
authorization policies.
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words MAY, MUST, MUST NOT, OPTIONAL, RECOMMENDED, REQUIRED, SHALL, SHALL NOT, SHOULD, and SHOULD NOT in this document are to be interpreted as described in BCP 14 [[RFC2119]] [[RFC8174]] when, and only when, they appear in all capitals, as shown here.
This section defines the terms used throughout this specification.
udna scheme, composed of a DID component, an optional
service segment, and a resource path. Formally specified in .
service array property,
expressed as a URI string, a set of URI strings, or a DIDComm endpoint object.
type: "UDNARoot" or the fragment identifier #udna-root
in the DID Document.
The udna URI scheme follows the ABNF syntax below (extending [[RFC3986]]):
udna-URI = "udna://" did-string [ "/" service-id ] path [ "?" query ] [ "#" fragment ]
did-string = scheme ":" method-specific-id
; a valid DID per [[DID-CORE]]
service-id = *( unreserved / pct-encoded )
path = *( "/" segment )
query = *( pchar / "/" / "?" )
fragment = *( pchar / "/" / "?" )
A complete example illustrating all components:
udna://did:example:123456/service/api/resource?version=1#section
did:key:z6Mkp… or
did:web:example.com. The DID forms the authority component of the
[=UDNA Address=].
id fragment of
a service entry in the resolved DID Document. If omitted, the resolver selects the
[=UDNARoot Service=].
To resolve a [=UDNA Address=], a conformant [=UDNA Resolver=] MUST perform the following steps in order:
notFound.
service array whose id fragment matches the given
segment. If no match is found, return error serviceNotFound.
type
contains "UDNARoot" or whose id fragment equals
udna-root. If neither is found, return error
defaultServiceNotFound.
serviceEndpoint value from the selected service entry.
This value MAY be a URI string, a set of URI strings, or a DIDComm endpoint object.
targetUrl,
didDocument, didDocumentMetadata, and
verificationMethods associated with the selected service.
Resolvers SHOULD implement caching with appropriate TTL derived from DID Document
metadata (created, updated). Resolvers MUST respect HTTP
cache headers when resolving did:web identifiers.
UDNA inherits the security properties of the underlying DID methods and DIDComm. The following considerations apply specifically to the UDNA addressing layer.
UDNA addresses may expose service endpoints in plaintext within the resolved DID Document.
For private services, implementers SHOULD use DIDComm-based routing or encrypted
serviceEndpoint values.
When accessing resolved endpoints, clients SHOULD demonstrate proof-of-possession of a private key associated with the resolving DID, or delegate access via a Verifiable Credential issued under [[VC-DATA-MODEL]].
UDNA addresses do not inherently create persistent trackable identifiers because DIDs can be rotated. However, repeated resolution of the same DID across different network contexts could enable correlation. To mitigate this, implementers SHOULD use pairwise DIDs per relationship where strong privacy is required.
Resolvers SHOULD enforce rate limiting on DID resolution requests and employ aggressive caching policies to mitigate amplification attacks against DID method infrastructure.
UDNA follows a minimal core + extension model. Core behavior is defined
by this specification; optional capabilities are registered via the udna-ext
query parameter (?udna-ext=https://…). The following extensions are known
at the time of publication:
Versioning of the core scheme is indicated via the udna-version query
parameter. The default value for this specification is 1.0. Future versions
MUST be backward-compatible at the resolution layer unless a breaking version increment
is declared.
UDNA is not intended to replace the following protocols but to unify them under a common addressing layer that respects decentralized identity. Implementations MAY embed UDNA support as a complementary naming and discovery mechanism.
| Framework / Protocol | Focus | UDNA Role |
|---|---|---|
| [[DID-CORE]] | Identifier and DID Document | UDNA uses DID as the naming authority and cryptographic trust anchor. |
| [[DIDCOMM]] | Secure encrypted messaging | UDNA addresses can resolve to DIDComm service endpoints for encrypted channel establishment. |
| Solid (WebID) [[SOLID]] | Personal linked-data pods | UDNA can replace WebID URLs, enabling DID-based access control for Solid pods. |
| ActivityPub | Federated social web | UDNA provides identity-native addressing for actors and objects, removing dependency on domain-based actor URIs. |
| IPFS / IPNS | Content-addressed distributed storage | UDNA addresses can reference IPFS resources and supply DID identity context for access control. |
The UDNA Community Group is actively incubating this specification. The following are current priorities for the 2026 incubation cycle:
did:web,
did:key, and did:tdw to correctly expose UDNA service
endpoints in their DID Documents.
This appendix is informative.
This document requests registration of the udna URI scheme with IANA. The
scheme syntax conforms to the rules defined in and the URI
generic syntax of [[RFC3986]]. The CG will submit a formal registration request to IANA
upon reaching draft stability and completing at least two interoperability events.
udnaThe editor, Amir Hameed Mir, and the UDNA Community Group thank contributors from the Decentralized Identity Foundation (DIF), W3C DID Working Group alumni, and participants of the Solid and ActivityPub communities. Special thanks to the early implementers who stress-tested the addressing model and provided interoperability feedback during the initial incubation phase.