Last checked against official documentation:
| Platform | Item | Limit | Notes | Source |
|---|---|---|---|---|
| Telegram | Message text length | 4096 characters | After entity parsing. | Source |
| Telegram | Media caption | 1024 characters | After entity parsing. | Source |
| Telegram | callback_data | 1-64 bytes | UTF-8 bytes, not characters. | Source |
| Telegram | Bot commands per scope and language | 100 | Via setMyCommands. | Source |
| Telegram | Command name | 1-32 characters | Lowercase letters, digits and underscores. | Source |
| Telegram | Command description | 1-256 characters | Source | |
| Telegram | File upload by bot (multipart) | 10 MB photos, 50 MB other files | Cloud Bot API server. | Source |
| Telegram | File download via getFile | 20 MB | Cloud Bot API server; a self-hosted Bot API server lifts these limits. | Source |
| Telegram | Deep-link start parameter | Up to 64 characters | A-Z, a-z, 0-9, _ and -. | Source |
| Discord | Message content | 2000 characters | Source | |
| Discord | Embeds per message | 10 | Source | |
| Discord | Embed total characters | 6000 | Sum of all text fields across all embeds of a message. | Source |
| Discord | Embed title / description | 256 / 4096 characters | Source | |
| Discord | Embed fields | 25 (name 256, value 1024) | Source | |
| Discord | Embed footer / author name | 2048 / 256 characters | Source | |
| Discord | Global chat input commands | 100 | Plus 5 user and 5 message context menu commands. | Source |
| Discord | Command name / description | 1-32 / 1-100 characters | Source | |
| Discord | Options per command / choices per option | 25 / 25 | Source | |
| Discord | Initial interaction response | 3 seconds | Defer if you need longer. | Source |
| Discord | Interaction token validity | 15 minutes | For follow-up messages. | Source |
| Discord | Action rows / buttons per row | 5 / 5 | Legacy component layout. | Source |
| Slack | Message text | 40,000 characters (truncated) | Slack recommends staying under 4,000. | Source |
| Slack | Blocks per message | 50 | 100 in modals and App Home. | Source |
| Slack | Section text / header text | 3000 / 150 characters | Source | |
| Slack | Acknowledge interactions | 3 seconds | Respond with HTTP 200, then do the work. | Source |
| Text message body | 4096 characters | Source | ||
| Interactive body / header / footer | 1024 / 60 / 60 characters | Source | ||
| Reply buttons | 3 (title 20 characters) | Source | ||
| List message rows | 10 in total (title 24, description 72) | Button text 20 characters. | Source | |
| Customer service window | 24 hours | Outside it, only approved templates. | Source | |
| Media size | Image 5 MB, video and audio 16 MB, document 100 MB | Source | ||
| Messenger | Text message | 2000 characters | UTF-8. | Source |
| Messenger | Quick replies | 13 (title 20 characters) | Source | |
| Messenger | Standard messaging window | 24 hours | Message tags cover limited cases outside it. | Source |
| Twitch | Chat message | 500 characters | Source | |
| Matrix | Event size | 65536 bytes | Full event as canonical JSON, including signatures. | Source |
| X | Post length | 280 weighted characters | Many CJK characters and emoji count as 2; URLs count as 23. Paid tiers allow longer posts. | Source |
Practical advice
- Split long text before sending; the message splitter tool does it per platform without breaking code blocks. Message splitter
- Characters are not bytes: callback_data and Matrix events are limited in bytes, so accented letters and emoji use more of the budget.
- Response deadlines (Discord 3 seconds, Slack 3 seconds) mean: acknowledge first, do the slow work afterwards.
Related: Rate limits, Rate limit comparison tool.