Test your Discord webhook in seconds. Paste the URL, validate it, and send a test message to make sure it works.
A Discord webhook is a unique URL that lets you send messages to a specific Discord channel without needing a bot. Webhooks are commonly used for GitHub notifications, server monitoring alerts, CI/CD pipeline updates, and custom integrations. Each webhook has its own name, avatar, and is linked to a specific channel.
Paste your webhook URL and click Check. The tool validates the URL against Discord's API and shows the webhook's name, avatar, and linked channel. If valid, you can type a custom message and send it through the webhook to confirm it's working. Your webhook URL is proxied through our server for security (browsers can't call Discord's API directly due to CORS) but is never stored or logged.
When a webhook request fails, Discord returns an HTTP status with a JSON body containing a numeric code and message. These are the ones you will actually hit:
retry_after field (in seconds) telling you when to retry. Honor it.content, no embeds, and no files. At least one is required.embed.color sent as a hex string instead of a decimal integer. Convert #9B59B6 to 10181046 before sending.Discord enforces per-webhook and per-channel rate limits, and the exact bucket sizes are determined server-side and surfaced in response headers rather than as a fixed number. Every successful response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset-After - read these to schedule your next request, do not hard-code a fixed rate. A 429 response body also carries a retry_after value (seconds). For high-volume integrations (build pipelines, log aggregation), batch multiple events into a single message - one webhook call can carry up to 10 embeds with up to 6,000 combined characters per embed, which is usually enough to consolidate a burst of events into one request.
A webhook URL is a bearer credential. Anyone with the full URL can post to your channel as the webhook bot, with no further authentication. Treat it like a password:
@everyone and @here mentions unless allowed_mentions explicitly permits them. Set "parse": [] to disable all mention pings if you do not need them.If you would rather test from the terminal, the minimal payload is one content field. A successful POST returns HTTP 204 with an empty body, or HTTP 200 with the created message JSON if you append ?wait=true to the URL. Use ?wait=true when you need the message ID back (for example, to edit or delete the message later through the /webhooks/<id>/<token>/messages/<message_id> endpoint).
Powered by Pigona - Free AI Translation for Discord