Paste a Stripe-Signature header, the raw request body, and your whsec_ secret. The tool computes HMAC-SHA256 in your browser, compares it against the v1 signature, checks timestamp tolerance, and decodes the event payload so you can debug failing webhooks without sending the secret over the network.
Last updated:
The Stripe Webhook Signature Verifier is a free debugging tool that checks whether a Stripe-Signature header matches the HMAC-SHA256 you would compute with your webhook secret. Paste the raw request body, the signature header, and your whsec_ secret. Verification runs in your browser using the Web Crypto API, with no data sent to any server.
Paste the three values Stripe sent and your endpoint expected.
Read from request.headers.get('stripe-signature') in your handler.
Found in Stripe Dashboard under Developers โ Webhooks โ your endpoint โ Signing secret. Never leaves your browser.
Use the exact bytes Stripe sent (await request.text()), not a re-serialized object.
Stripe recommends 300s. Replay attacks succeed when this is set too high.
All verification runs in your browser using the Web Crypto API. Your webhook secret, body, and signature header are never sent over the network.
Stripe webhooks are public HTTP POST requests sent from Stripe's servers to an endpoint on your app. The endpoint URL is discoverable from your account or from a leaked log, which means anyone on the internet can send a forged payload claiming a charge succeeded. Signature verification with your webhook secret proves three things at once: the payload came from Stripe, the body bytes have not been altered in transit, and the request was issued recently (within the timestamp tolerance you allow).
The verification rules are documented by Stripe and identical across SDKs: extract the t= and v1= parts from the Stripe-Signature header, compute HMAC-SHA256(secret, '{t}.{raw_body}'), compare it to v1 in constant time, and reject events whose timestamp is older than 300 seconds. This tool runs the same algorithm in your browser so you can debug a failing verification without rotating secrets or shipping log statements to production.
Stripe-Signature value on commas, then extract t= and v1=. Older v0 schemes are not used in production.whsec_ secret as the key.v1 byte by byte. Returning false on the first mismatch would leak timing information, so the comparison runs in O(n) regardless of where the difference is.Stripe Fee Calculator
Calculate Stripe fees for any payment method and currency.
RLS Policy Generator
Generate Supabase Row Level Security policies with templates.
SaaS Pricing Calculator
Find your break-even price and suggested pricing tiers.
OG Image Preview
Preview meta tags on Google, Twitter, LinkedIn, and more.
Security Checklist
30 essential security checks with scoring and progress tracking.
Tech Stack Costs
Compare hosting, database, and service costs at scale.
Security Headers
Generate Next.js security headers config with copy-paste code.
JWT Decoder
Decode and inspect JSON Web Tokens. View claims and expiry status.
JWT Generator
Build and sign JWTs with HS256, HS384, or HS512 in your browser.
CORS Config Generator
Generate CORS configuration for Next.js or Express with copy-paste code.
JSON to Zod Converter
Paste JSON and get a typed Zod schema with format detection.
Stripe Webhook Verifier
Verify Stripe-Signature headers with your webhook secret in your browser.
API Key Generator
Generate cryptographically secure API keys, webhook secrets, and tokens in your browser.
Skip months of boilerplate. SecureStartKit gives you auth, payments, email, and security best practices out of the box.
Get SecureStartKit