The WhatsApp character limit per message is 4,096 characters for a text message on the Business API, while an approved template body is capped at 1,024 characters, with 60-character headers and footers and 25-character button labels. With an image, the caption limit is 1,024 characters, and files can be up to 5 MB for images, 16 MB for video and audio, and 100 MB for documents such as PDF invoices.
Disclosure: this guide is published by RichAutomate, a WhatsApp Business API platform. Every limit below was checked against Meta's Cloud API documentation (text, image, interactive and sticker message pages, the media reference, the template components page and the business profile reference) on 30 October 2026.
Those are the numbers that matter most, but they are not the whole story. Buttons, list rows, captions, stickers and codecs all have their own limits, and most "WhatsApp is not sending" tickets we see from Indian businesses come from one of them. This guide puts every common limit in one place, explains how Hindi and regional scripts are counted, and ends with a pre-send checklist your team can use before every campaign.
A note on accuracy: the figures below are Meta's published Cloud API limits as checked on 30 October 2026. Where Meta does not publish a number (for example, recommended image dimensions), we say so and label our figure as practical advice rather than a rule. Meta revises limits from time to time, so verify against Meta's developer documentation before you hard-code anything into your own integration.
Why WhatsApp limits matter more than you think
Exceeding a limit rarely fails gracefully. Depending on where you break the rule, you will see one of four outcomes:
- The template is rejected at submission because a component is too long or a sample is invalid.
- The API call fails with a validation error, usually because a variable pushed the final body past its limit.
- The message is accepted but never delivered, which is typical for videos with the wrong codec or files over the size cap.
- The message delivers but performs badly, because the customer only sees the first line in the notification and never opens it.
The first three cost you money and time. The fourth quietly costs you read rate on every campaign. Knowing the limits up front avoids all four.
Text character limits by message component
WhatsApp treats each part of a message as a separate field with its own cap. This table covers session messages (sent inside the 24-hour customer service window), template messages and interactive messages.
| Component | Limit | Notes |
|---|---|---|
| Session (free-form) text message | 4,096 characters | Only inside the 24-hour window after the customer messages you; only the first URL gets a link preview |
| Media caption (image, video, document) | 1,024 characters | Shown under the media; keep the key line first |
| Template header (text) | 60 characters | Supports one variable; keep the filled-in value inside 60 to be safe. No Markdown formatting |
| Template body | 1,024 characters | Limit applies after variables are filled in |
| Template footer | 60 characters | No variables allowed |
| Template button text | 25 characters | Applies to quick-reply, URL and phone-number buttons |
| Phone-number button value | 20 characters | The number itself, including country code |
| Copy-code button value | 20 characters | One copy-code button per template |
| URL button target | Up to 2,000 characters | One variable allowed at the end of the URL (dynamic URL) |
| Template buttons, total | Up to 10 combined | Within that: at most 2 URL buttons, 1 phone-number button and 1 copy-code button; quick replies and other buttons must be grouped |
| Interactive reply buttons | Max 3 buttons | Each button title up to 20 characters; button ID up to 256 |
| Interactive reply-button body | 1,024 characters | Footer up to 60 characters |
| Interactive list body | 4,096 characters | Header and footer up to 60 characters each |
| Interactive list: button label | 20 characters | The label that opens the list, such as "View plans" |
| Interactive list: rows | Up to 10 rows total | Spread across up to 10 sections; row ID up to 200 characters |
| Interactive list: section title | 24 characters | Required when you use more than one section |
| Interactive list: row title | 24 characters | Keep it scannable |
| Interactive list: row description | 72 characters | Optional secondary line |
Templates vs interactive messages
Teams often confuse the two button systems. Template buttons are defined when you submit the template to Meta and go out with that template, including outside the 24-hour window. Interactive reply buttons and lists are built at send time and can only be used inside an open session. If you need structured choices in a first-touch marketing message, you need a template with quick-reply buttons. Our guide to reply buttons, list messages and flow templates walks through which format fits which journey.
For product showcases, carousel templates add another layer: each card has its own short body and buttons, and every card must use the same header media type. See the WhatsApp carousel template guide for the card-level rules.
WhatsApp character limit with an image
When you send an image, the text goes in the caption, and the caption limit is 1,024 characters, not 4,096. The same 1,024 cap applies to video and document captions. If your message needs more room, send the image first and follow it with a separate text message (inside the 24-hour window) of up to 4,096 characters, or move the detail behind a URL button.
For an image template, the image sits in the header and the text sits in the template body, so the body limit of 1,024 characters applies instead of a caption. Either way, plan for about 1,000 characters of copy next to any picture.
WhatsApp Business profile limits: About, description and address
Your business profile has its own caps, and they are often confused with message limits. These are from Meta's business profile reference:
| Profile field | Limit |
|---|---|
| About (the short status line) | 1 to 139 characters |
| Description | 512 characters |
| Address | 256 characters |
| 128 characters | |
| Websites | Up to 2, each up to 256 characters |
The display name is separate again: it is reviewed by Meta rather than capped by a simple character count. If yours was declined, see our guide to WhatsApp display name rejection reasons.
Media file-size limits by type
Media limits are enforced on the file you upload or link. A file one kilobyte over the cap fails, so leave headroom.
| Media type | Supported formats | Max size | Practical notes |
|---|---|---|---|
| Image | JPEG, PNG | 5 MB | Meta requires 8-bit RGB or RGBA; caption up to 1,024 characters |
| Video | MP4, 3GPP | 16 MB | H.264 video with AAC audio, a single audio stream or none; Meta advises the Main or Baseline profile without B-frames |
| Audio | AAC, AMR, MP3, M4A, OGG (Opus codec only, mono) | 16 MB | OGG with Opus plays as a voice note |
| Document | PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT | 100 MB | PDF gives the most reliable preview on phones |
| Sticker | WebP | 100 KB static / 500 KB animated | Meta lists only format and size; 512 x 512 pixels is the standard sticker canvas |
Product videos under 16 MB
Most Indian D2C brands shoot product videos on a modern phone at 4K, which produces roughly 50 to 100 MB per minute. That will never go through. Export at 720p, H.264, a bitrate around 1.5 to 2 Mbps and AAC audio at 128 kbps, and a 45-second clip lands comfortably near 8 to 10 MB. Shorter is also better for watch-through. The WhatsApp video messages guide covers encoding settings and template headers in detail.
Send these messages on WhatsApp, from your own number
We get your templates approved on the official WhatsApp API and set up your first broadcast with you. ₹0 platform fee, you pay only Meta's per-message rate.
GST invoices and long PDFs
The 100 MB document cap is generous; a GST tax invoice is usually under 300 KB. The real issues are elsewhere: scanned invoices saved as high-resolution images inside a PDF can balloon to 20 MB or more and load slowly on 4G, and files without a sensible filename look suspicious to customers. Generate invoices as text-based PDFs, name them clearly (for example, Invoice-INV-2026-0142.pdf), and send them as a document, not an image. Our guide to sending PDF documents through the WhatsApp API has the full workflow, including template document headers.
How Hindi, regional scripts and emoji are counted
WhatsApp counts characters, not bytes. A Devanagari, Tamil or Bengali message is not penalised because each character takes more bytes to store. But "character" is less obvious in Indic scripts than it looks.
- Conjuncts and matras count separately. A syllable that looks like one letter, such as "क्ष" or "कि", is made of several Unicode code points. A Hindi sentence that looks like 80 letters may count as 110 or more.
- Emoji can count as two or more characters. Many emoji are surrogate pairs, and skin-tone or flag emoji are sequences of several code points. A body full of emoji uses up the 1,024 budget faster than you expect.
- Line breaks count. Every newline is a character. Heavy formatting with blank lines between every sentence adds up.
- Formatting markers count. The asterisks for bold and underscores for italics are part of the text.
The safe approach is to measure the final text with a tool that counts Unicode code points, rather than eyeballing it in a word processor. The free WhatsApp template approval checker flags a body over 1,024 characters, along with variable and category problems, before you submit; inside RichAutomate the template builder also stops a text header that runs past 60 characters.
Template variables: the hidden length trap
The 1,024-character body limit applies to the message as delivered, after every variable has been replaced. A template that measures 950 characters with placeholders like {{1}} and {{2}} can fail at send time when {{1}} is a long customer name and {{2}} is a 120-character product title.
Three habits prevent this:
- Budget each variable. Decide a maximum length for every variable (for example, name 30, product 60, order ID 20) and add those maximums to the static text.
- Truncate in your data layer. Cut long product names to a fixed length with an ellipsis before they go into the payload.
- Use realistic samples. Meta reviews the sample values you provide. Short, realistic samples get approved faster and reflect what customers actually see.
For more on structuring variables, see our guide to WhatsApp template variables and personalisation.
Just because you can use 1,024 characters does not mean you should
On most Android phones, the notification shows only the first line or two of a message, roughly 40 to 60 characters before truncation. The lock-screen preview is often all a customer reads before deciding whether to open it.
In practice, we recommend:
- Marketing bodies of about 300 to 600 characters. Long enough to give context and an offer, short enough to read in one glance after opening.
- Utility messages as short as possible. An order confirmation or delivery update rarely needs more than 200 characters plus a button.
- The hook in the first line. Put the offer, the order number or the reason for the message right at the top. "Your order #4821 has shipped" beats "Dear valued customer, we are pleased to inform you".
- Details behind a button. Push long terms, size charts or catalogues to a URL button or a PDF rather than the body.
Symptom, cause and fix: troubleshooting limit errors
When something fails, start from what you observe. This table maps the most common symptoms to their usual causes.
| Symptom | Likely cause | Fix |
|---|---|---|
| Template rejected at submission | Body over 1,024 characters, header or footer over 60, or a button label over 25 | Trim the component; count Unicode characters, not visible letters |
| Template approved but send fails with a parameter error | Variables expanded the body past 1,024 characters, or a header variable pushed the header past 60 | Cap variable lengths and truncate long values before sending |
| Header image looks blurry or is rejected | Low-resolution source, wrong format (WebP, HEIC), not 8-bit RGB/RGBA, or file over 5 MB | Use JPEG or PNG; around 1,125 x 600 pixels compressed under 1 MB works well in practice (Meta publishes no required size) |
| Video accepted by API but never delivers or will not play on Android | Wrong codec (HEVC/H.265 from iPhones), H.264 High profile with B-frames, multiple audio tracks, or over 16 MB | Re-encode to MP4 with H.264 Main or Baseline video and AAC audio, under 16 MB |
| Send fails with error 131053 | Media could not be uploaded, often because the file extension and actual MIME type do not match | Check that a .jpg really is a JPEG, a .mp4 really is MP4, and so on |
| Audio does not play as a voice note | OGG file encoded with Vorbis instead of Opus | Re-encode OGG with the Opus codec, or send as MP3/AAC |
| Document shows no preview or a generic icon | Missing or wrong file extension, scanned image saved oddly, or no filename passed | Send a text-based PDF with a clear filename and correct extension |
| Message truncated in notifications, low read rate | Key information buried below the first line | Lead with the hook in the first 40 to 60 characters |
| Interactive message fails to send | More than 3 reply buttons, a button title over 20 characters, or more than 10 list rows | Switch to a list for more options, or shorten titles |
| Sticker rejected | Not WebP, not 512 x 512, or over 100 KB static / 500 KB animated | Export to WebP at exactly 512 x 512 and compress |
If the template is rejected for content rather than length, the causes are different. Our template rejection fixes guide covers policy and formatting reasons, and the WhatsApp Business API error codes decoded article explains the API errors you will see in webhook responses.
Pre-send checklist
Run through this before submitting a template or launching a campaign:
- Body measures under 1,024 characters with every variable at its maximum expected length.
- Header and footer are each under 60 characters; every button label is under 25.
- The first line carries the hook, order number or offer.
- Marketing body sits around 300 to 600 characters; utility messages are shorter.
- Header image is JPEG or PNG and under 5 MB (ideally under 1 MB).
- Video is MP4, H.264 plus AAC, single audio track and under 16 MB.
- Documents are text-based PDFs with a clear filename.
- Interactive messages use no more than 3 reply buttons or 10 list rows, with titles inside their limits.
- Hindi or regional-language text has been counted in Unicode characters, including emoji and line breaks.
- A test send to an internal number has been checked on both Android and iPhone.
If fixes like this take days with your current provider, compare a Gupshup alternative and a Wati alternative, and estimate your monthly bill with the WhatsApp API cost calculator.
What sending costs on RichAutomate
Message length and media size do not change the per-message price. Meta charges per delivered template message by category: about ₹0.8631 for marketing and ₹0.115 for utility in India. A 4,000-character text costs the same as a one-line reply. Since 1 October 2026, the first 1,000 service replies per number each month (free-form replies inside the 24-hour window) are free, and further replies are charged at the utility rate.
| Message | Meta rate | RichAutomate Client Pay (Meta + ₹0.10) | RichAutomate SaaS Pay (all-in) |
|---|---|---|---|
| Marketing template | ₹0.8631 | ₹0.9631 | ₹1.50 |
| Utility template | ₹0.115 | ₹0.215 | ₹0.50 |
RichAutomate has ₹0 setup and no mandatory monthly fee; optional plans are Starter ₹499, Pro ₹899 and White-label ₹1,199 a month. Full details are on the RichAutomate pricing page.
Want fewer rejected templates? Run each draft through the template approval checker, then build and send it from RichAutomate, so your team spends time on campaigns, not on rejections. Start free trial with 14 days and 100 free credits, no setup fee.