Free tool · no signup · runs in your browser

Telegram Webhook Checker

Paste a bot token to see exactly where updates are stuck: the pending queue, the last delivery error in plain English, and a one-click way to set, reset or delete the webhook. Straight from your browser to Telegram.

Check the webhook

From @BotFather. Sent only to api.telegram.org.

Runs in your browser. Your token is never sent to Conferbot or stored.

Set or delete the webhook

HTTPS on port 443, 80, 88 or 8443, reachable from the internet.

Echoed in X-Telegram-Bot-Api-Secret-Token.

1-100, default 40.

Allowed update types (all default types)
curl https://api.telegram.org/bot<TOKEN>/getWebhookInfo

Reading getWebhookInfo

A Telegram bot gets new messages in one of two ways: Telegram pushes each update to a URL you registered (a webhook), or your code asks for them with getUpdates. getWebhookInfo is the one call that tells you which mode the bot is in and how delivery is going. Three fields carry nearly all the signal.

url is the registered endpoint. Empty means polling mode. pending_update_count is how many updates Telegram is holding for the bot right now. last_error_message and last_error_date record the most recent failed delivery, in Telegram's own words - "Wrong response from the webhook: 502 Bad Gateway", "Connection timed out", an SSL verification error. This checker turns each of those into a cause and a fix, and draws the pipeline so you can see which hop is broken.

Why pending_update_count keeps growing

Telegram delivers updates in order and keeps retrying the oldest one until your endpoint returns a 2xx status. One bad update, a crashed handler or a server that answers too slowly therefore stalls everything behind it, and the count climbs. Common causes, roughly in the order we see them:

  • The endpoint returns an error status. A 500 from an unhandled exception, a 502 when the app behind the proxy is down, a 404 after a route was renamed. Every one counts as not delivered.
  • The handler is slow. Work done before replying - calling an AI model, a database, another API - can outlast Telegram's patience. Reply 200 at once and process in the background.
  • The certificate does not verify. A missing intermediate certificate passes in many browsers but fails for Telegram.
  • Polling with no poller. No webhook is set and nothing calls getUpdates, so updates simply wait.

Once the endpoint is healthy the queue drains by itself - turn on Watch above to see it fall in real time. Anything still undelivered after 24 hours is discarded by Telegram.

When to drop pending updates

drop_pending_updates, available on both setWebhook and deleteWebhook, throws the whole queue away. It is the right move when the backlog is stale - a bot that was down for a day should not answer yesterday's "hello" - or when one malformed update keeps crashing your handler and you need delivery moving again now. It is the wrong move when those updates are orders, payments or support requests you still owe a reply. Fix the endpoint first, watch the queue, and drop only what you can afford to lose.

Switching between modes is the other common job. If getUpdates answers 409 Conflict, a webhook is still registered: delete it above and polling works. Rate limits that can also make a bot look silent are on the Telegram limits page, and a wider checklist lives in why your Telegram bot is not responding.

A webhook that never falls over

The durable pattern is short: an HTTPS endpoint on port 443 with a certificate from a public authority, a secret_token checked on every request, a 200 returned before any slow work, and an alert when pending_update_count climbs. If you would rather not own that endpoint at all, a hosted Telegram chatbot registers and watches the webhook for you, and the token checker confirms a token is alive before you start.

Frequently asked questions

What does pending_update_count mean in getWebhookInfo?

It is the number of updates Telegram has received for your bot but not yet delivered. With a webhook set, a rising number means your endpoint is failing or slow to answer. Without a webhook it simply counts messages waiting for your code to call getUpdates. Telegram keeps them for at most 24 hours, then discards them.

How do I clear pending updates on a Telegram bot?

Call setWebhook or deleteWebhook with drop_pending_updates set to true. The queue is discarded at once and only new messages are delivered. This checker does it with one switch on either action. Do it only when the backlog is stale - the dropped messages are gone for good and your bot never sees them.

Why does my webhook show last_error_message but the URL works in a browser?

A browser sends GET and accepts a self-signed or partial certificate chain after a warning. Telegram sends POST, needs a complete chain from a trusted CA, and only counts a 2xx reply as delivered. Check that your route accepts POST, that the intermediate certificate is served, and that nothing like a login page or a bot challenge intercepts the request.

Which ports can a Telegram webhook use?

Only 443, 80, 88 and 8443, and the URL must be HTTPS whichever port you choose. Any other port is rejected by setWebhook. If your app listens elsewhere, put a reverse proxy such as Nginx or Caddy on 443 in front of it, or use a hosting platform that already terminates TLS on a supported port.

What is the secret_token in setWebhook for?

It is a string you choose, 1 to 256 letters, digits, underscores or hyphens. Telegram sends it back in the X-Telegram-Bot-Api-Secret-Token header with every update, so your endpoint can reject requests that did not come from Telegram. If your server answers 401 after you add one, the value it checks does not match the one you registered.

Is it safe to paste my bot token here?

The token goes from your browser straight to api.telegram.org over HTTPS - the same request your own code makes. It is never sent to Conferbot, logged or saved, and it disappears when you close the tab. If you would still rather rotate it afterwards, send /revoke to @BotFather and update your deployment with the new token.

Related

Skip the webhook plumbing

Connect your Telegram bot to Conferbot and it registers the webhook, keeps the queue empty and answers for you. Free plan, no card.