Inspect every webhook. See what your tool actually sends.
Spin up a unique URL in two clicks. Stripe, Shopify, Slack, GitHub, n8n — point any webhook at it and see the exact payload your integration receives. Headers, body, JSON parsed, curl one-liner ready to replay.
{
"id": "evt_1NbXyz2eZvKYlo2C",
"type": "charge.failed",
"data": {
"object": {
"amount": 4999,
"currency": "usd",
"failure_code": "card_declined"
}
}
}
{
"event": "order.created",
"shop": "acme.myshopify.com",
"order": { "id": 820982911, "total": "42.99" }
}
Every request hitting your bin is captured: full headers, query string, body up to 50KB, source IP, content type, content length, exact timestamp. Nothing is silently dropped — see what the sender actually sent.
Send JSON? Parsed and pretty-printed. Send form-urlencoded? Decoded. Send XML or text? Shown raw. We don't guess; we look at the Content-Type and render the body the way the sender meant it.
Every captured request comes with a generated curl one-liner that reproduces it byte-for-byte against any URL you choose. Hit replay locally, hit replay against staging — the payload is preserved exactly.
Three steps. Done.
Create a bin
Sign up, click 'New bin'. You get a unique URL like webhook.91-99-176-101.nip.io/r/abc123xyz. Free plan: 3 bins.
Point your webhook at it
Paste the URL into Stripe, Shopify, Slack, GitHub, or your own service. We accept GET/POST/PUT/PATCH/DELETE — whatever the sender uses.
Watch requests arrive live
Open the bin page. Every captured request appears in real time — headers, body, parsed JSON, and a copy-pasteable curl one-liner to replay it.
Webhooks shouldn't be a black box.
When Stripe fires a charge.failed event and your handler 500s, the only useful debug signal is the exact bytes that arrived. Not a console.log of what you guessed. Not a trace of your retry loop. The real headers, the real body, the real timing. Hookpeek captures it once, keeps it for 100 requests, and gives you a curl one-liner so you can replay it locally without waiting for the next failure.
Free or $9/mo. That's it.
No contracts. Cancel anytime.
Free
$0/forever
- ✓3 bins
- ✓100 requests history per bin
- ✓Auto JSON parsing
- ✓curl one-liner replay
- ✓Live HTMX feed
Pro
$9/month
- ✓Unlimited bins
- ✓10,000 requests per bin
- ✓Replay-to-target URL (one click)
- ✓Custom bin names
- ✓Priority support
Quick answers.
Is this like webhook.site or RequestBin? +
Same shape. We focus on speed and quality of the inspection UI — JSON pretty-printing, curl reproduction, live HTMX feed without polling refreshes. Stays fast at 10,000 requests.
Are URLs public? +
The capture URL (/r/<token>) accepts public requests — that's how webhooks reach it. Viewing the captured data is gated behind your login. Tokens are 16 characters, URL-safe random.
What's the body size limit? +
We store the first 50KB of each request body. Larger payloads are truncated with a marker. Raised limits available on Pro by request.
How long is data kept? +
Free: last 100 requests per bin (oldest auto-pruned). Pro: last 10,000. No silent expiry; rolling buffer per bin.
Can I replay a captured request? +
Yes. Every captured request has a generated curl one-liner. Free users can copy and run it manually. Pro users get a 'Replay to URL' button that fires it against any target with one click.
Why $9/mo for Pro? +
Unlimited bins, 100x more history per bin, and replay-to-target. If you debug webhooks more than once a month, that's an hour of your time.
Stop guessing what your webhook said.
Free for 3 bins, 100 requests each. No card.