did:key excels at cryptographic self-containment and offline portability because the DID and its verification method are encoded directly into the identifier itself. This makes it ideal for ephemeral sessions, local device authentication, and scenarios where a persistent, resolvable endpoint is not required or desired. For example, it's the default DID method in the W3C Verifiable Credentials Data Model implementations and is heavily used in didcomm protocols for peer-to-peer messaging where direct cryptographic proof is sufficient.
did:key vs did:web: Portable Key vs Domain-Verified DID
Introduction: The Foundational DID Dilemma
Choosing between did:key's cryptographic portability and did:web's domain-verified trust is the first critical decision in decentralized identity architecture.
did:web takes a different approach by binding the DID to a domain name you control (e.g., did:web:example.com), requiring the DID Document to be hosted at a predictable HTTPS endpoint. This results in a trade-off: you gain verifiable organizational control and easy discovery, but you introduce a dependency on web infrastructure (DNS, TLS, uptime). This method is favored by enterprises and projects like Spruce ID's Sign-in with Ethereum for its familiarity and ability to represent an entity behind a domain, enabling trust through established internet security layers.
The key trade-off: If your priority is maximum decentralization, offline usability, and cryptographic purity for peer-to-peer interactions, choose did:key. If you prioritize organizational attribution, easy integration with existing web security models, and verifiable domain ownership for customer-facing applications, choose did:web. The decision fundamentally hinges on whether the trust anchor should be a portable key pair or a verifiable web domain.
TL;DR: Core Differentiators
Key strengths and trade-offs at a glance. Choose based on your primary need: cryptographic portability or web-native verifiability.
did:key: Zero Infrastructure
No external dependencies: No web server, domain, or registry is required for creation or verification. This reduces operational overhead and eliminates a central point of failure, making it perfect for decentralized applications where uptime of a web host cannot be guaranteed.
did:web: Dynamic & Updatable
Resolves to a hosted DID Document: The identity's public keys and service endpoints can be updated by the domain controller. This supports key rotation, service endpoint changes, and protocol upgrades without changing the core DID identifier, crucial for long-lived, managed identities.
did:key: The Verdict
Choose did:key when:
- You need maximum decentralization and offline capability.
- Your system is peer-to-peer or operates without internet.
- You are issuing long-term, static identities for devices or data.
- Examples: IoT device IDs, static Verifiable Credentials, DIDComm agents.
did:web: The Verdict
Choose did:web when:
- You need a simple, web-integrated identity for your organization.
- You already manage a domain with TLS and can host a JSON file.
- You require the ability to update keys and service endpoints over time.
- Examples: Company-issued employee credentials, university diplomas, OIDC integration.
Feature Comparison: did:key vs did:web
Direct comparison of DID methods for portable cryptographic keys versus domain-verifiable identifiers.
| Metric / Feature | did:key | did:web |
|---|---|---|
Primary Use Case | Ephemeral, portable cryptographic key | Domain-verified, web-hosted identity |
Decentralization | Fully self-sovereign, no external dependency | Depends on domain ownership and HTTPS/TLS |
DID Document Resolution | Locally generated, no network call | Requires HTTP(S) fetch from domain |
Verifiable Credential Issuance | ||
Requires Domain Registration | ||
Persistence & Rotatability | Static, cannot rotate keys without new DID | Dynamic, can update DID Doc via web server |
W3C Standard Compliance | ||
Implementation Complexity | Low (crypto library only) | Medium (requires web server & key management) |
did:key: Advantages and Limitations
A side-by-side comparison of the two most common DID methods for decentralized identity, highlighting their core trade-offs for different deployment scenarios.
did:key: Ultimate Portability
Self-contained identifier: The DID document is derived directly from the cryptographic key pair, requiring no external resolution. This is critical for offline-first applications and embedded device credentials where network access isn't guaranteed.
did:key: Zero Infrastructure
No server or domain required: Eliminates the operational overhead and cost of maintaining a web server or DNS record. Ideal for prototyping, client-side wallets, and ephemeral identities where simplicity and speed are paramount.
did:key: Key Limitation
No key rotation or revocation: The DID is permanently bound to its initial key pair. This is a critical security flaw for long-lived identities, as a compromised key cannot be changed without creating a wholly new DID.
did:web: Verifiable Control
Domain-based verification: Proves control over a specific internet domain (e.g., did:web:example.com). This is essential for organizational identities (like a company issuing verifiable credentials) and establishing trusted, recognizable endpoints.
did:web: Full Document Management
Supports key rotation & service endpoints: The DID document is hosted at a well-known URL, allowing the controller to update keys and add services (like linked data registries or communication endpoints). Necessary for production systems and evolving user profiles.
did:web: Centralization Trade-off
Relies on traditional web infrastructure: Depends on DNS and HTTPS, reintroducing points of central failure. The DID becomes unavailable if the domain expires or the server goes down, making it unsuitable for fully decentralized, resilient systems.
did:web: Advantages and Limitations
A direct comparison of the portable cryptographic key versus the domain-verified decentralized identifier. Choose based on your primary need for self-containment or verifiable web integration.
did:key: Ultimate Portability
Self-contained DID: The entire DID Document is encoded within the DID itself (e.g., did:key:z6Mk...). This eliminates external resolution dependencies, making it perfect for offline-first applications, secure local key generation, and embedding credentials in QR codes. No server or domain required.
did:key: Simplicity & Speed
Zero-resolution overhead: Since the public key is in the identifier, there's no HTTP fetch to resolve the DID Document. This results in sub-millisecond verification times, ideal for high-throughput, low-latency scenarios like IoT device handshakes or in-memory cryptographic operations within wallets.
did:key: Key Limitation
No key rotation or service endpoints: A did:key is cryptographically bound to a single key pair. You cannot rotate keys or attach service endpoints (e.g., messaging, storage) without creating a new DID. This makes it unsuitable for long-lived, mutable identities in complex systems.
did:web: Domain-Verified Trust
Leverages existing web trust: The DID is derived from a domain you control (e.g., did:web:example.com). This provides a verifiable link to a real-world entity, making it the standard for organizations, enterprises, and protocols (like the W3C itself) issuing verifiable credentials from a known source.
did:web: Full DID Document Control
Full W3C DID Core compliance: Host a complete, mutable DID Document at a well-known URL (/.well-known/did.json). This enables key rotation, service endpoint definitions (for auth, messaging, storage), and integration with the broader Verifiable Credentials ecosystem (e.g., signing with Ed25519Signature2018).
did:web: Centralization & Maintenance
Depends on web infrastructure: The DID's validity is tied to domain ownership and HTTPS availability. It introduces a central point of failure—if the domain expires or the server is down, the DID cannot be resolved. Requires active DNS and web server maintenance.
Decision Framework: When to Use Which
did:key for Developers
Verdict: The go-to for portable, self-contained identity in decentralized apps and wallets. Strengths:
- Zero Dependencies: No external resolution or network calls required. The DID document is derived directly from the cryptographic key material (e.g.,
did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK). - Perfect for Wallets & Local Agents: Ideal for generating ephemeral or user-controlled identities in applications like MetaMask Snaps, CLI tools, or mobile SDKs where internet connectivity isn't guaranteed.
- Standardized Crypto: Works seamlessly with common libraries like
@digitalbazaar/ed25519-verification-key-2020and@transmute/did-key.js. Weakness: No inherent mechanism for key rotation or service endpoint discovery without embedding them in the initial key derivation, which is cumbersome.
did:web for Developers
Verdict: The standard for domain-verified, updatable identities in server-side and enterprise applications. Strengths:
- Dynamic & Updatable: The DID document is hosted at a well-known URL (e.g.,
https://example.com/.well-known/did.json), allowing for key rotation, service endpoint updates, and revocation. - Enterprise Integration: Fits naturally into existing web infrastructure and CI/CD pipelines. Easy to integrate with OAuth2 servers, corporate identity providers, and API gateways.
- Verifiable Credentials Issuance: The canonical choice for issuers (like universities or certification bodies) who need a stable, publicly resolvable DID. Weakness: Introduces a central point of failure—the web domain and its HTTPS server. Requires active maintenance.
Technical Deep Dive: Structure and Resolution
Understanding the core architectural differences between did:key's portable key format and did:web's domain-verified resolution is critical for choosing the right foundation for your decentralized identity system.
The core difference is verifiability vs. portability. did:key is a self-contained, portable DID that encodes the public key directly into the DID identifier itself, requiring no external resolution. did:web is a resolvable DID that binds the identity to a domain name, requiring an HTTPS endpoint to fetch the DID Document, enabling key rotation and service endpoint updates.
Final Verdict and Strategic Recommendation
Choosing between did:key and did:web hinges on the core trade-off between portability and verifiable control.
did:key excels at cryptographic portability and offline functionality because the DID Document is embedded directly within the DID itself. This makes it ideal for ephemeral sessions, local-first applications, and scenarios where a persistent network endpoint is undesirable. For example, a W3C Verifiable Credential issued to a mobile wallet using a did:key can be cryptographically verified without ever needing to resolve the DID over the internet, ensuring privacy and resilience.
did:web takes a different approach by binding identity to a domain name you control, leveraging the existing HTTPS infrastructure for resolution. This results in a powerful trade-off: you gain a human-meaningful, updatable identity (e.g., did:web:company.com:employees:alice) at the cost of introducing a centralized dependency on your web server's availability and security. Protocols like SIOPv2 and OpenID Connect VC often prefer did:web for its ability to host dynamic public keys and service endpoints.
The key architectural divergence is trust. did:key offers trust-in-the-key, where verification is purely mathematical. did:web introduces trust-in-the-domain, where you also trust the domain's TLS certificate and the server to serve the correct DID Document. This makes did:web suitable for organizational identities where key rotation and service discovery are required.
Consider did:key if your priority is maximum decentralization, offline verifiability, or creating lightweight, single-use identities for protocols like peer-to-peer data exchange or encrypted messaging. Its simplicity avoids DNS or server management overhead entirely.
Choose did:web when you prioritize a stable, updatable identity under your brand's domain, need to integrate with enterprise SSI ecosystems that expect HTTP resolution, or require the ability to rotate keys and update service endpoints (like linked Verifiable Credential Registries) without changing the core DID identifier for all users.
Get In Touch
today.
Our experts will offer a free quote and a 30min call to discuss your project.