Security Tools
GitHub Webhook Signature Verifier
Verify GitHub webhook signatures in your browser. Compute HMAC-SHA256 and HMAC-SHA1 over the body, compare to X-Hub-Signature-256, and explain failures.
Webhook payload
Paste the exact bytes GitHub delivered as the request body. Reserialized or pretty-printed JSON will not verify.
147 characters. Whitespace and trailing newlines change the digest.
Webhook secret
The secret you configured for this webhook in GitHub settings. Stays on this device.
26 characters.
Signature header received
Paste the value of X-Hub-Signature-256 or the legacy X-Hub-Signature. The header name prefix is optional.
Examples: sha256=ab12... or sha1=cd34....
Verify signature
Computes HMAC of the body with the secret, then compares against the parsed signature. Everything stays in your browser.
Waiting for input
Press Verify signature to compute the HMAC and compare.
How to use
- Paste the exact webhook request body your receiver saw. The bytes must match what GitHub sent; any whitespace, trailing newline, or BOM added by a logging proxy or editor will change the digest.
- Enter the webhook secret you configured in the repository, organization, or GitHub App settings. Use the Show toggle to confirm you pasted the right value. The secret never leaves your browser.
- Paste the value of X-Hub-Signature-256 (modern) or the legacy X-Hub-Signature header. The header name prefix is optional, and either sha256= or sha1= will be auto-detected.
- Press Verify signature. The tool computes HMAC-SHA256 and HMAC-SHA1 of the body with the secret, parses the observed signature, and shows a green Verified or red Mismatch verdict.
- If the signatures match, copy the expected digest or header line to use as a known-good fixture in your tests.
- If they do not match, read the per-character diff to see exactly where the digests diverge, then walk through the failure checklist below the diff to find the bug in your receiver code.
- Use Load sample payload to drop in the canonical example from the GitHub webhook documentation if you need a known-good starting point.
About this tool
GitHub Webhook Signature Verifier checks the X-Hub-Signature-256 (HMAC-SHA256) and the legacy X-Hub-Signature (HMAC-SHA1) headers that GitHub attaches to every webhook delivery. Paste the exact request body, the webhook secret you configured in repository or app settings, and the signature header value the receiver saw; the tool computes the HMAC of the body with the secret using the Web Crypto API, parses the signature header (stripping the sha256= or sha1= prefix), and compares the observed digest to the expected digest with a constant-time comparison. When the signature matches, the verdict panel turns green and the matching header is highlighted. When it does not, the verdict turns red and the tool renders a per-character diff of expected vs observed hex so you can see exactly where the bytes diverge, alongside a checklist of the real-world reasons GitHub webhook verification fails (body re-serialization, trailing newlines, BOMs, kept algorithm prefixes, stale secrets, and timing-unsafe string compares). The expected sha256 and sha1 digests are always shown with copy buttons so you can paste them directly into your receiver tests, and a Use expected sha256 as test signature button fills the field with the value GitHub would have sent for the current body and secret. Nothing leaves your browser: the secret, body, and computed digests stay in component state, and the comparison is done locally with crypto.subtle. Use this whenever a GitHub webhook receiver returns 401 with a signature mismatch, when you are migrating a receiver from sha1 to sha256, or when you are writing a new GitHub App and need a known-good fixture to test against.
Free to use. Works in your browser. No signup, no login.
Related tools
You may also like
Stripe Webhook Signature Verifier
Parse the Stripe-Signature header and verify v1 HMAC plus replay tolerance.
Open tool
DeveloperWebhook Signature Generator
Sign webhook payloads with HMAC and copy provider-shaped headers plus a curl command.
Open tool
SecurityHMAC Generator
Generate and verify HMAC-SHA1, SHA-256, SHA-384, and SHA-512 signatures.
Open tool
SecuritySHA-256 Hash Generator
Hash text or files with SHA-1, SHA-256, SHA-384, and SHA-512.
Open tool
DeveloperJWT Verifier
Verify HS, RS, PS, and ES signatures plus exp, nbf, iss, aud claims.
Open tool