Free tool · no signup · runs in your browser

Discord Webhook Tester

Find out in one click whether a webhook URL still works and where it posts. Then send, edit and delete a test message, with every error and rate limit spelled out.

Check the webhook

Channel settings, Integrations, Webhooks, Copy Webhook URL.

Post, edit and delete a test message

54/2,000

Post into an existing thread.

Needed when the webhook belongs to a forum or media channel.

Paste a webhook URL in step 1 first.

The URL never leaves your browser except in the requests to discord.com. No server call, nothing stored, token masked in the log.

What the check tells you

The check is a read of the webhook object, the one request Discord allows with nothing but the URL. It posts nothing, so it is safe to run against a production channel. A healthy answer names the webhook, the channel and server it belongs to, and its type: Incoming for a webhook created in a channel's settings, Channel Follower for the internal kind that relays an announcement channel, or Application for one owned by a bot. Comparing the channel ID against the channel you expected catches the common mix-up where a staging and a live URL got swapped in a config file.

The application line matters if you plan to add buttons. A webhook a bot created can send any component; a channel webhook can send link buttons only, and only when the request includes with_components=true. The Discord embed builder adds that flag for you when you design a message with buttons.

Reading the failures

Almost every broken webhook falls into three answers. Unknown Webhook (10015) with a 404 means the ID points at nothing: the webhook, or its whole channel, was deleted. Invalid Webhook Token (50027) with a 401 means the ID is fine but the long token after it is not, which happens when a URL is truncated in a chat message or someone pressed reset. A 429 means you are sending too fast; the answer says how many seconds to wait and the button here locks itself until then.

When the test message itself is refused, the response names the field that broke a rule, and forum channels add one more requirement: a post title or a thread ID. Each explanation links the matching page in the Discord error reference, from 10015 to 50027, with the causes ranked and the fix in order.

Why test the edit and delete too

Plenty of integrations post fine and then fail the first time they try to update a status message or clean up after themselves. The second half of the tester runs the whole lifecycle with one throwaway message: post it with wait=true so Discord returns its ID, change it, then delete it. If the post works and the edit fails, the message most likely sits in a thread, and the request needs the thread ID. Each step shows the rate-limit bucket Discord assigned, so you can see how much headroom a burst of updates really has, and the Discord limits page explains how those buckets reset.

Keeping a webhook URL safe

A webhook URL is a password with posting rights. Keep it in an environment variable or a secrets manager rather than in code or a shared document. If it shows up somewhere it should not, deleting the webhook in the channel settings revokes it instantly, and a new one takes seconds. Rotating it also clears any Unknown Webhook errors from old copies, since every sender has to pick up the new URL. For a step-by-step setup with curl, embeds and threads, read the Discord webhooks guide. When you want a channel that answers members instead of one that only receives posts, that is a job for a bot, and a hosted Discord chatbot skips the gateway code entirely.

Frequently asked questions

How do I test if a Discord webhook URL still works?

Paste the URL and press Check webhook. The tester asks Discord for the webhook object, which needs no bot token and posts nothing. A working webhook comes back with its name, channel and server IDs. A deleted one answers Unknown Webhook (10015), and a URL with a damaged token answers Invalid Webhook Token (50027). The check is a single read, so it is safe on a busy channel.

Why does my Discord webhook return 404 or 401?

A 404 with code 10015 means no webhook has that ID any more: someone deleted it, deleted its channel, or the number in the URL is wrong. A 401 with code 50027 means the ID exists but the token after it does not match, usually because the URL was cut short when copied or the webhook was reset. Copy the URL again from the channel's Integrations settings.

What are the rate limits for a Discord webhook?

Discord does not publish fixed numbers. Each response carries headers that say how many requests the bucket allows, how many remain and when it resets, and the tester shows them after every call. When you go over, Discord answers 429 with retry_after in seconds. Wait that long before the next request; retrying early keeps the block in place and can add a global limit.

Is it safe to paste my webhook URL into this tester?

The URL stays in this browser tab. Requests go from your browser straight to discord.com, the request log masks the token, and nothing is stored or sent to Conferbot. Treat the URL like a password all the same: anyone who has it can post in your channel. If it has been shared somewhere public, delete the webhook in the channel settings and create a new one.

Can a webhook edit or delete its own messages?

Yes. A webhook can read, edit and delete any message it sent, using the message ID that came back when it posted. The tester does exactly that with its test message, so you can confirm the full lifecycle works before wiring it into your code. It cannot touch messages sent by people, by bots, or by a different webhook in the same channel.

What is the difference between a channel webhook and an application webhook?

A channel webhook (type 1, Incoming) is created in a channel's Integrations settings and posts with a generated token. An application webhook (type 3) belongs to a bot and is used for interaction replies. Only application-owned webhooks may send interactive components such as buttons that run code; a channel webhook is limited to link buttons and needs the with_components flag for those.

Related

Need replies, not just posts?

A webhook only talks. Conferbot runs a Discord bot that answers your members, cites your docs and hands tricky questions to your team. Free plan, no card.