HMAC generator
HMAC signatures for webhook debugging: pick the algorithm, paste the secret, compare against the signature a provider sent.
Debugging webhook signatures
Stripe, GitHub, Shopify and practically every webhook provider sign their payloads with HMAC: hash the raw body with a shared secret, send the result in a header. When your verification fails, this tool shows you what the signature should have been — paste the secret, paste the body, compare with what arrived.
The comparison field understands the formats providers actually send: plain hex, a sha256=… prefix (GitHub), or base64 (Shopify). The check is constant-time, and the verdict is a simple match or no match.
Everything runs in your browser. Pasting a webhook secret into a page that sends it to someone's server defeats the point of a secret — here the network tab stays empty.
My computed HMAC doesn't match the provider's. What's wrong?
Which encoding do I pick for the key?
Is HMAC-SHA-256 still safe? Should I use SHA3?
Why constant-time comparison?
Related tools: Hash & checksum, JWT decoder and Encrypt / decrypt.