W webhook-lab
Open the app

Documentation

Using webhook-lab

Everything on this page describes what's already in the app — there's nothing to install or configure beyond what you see here.

Getting started

webhook-lab builds the message on your screen first, so you can see exactly what will post before anything is sent. Once it looks right, paste in a webhook URL and hit send.

Where to find a webhook URL

  1. In Discord, open the server settings for the channel you want to post to.
  2. Go to Integrations → Webhooks.
  3. Create a new webhook, or copy the URL from an existing one.
Anyone with this URL can post to that channel. Treat it like a password — don't paste it into chat, commit it to a public repo, or share it outside people you trust with that channel.

Message fields

webhook_url

The Discord endpoint the message is sent to. This field is masked by default — click show to reveal it while you're editing.

username and avatar_url

Override the name and avatar shown on this message, without changing the webhook's saved defaults. Leave either blank to use the webhook's own name and picture.

message

The plain text content of the message. Discord's limit is 2000 characters — the counter under the field tracks this as you type.

Embeds

Turn on Add an embed to attach a formatted card below the message text — useful for announcements, patch notes, or anything that benefits from a title and a colored accent bar.

  • Title — bold text at the top of the embed.
  • Description — the body text, up to 4096 characters.
  • Color — sets the accent bar on the left edge. Pick a swatch or type a hex code directly.
  • Image URL — a full-width image shown inside the embed.
  • Footer — small text at the bottom of the embed.

The preview panel updates as you type, using the same layout Discord renders.

Profiles

A profile is a saved snapshot of the whole form — webhook URL, username, avatar, message, and embed — under a name you choose.

Saving one

Fill in the form the way you want it, type a name into the profile name field, and click Save profile.

Loading one

Pick it from the dropdown at the top of the request panel. This replaces everything currently in the form.

Deleting one

Select it from the dropdown, then click Delete.

Profiles are saved with localStorage, in this browser, on this device. They aren't synced anywhere, and clearing your browser data will remove them.

Settings

Open the Settings panel from the top bar to change how sending behaves.

  • Confirm before sending — adds a yes/no prompt right before the request goes out. Useful if you're testing frequently and want a guard against fat-fingering send.
  • Clear message after a successful send — empties the message and embed fields once Discord confirms delivery, leaving the webhook URL and username in place.
  • Remember webhook_url on this device — off by default. When on, the URL you last used is restored the next time you open the app, saved locally in your browser.

Reset settings restores all three to their defaults and clears any remembered URL.

Privacy

webhook-lab has no backend and no analytics. When you click send, your browser makes one request directly to Discord's API — the payload never passes through any server of ours.

The only things saved anywhere are the ones you explicitly ask it to save: a named profile, or a remembered webhook URL with that setting turned on. Both live in localStorage and stay on your device.

Troubleshooting

"That doesn't look like a Discord webhook URL"

Webhook URLs follow this shape:

https://discord.com/api/webhooks/{id}/{token}

Double check you copied the full URL, including the token after the second slash.

A non-204 response

Discord returns details in the response body when something's wrong — the response panel shows this verbatim. Common causes:

  • The webhook was deleted or regenerated in Discord — the old URL stops working immediately.
  • An embed field exceeds Discord's limits (title 256 characters, description 4096).
  • An image or avatar URL isn't publicly reachable.

The request fails with no response at all

This usually means the request never left your browser — check that the URL is typed correctly and that nothing (a browser extension, a network policy) is blocking requests to discord.com.