b2KIT

Webhook Signature Calculator

Calculate and verify webhook HMAC signatures for Stripe, GitHub, Shopify, and other popular webhook providers.

Tested tool guide Tested browser tools Checked August 16, 2026

What Webhook Signature Calculator does, with a checked example

This tool reproduces the HMAC signature that Stripe, GitHub, and Shopify attach to outgoing webhook requests, so you can confirm a payload matches its signature without waiting for the provider to redeliver a real event. You enter the raw request body, the signing secret, and (for Stripe) the timestamp from the signature header; the tool recomputes the digest and reports a match or mismatch. The detail people miss most: signatures are computed over the exact raw bytes of the body, so re-indenting or re-formatting JSON before pasting it in silently breaks the match.

Worked example

A concrete input and expected output from the current implementation.

Input

Provider: GitHub | Secret: Jefe | Raw payload body: what do ya want for nothing?

Expected output

sha256=5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843

GitHub's X-Hub-Signature-256 header is the hex HMAC-SHA256 digest of the exact secret and raw body, prefixed with sha256=; this secret/body pair is the standard HMAC-SHA256 test vector from RFC 4231 Test Case 2, so the digest is independently verifiable.

How the result is produced

1

Provider-specific signing scheme

Each provider builds its signed string differently. GitHub and Shopify HMAC the raw request body directly, GitHub reporting SHA-256 as hex, Shopify as base64; Stripe instead signs a string built as timestamp.raw_body and reports it in a Stripe-Signature header as t=...,v1=.... The tool switches which construction it uses based on the provider you pick.

2

Local digest computation and compare

Given a secret, a payload, and (for Stripe) a timestamp, the tool computes HMAC-SHA256 and displays the result in the provider's native encoding. If you also paste in a signature you received, it compares the two byte-for-byte and reports a match or mismatch rather than just showing a raw digest for you to eyeball.

Good uses

  • debugging a webhook handler that rejects valid Stripe or GitHub events during local development, without triggering a real redelivery
  • confirming a signature copied from server logs or a support ticket actually matches the payload and secret in question
  • generating a valid signature header to mock a provider's webhook call when testing an endpoint that has no sandbox event source

Limits and checks

  • Signatures are computed over the exact raw request body bytes; pasting pretty-printed or re-indented JSON changes whitespace and produces a digest that will never match what the provider actually sent.
  • Stripe signs timestamp.raw_body, not the payload alone - omitting or misplacing the timestamp from the Stripe-Signature header's t= field is the single most common reason a Stripe check fails here.
  • Encodings differ by provider: GitHub and Stripe output hex, Shopify outputs base64. Comparing a digest in the wrong encoding against a received header will always read as a mismatch even when the secret and body are correct.

Common questions

Does a matching signature prove the webhook request is authentic?

It proves the payload and secret you entered reproduce the exact digest shown. If that digest equals the one the provider sent, the request came from someone holding that secret and the body wasn't altered in transit. It does not confirm your server's own comparison code is implemented correctly.

Is my webhook signing secret sent anywhere when I use this?

No - the HMAC computation runs entirely in your browser, so the secret and payload you type never leave the page. That matters because a webhook signing secret functions like a password: anyone who has it can forge events that your endpoint will accept as genuine.

References and verification

The example and behavioral notes were checked against the browser implementation. Standards and primary references below define the relevant format, formula, or platform behavior.

Related Tools