A W3C-style DID method, "Public Ledger of Credentials", built for the AT Protocol (atproto) ecosystem but defined as a general DID method. A did:plc identifier is derived from the hash of its first signed operation, so it is self-certifying. Control rests in up to five priority-ordered rotation keys; each update is a signed operation that points to the previous one by hash, and a higher-priority key can overwrite a lower-priority one's operations within a 72-hour window. Operations are submitted to a central directory server that validates them, orders them and publishes the full log. No blockchain is used. The system gives accounts a persistent identifier that survives changes of name or service provider; in practice it identifies over 40 million atproto accounts, and the project names no non-atproto adopter.
LicensePermissive (dual MIT / Apache-2.0, at the user's option; copyright 2022-2026 Bluesky Social PBC). https://github.com/did-method-plc/did-method-plc (TypeScript reference implementation and directory server); https://github.com/did-method-plc/go-didplc (Go implementation, Apache-2.0)
Dev Status 🟢 Active
OwnerBluesky Social PBC (original developer, 2022; copyright holder of the reference code); the PLC Organization, a small Swiss association founded in 2026, as neutral steward
Owner - List
Bluesky Social PBC
Governing BodyPLC Organization (Swiss association, founded 2026, developing its policies) as neutral steward; Bluesky Social PBC as the original developer. The cited sources do not say who operates the directory at plc.directory today or how the steward is governed
CountrySwitzerland (the PLC Organization, a Swiss association with a registered address in Zug)
Start Year 2022
StackTypeScript (reference library and directory server) and Go; DAG-CBOR operations with CIDs; ECDSA-SHA256 over secp256k1 or P-256; did:key encoding of keys; HTTP API described by an OpenAPI schema
Funding Not stated by the project.
Last Investigated Oct 29, 2026
Topology view
This tool in the centre and the things it is directly related to. Each line names the kind of relationship.
ATproto (Tool): Basis for, Based on, Speaks protocol
did:key (Tool): Based on, Conforms to, Identifies via, Speaks protocol
OriginsAccount identity for the AT Protocol: a persistent identifier that lets accounts keep their relationships while changing names or moving between service providers, with cryptographic control by the account holder, no blockchain, and cheap, fast, recoverable updates
DatabaseA central directory server holding each identifier's append-only operation log, with the full history publicly readable and exportable
Query LanguageHTTP resolution at plc.directory (the DID document, current data, and the audit log per DID) and a paginated export of all operations
Data FormatsSigned operations as DAG-CBOR for hashing and signing and as plain JSON over HTTP; rotation and signing keys as did:key; rendered as a W3C DID document; identifier is 24 base32 characters of the SHA-256 of the genesis operation
Mobile SupportLibrary-level only: it is an identifier layer used by atproto applications and has no app of its own
Web SupportYes: public HTTPS resolution at plc.directory, a lookup page and API documentation
Native AppsNone: an identifier method, not an application
TermsFree to use; the project calls it inexpensive enough to provide as a no-cost service
Funds Not stated by the project.
Based OnW3C DID Core, did:key, DAG-CBOR and CIDs, ECDSA over secp256k1 and P-256
PermissionsCryptographic capabilities: only holders of a current rotation key can update an identifier, with priority order deciding disputes; creation and resolution are open to anyone
Authentication & IdentitySelf-certifying identifier plus rotation keys: the holder (or a service the holder trusts) signs operations with a rotation key; separate signing keys, handles and service endpoints are carried as data. Handles and service claims are not cross-checked by the directory and must be verified bi-directionally by the application
Storage ModelCentralized log: the directory server stores every operation permanently with a server timestamp and serves it publicly; clients can verify the log themselves because it is self-certifying
InteroperabilityRegistered W3C DID method, listed in the DIF Universal Resolver's driver table, with a Go implementation beside the reference code; used by the atproto ecosystem. No use outside atproto was found in the cited sources
Data PortabilityStrong at the identity level: the identifier is independent of any one service provider, and the holder can move between providers while keeping relationships. Dependent on the directory for ordering and resolution
Governance & Decision MakingThe specification is maintained in the open repository by its developers; the neutral steward is meant to oversee the system, with changes promised to be backwards compatible. Its decision process is not described in the cited sources
Protocol Maturity / StandardizationSpecification v0.3.0 (December 2025), registered in the W3C DID Extensions registry, in production at atproto scale; not a standards-body deliverable, and the neutral steward was founded only in 2026
Identity StandardsW3C DID Core (implements the standard); did:key; registered in the W3C DID Extensions registry
Key ManagementUp to five priority-ordered rotation keys (secp256k1 or P-256), kept apart from signing keys by recommendation; control and recovery rest on them, and keys may be reused across accounts
Credential TypesN/A: a DID method; it defines no credential types
Verification MethodThe log is self-certifying: a verifier checks each operation's signature against the previous operation's rotation keys and the hash chain; trust in the directory is limited to refusing operations and choosing between forks
Privacy FeaturesLimited by design: the full operation history, with timestamps, is permanently public even after deactivation, so personal information placed in aliases stays visible and key reuse can link accounts
Authentication MethodsOperations signed with rotation keys; atproto separately uses a signing key listed in the identifier's data
Revocation MechanismUpdate operations rotate or remove keys; a tombstone operation permanently deactivates the identifier (subject to the recovery window); the history is kept
Agent Types SupportedIndividuals and organizations; the page says "individuals (or organizations)"
Wallet/Client TypesLibraries and atproto software; no method-specific wallet
Recovery MechanismsA higher-priority rotation key can overwrite operations signed by a lower-priority one within 72 hours, which is the recovery path when a lower key is compromised
Compliance / Regulations Not stated by the project.
Credential Exchange ProtocolsN/A: identifier layer; used inside atproto's own protocols
Trust FrameworkCryptographic verification of a public log plus trust in one directory for availability and fork ordering; neutral stewardship by the PLC Organization is the stated direction
Cost ModelFree to resolve and register
Censorship ResistanceModerate to low: anyone can submit signed operations and the log is verifiable, but a single directory server can refuse operations or serve the wrong fork, and no alternative directory is described
Relationships
How this tool connects to other tools and organizations, from relationships reviewed by the OpenHaven data steward. They describe how projects connect, not how good they are.