"Static hosting is enough" is a claim until you've done it. This walkthrough takes you from a sentence of text to a live, revocable, verifiable claim on free hosting — the exact mechanics an issuer at any scale uses, just smaller.
Pick something true that you'd stand behind. Keep it to a few short lines, and add a
verify: line naming where you'll publish (your GitHub Pages address works):
Jo Smith completed the Anytown 10K
on 14 May 2026 in 52:31.
verify:yourname.github.io/verify-demo/c
The verify: line is the pointer, not part of the claim — it's excluded
from the hash. Anything works for a first run: a reference you'd give a colleague, a fact about
your business, your conference talk acceptance.
Paste the claim (without the verify: line — though the calculator strips it if you
forget) into the hash calculator.
It normalizes the text (whitespace, quotes, dashes) and shows the SHA-256. Copy the hash.
Normalization is why a verifier's slightly-mangled copy — extra spaces, curly quotes — still matches your hash. The rules are part of the open spec.
Create a public GitHub repository named verify-demo, enable GitHub Pages
(Settings → Pages → deploy from branch), and add one file, where {hash} is the
hex string you copied:
c/{hash}/index.html
containing:
{"status":"verified"}
That's the entire issuer-side infrastructure. GitHub Pages serves it with the CORS header
verification clients need, for free, at
https://yourname.github.io/verify-demo/c/{hash}.
Open https://yourname.github.io/verify-demo/c/{hash} in a browser — that 200
response with {"status":"verified"} is what every verification client checks for.
Then do it the way a stranger would:
verify: line) on any web page, your CV, or an email.Revocation, while you're there: change the file contents to
{"status":"revoked"} and verify again. You've just exercised the lifecycle that paper
documents never had.
Everything past this point is operational depth, not new concepts: your own domain instead of
github.io (authority lives in DNS), bulk hash generation from your system of record,
richer statuses and response metadata, authority chains so verifiers can walk endorsements up to a
national root, and document-specific normalization via verification-meta.json. All
documented in the repository.