did:webvh (did:web + Verifiable History). Formerly called did:tdw.
54
stars
490
commits
HTML
primary language
Aug 11, 2026
updated
did:webvh DID Method -- did:web + Verifiable HistoryThe spec repository for the did:webvh DID Method. did:webvh is did:web
extended to include the Verifiable History of the DID.
Read the spec: https://identity.foundation/didwebvh
Proof of concept implementations available:
The current stable version of the specification can be found at https://identity.foundation/didwebvh. See any guidance there about the status of the specification -- past versions, upcoming changes, etc.
The did:webvh DID Method is an enhancement to the well-known did:web DID
method, providing a complementary web-based DID method that addresses
limitations of did:web, most notability, the verifiable history for which it
is name. did:webvh features include the following.
did:web DID/DIDDoc.did:web.<did>/path/to/file by using a comparable DID-to-HTTPS translation
as for the DIDDoc.<did>/whois that defaults to automatically returning (if
published by the DID controller) a Verifiable Presentation containing
Verifiable Credentials with the DID as the credentialSubject,
signed by the DID.Combined, the additional features enable greater trust, security and
verifiability without compromising the simplicity of did:web. The incorporation
of the DID Core compatible "/whois" path, drawing inspiration from the
traditional WHOIS protocol, offers an easy to use, decentralized, trust
registry. did:webvh aims to establish a more trusted and secure web
environment by providing robust verification processes and enabling transparency
and authenticity in the management of decentralized digital identities.
Pull requests (PRs) to this repository may be accepted. Each commit of a PR must
have a DCO (Developer Certificate of Origin -
https://github.com/apps/dco) sign-off. This can
be done from the command line by adding the -s (lower case) option on the git commit command (e.g., git commit -s -m "Comment about the commit").
Rendering and reviewing the spec locally for testing requires npm and node
installed. Follow these steps:
node and npm.npm install from the root of your local repository./spec folder).npm run render'
npm run edit to interactively edit, render and review the spec.index.html file in a browser to be redirected to the current default version of the specification.The specification is currently in Spec-Up format. See the Spec-Up Documentation for a list of Spec-Up features and functionality.
Spec-Up allows for multiple versions of the spec to be rendered and accessed
on the same site. We use that feature for the did:webvh DID Method spec to snapshot
previous versions of the spec for reference.
To create a snapshot of a version:
spec-v<ver>. For example spec-v0.3.spec folder markdown files from the point of that version into the new folder. If you are doing this process as you are starting a new version, you can just copy the files from the spec folder of the main branch. Otherwise, you have to find the last commit of the version and get the files from that point in the GitHub history.specs.json file to include a new specification:
"specs" array."spec_directory" property to be the name of the new folder you created."output_path" property to be ./v<ver>. For example "./v0.3"."title" property the version - Version <ver>, For example - Version 0.3.Previous Drafts bullet list, in the header.md file in the main spec, so that readers can click on it from the main specification.header.md file of the new version spec folder (e.g in spec-v0.3) to:
HISTORICAL -- **THIS IS NOT THE CURRENT VERSION OF THE SPECIFICATION**Past Drafts section and put a relative link back to the current spec -- such as:**Latest Version:**
- Specification: [https://identity.foundation/didwebvh/](../)
- Repository: [https://github.com/decentralized-identity/didwebvh](https://github.com/decentralized-identity/didwebvh)
In the lifecycle of the specification, there will be times when the latest
version is stable, with clarifications being added, and other times when new
versions are being defined with breaking changes. At all times we want to
control which version is the default spec. that comes up when a user goes to the
base spec URL
https://identity.foundation/didwebvh/.
We control that via the index.html file in the root folder. That is just a
redirect to one of the versions of the spec.
To change the default landing page spec. version, change the root folder
index.html line:
window.location.replace("v1.0");
Notably -- set the v1.0 to the appropriate version, which might be next, if
the we want the landing page to be the Editor's Draft for a period of time.
Here's how we manage things in different situations:
header.md file.spec folder is the ./next folder and is called the Editor's Draft.
Immediately after a stable version is announced, it is a copy of the newly
stable version, but will evolve from there. Clarifications may be applied to the latest
spec-vx.x folder, and if so, those changes MUST also be applied to the Editor's
Draft.HTML
100.0%
did:webvh (did:web + Verifiable History). Formerly called did:tdw.
54
stars
490
commits
HTML
primary language
Aug 11, 2026
updated
did:webvh DID Method -- did:web + Verifiable HistoryThe spec repository for the did:webvh DID Method. did:webvh is did:web
extended to include the Verifiable History of the DID.
Read the spec: https://identity.foundation/didwebvh
Proof of concept implementations available:
The current stable version of the specification can be found at https://identity.foundation/didwebvh. See any guidance there about the status of the specification -- past versions, upcoming changes, etc.
The did:webvh DID Method is an enhancement to the well-known did:web DID
method, providing a complementary web-based DID method that addresses
limitations of did:web, most notability, the verifiable history for which it
is name. did:webvh features include the following.
did:web DID/DIDDoc.did:web.<did>/path/to/file by using a comparable DID-to-HTTPS translation
as for the DIDDoc.<did>/whois that defaults to automatically returning (if
published by the DID controller) a Verifiable Presentation containing
Verifiable Credentials with the DID as the credentialSubject,
signed by the DID.Combined, the additional features enable greater trust, security and
verifiability without compromising the simplicity of did:web. The incorporation
of the DID Core compatible "/whois" path, drawing inspiration from the
traditional WHOIS protocol, offers an easy to use, decentralized, trust
registry. did:webvh aims to establish a more trusted and secure web
environment by providing robust verification processes and enabling transparency
and authenticity in the management of decentralized digital identities.
Pull requests (PRs) to this repository may be accepted. Each commit of a PR must
have a DCO (Developer Certificate of Origin -
https://github.com/apps/dco) sign-off. This can
be done from the command line by adding the -s (lower case) option on the git commit command (e.g., git commit -s -m "Comment about the commit").
Rendering and reviewing the spec locally for testing requires npm and node
installed. Follow these steps:
node and npm.npm install from the root of your local repository./spec folder).npm run render'
npm run edit to interactively edit, render and review the spec.index.html file in a browser to be redirected to the current default version of the specification.The specification is currently in Spec-Up format. See the Spec-Up Documentation for a list of Spec-Up features and functionality.
Spec-Up allows for multiple versions of the spec to be rendered and accessed
on the same site. We use that feature for the did:webvh DID Method spec to snapshot
previous versions of the spec for reference.
To create a snapshot of a version:
spec-v<ver>. For example spec-v0.3.spec folder markdown files from the point of that version into the new folder. If you are doing this process as you are starting a new version, you can just copy the files from the spec folder of the main branch. Otherwise, you have to find the last commit of the version and get the files from that point in the GitHub history.specs.json file to include a new specification:
"specs" array."spec_directory" property to be the name of the new folder you created."output_path" property to be ./v<ver>. For example "./v0.3"."title" property the version - Version <ver>, For example - Version 0.3.Previous Drafts bullet list, in the header.md file in the main spec, so that readers can click on it from the main specification.header.md file of the new version spec folder (e.g in spec-v0.3) to:
HISTORICAL -- **THIS IS NOT THE CURRENT VERSION OF THE SPECIFICATION**Past Drafts section and put a relative link back to the current spec -- such as:**Latest Version:**
- Specification: [https://identity.foundation/didwebvh/](../)
- Repository: [https://github.com/decentralized-identity/didwebvh](https://github.com/decentralized-identity/didwebvh)
In the lifecycle of the specification, there will be times when the latest
version is stable, with clarifications being added, and other times when new
versions are being defined with breaking changes. At all times we want to
control which version is the default spec. that comes up when a user goes to the
base spec URL
https://identity.foundation/didwebvh/.
We control that via the index.html file in the root folder. That is just a
redirect to one of the versions of the spec.
To change the default landing page spec. version, change the root folder
index.html line:
window.location.replace("v1.0");
Notably -- set the v1.0 to the appropriate version, which might be next, if
the we want the landing page to be the Editor's Draft for a period of time.
Here's how we manage things in different situations:
header.md file.spec folder is the ./next folder and is called the Editor's Draft.
Immediately after a stable version is announced, it is a copy of the newly
stable version, but will evolve from there. Clarifications may be applied to the latest
spec-vx.x folder, and if so, those changes MUST also be applied to the Editor's
Draft.HTML
100.0%