Webhook Tester
Generate a unique URL, send any HTTP request to it, and inspect the captured method, headers, query, and body live in your browser.
How it works
- All HTTP methods are accepted (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS).
- Text bodies are stored up to 10 KB; larger bodies are truncated. Binary bodies (images, files, octet-stream) are replaced with a 1 KB stub plus SHA-256 of the original.
- A bin keeps the 10 most recent requests; older entries are dropped automatically (FIFO).
- Bins live for 24 hours after their last activity. View opens, receive hits, all reset the timer.
- Recognized signature headers (GitHub, Stripe, Slack, Shopify, Twilio) are highlighted, but never verified — we do not know your secret.
About this tool
Webhook Tester gives you a one-click public URL that captures any HTTP request sent to it — method, headers, query parameters, body (text or binary), timestamps, and source IP. The URL stays alive for 24 hours; requests stream into your browser in real time via Server-Sent Events, so you see incoming hits the moment they land without polling. Each unique URL is private (a 128-bit random token in the path), so only the people you share it with can post to it.
Everything captured is shown side-by-side: raw request line, headers, parsed query, body with auto-detection of JSON / XML / form-encoded / plain text. Headers like X-Hub-Signature, Stripe-Signature, or any HMAC-style verification can be inspected to debug signing schemes. You can also configure the response — change the status code, add response headers, or send a JSON body — to simulate the production endpoint and confirm your producer handles non-2xx responses correctly.
When to use this tool
- Integrating with third-party APIs. Stripe, GitHub, Twilio, Slack — every one of them needs a public callback URL to develop against; this tool gives you one without setting up tunnels.
- Debugging webhook payloads. See the exact bytes the sender produces, headers and all, before writing your own consumer.
- Testing retry behaviour. Set the response to 500 and confirm the producer retries; flip to 200 and confirm it stops.
- Reproducing an issue. Capture a failing webhook payload, then replay it from a curl-equivalent into your local dev server.
About persistence and privacy
Captured requests are stored for 24 hours and then deleted. The URL itself remains active during that window — share with care, since anyone who has it can post anything to it. For sensitive integrations (production payment webhooks), use a tunnel-to-localhost tool (ngrok, cloudflared tunnel) instead — that keeps payloads entirely on your local machine. This tool is for development and testing, not for real production traffic.
Frequently asked questions
How long does my webhook URL stay active?
Can I see incoming requests in real time?
Is this safe for production webhook secrets?
ngrok, cloudflared tunnel) so the payload never leaves your laptop. This tool is for dev / staging / one-off debugging of test events.
Can I customize the response?
Content-Type: application/json), and write a response body. Useful for confirming your producer handles error responses correctly. Many webhook senders retry on 5xx; configuring a 500 here is the easiest way to verify the retry behaviour without touching production code.