Typing indicator· Conversation surface
Typing Indicator — What the Three Dots Cost You on Each Channel (2026)
Quick answer: Between two humans the typing indicator is free and automatic. Between your bot and a customer it is an API call with rules, and the rules are not the same on any two channels. WhatsApp gives you 25 seconds per call and fuses the indicator to the read receipt. Telegram gives you five seconds and expects you to loop. Messenger gives you an on switch and an off switch and publishes no expiry at all. None of that appears in the feature grid you compared platforms on, and all of it changes what your bot can promise.
The thing itself, and why the bot version is different
Between two people the indicator is a byproduct. Your keyboard fires an event, the app relays it, the other phone draws the dots, and nobody made a decision. The folk name that grew up around the iMessage version, the typing awareness indicator, describes it better than the generic one does: it is an awareness signal, and its whole content is someone is there and something is coming. We use the folk name because it is what people search for, not because Apple publishes it.
A bot has no keyboard. Nothing fires. So on every messaging API the indicator becomes an explicit outbound request that your server chooses to make, at a moment your server chooses, for a duration the channel decides. That converts a courtesy into an engineering decision with a latency budget attached, which is why it belongs in the same conversation as first response time rather than in a styling menu.
Three channels, three incompatible contracts
| WhatsApp Cloud API | Messenger Platform | Telegram Bot API | |
|---|---|---|---|
| How you send it | inside the mark-as-read request | sender_action: typing_on | sendChatAction with action: typing |
| Published expiry | 25 seconds, or when you respond | none published on the page | 5 seconds or less, or when your message arrives |
| Explicit off switch | none documented | typing_off | none documented |
| Marks the message read | yes, unavoidably | separate action (mark_seen) | not applicable |
| Needs an inbound message ID | yes, required parameter | no, recipient ID only | no, chat ID only |
| Named variants on the page | one (type: "text") | typing_on, typing_off, mark_seen, react, unreact | eleven activity types |
Read the third and fourth rows together, because that is where the design decision hides.
On WhatsApp, the typing indicator is the read receipt
This is the finding worth carrying out of this page. Meta's documentation does not present the WhatsApp typing indicator as a standalone signal. It presents it as a field inside the request that marks a message read:
{
"messaging_product": "whatsapp",
"status": "read",
"message_id": "<WHATSAPP_MESSAGE_ID>",
"typing_indicator": { "type": "text" }
}
The status is read. There is no variant of this call that shows the dots without it. So on WhatsApp, "should the bot look responsive" and "should the customer see that we opened their message" are not two questions. They are one question, and answering yes to the first commits you to the second.
Two consequences follow from the same payload. First, message_id is a required parameter and it comes from an inbound webhook, so you can only show a typing indicator in reply to something the customer just sent. There is no way to display it before a proactive message. Second, Meta publishes a hard ceiling and an instruction with it: "The typing indicator will be dismissed once you respond, or after 25 seconds, whichever comes first," and "To prevent a poor user experience, only display a typing indicator if you are going to respond." Twenty-five seconds is generous enough that one call covers almost any model-generated answer, which means on WhatsApp you fire once and forget.
Our live chat entry recommends showing typing indicators and read receipts together as good practice. On WhatsApp that recommendation is satisfied by definition, and it is worth knowing that the reverse is also true: you cannot take the first without the second.
On Telegram, five seconds means you write a loop
Telegram's sendChatAction is documented in one sentence that changes the implementation: "The status is set for 5 seconds or less (when a message arrives from your bot, Telegram clients clear its typing status)." Telegram adds the same restraint Meta does, from the other direction: "We only recommend using this method when a response from the bot will take a noticeable amount of time to arrive."
Do the arithmetic on a twelve-second answer, which is an ordinary retrieval-plus-generation round trip. On WhatsApp that is one call. On Telegram it is a refresh roughly every five seconds for as long as the work takes, so three calls, and if your platform does not expose a keepalive the dots vanish at second five while the customer is still waiting. A bot that shows the indicator and then loses it looks worse than one that never showed it, because the disappearance reads as the other side gave up.
Telegram also does something neither Meta product does: it names the medium. Eleven activity values are documented, including upload_photo, record_voice, upload_document, find_location and choose_sticker, so a bot fetching a PDF can say "sending document" rather than "typing." If your bot returns files or audio, that is a free honesty upgrade, and it costs one string.
Messenger publishes advice instead of a timer
Meta's Messenger Sender Actions page does not publish a duration at all. What it publishes instead is a pair of best practices that sit oddly next to the WhatsApp page, and the difference is worth naming because both pages are Meta's.
WhatsApp says the indicator is "good practice if it will take you a few seconds to respond," and then: "To prevent a poor user experience, only display a typing indicator if you are going to respond." Messenger says: "Do not allow an unnatural amount of time (too long or too short) to pass between typing_on and typing_off sender actions. Ideally, the user should feel that a real person was typing the message in the elapsed time."
One product tells you not to fake presence. The other tells you to pace it so the customer believes a person was at the keyboard. Our own position is the WhatsApp one, and it is a position rather than a measurement: a delay inserted so a machine reads as human is a small deception, it is the sort of thing customers notice in aggregate even when they cannot name it, and the honest version of the same goal is to answer faster. Where a pause genuinely helps is when the bot is doing real work and the dots are true.
Messenger also carries two limitations that are easy to trip over. Sender action requests must contain only the action and the recipient, so you cannot attach one to the message you are already sending, and the recipient must be signed in for the action to display at all. Meta also warns that batching typing_on with typing_off executes both so quickly that the indicator may appear "for a fraction of a second." That is Meta's documented behavior; our reading of it, which is an inference rather than a vendor statement, is that it accounts for most of the indicator flicker teams file as a rendering bug.
What the buying literature says about it, which is nothing
We searched all fifteen published platform reviews in our catalog on 13 August 2026, case-insensitively, for the string "typing". It returns five matching lines across four reviews, and in none of them as a control the buyer configures. Two hits are unrelated word senses: Landbot uses it for typing a goal into the AI Copilot, Voiceflow for variable data types, plus one substring match inside "prototyping". One is screenshot alt text in our Chatfuel review noting a typing indicator visible in the preview sandbox. Not one of the fifteen records a setting for the bot's own typing indicator, a configurable delay, or a Telegram keepalive.
The fourth review points the other way, and it is the most interesting one. Tidio sells a feature it calls "Live typing preview." Our screenshot of Tidio's plan comparison surface lists it on the Growth tier, which our pricing table records at $59 per month billed monthly. We have not tested the feature and Tidio's own documentation of its behavior is not something we have verified, so take the name at face value and no further: whatever it does, it is a typing signal the business pays for. The same word, pointed at the customer, is undocumented across all fifteen reviews.
We are stating that as a gap in our own coverage as much as a gap in the market. Absence from fifteen reviews is not proof that no builder exposes the control; it is evidence that none of them considered it worth putting in front of a buyer, and that we have not asked the question in a review yet. It is now on our list for the next refresh pass.
Where it breaks
The dots that never resolve. The indicator fires, the backend call fails, and nothing sends. On WhatsApp the display clears itself at 25 seconds; on Telegram at five. Both leave the customer looking at an empty thread with no error. Show the indicator after the work starts, not before, and make your failure path send something.
Typing forever on a handoff. The bot escalates, the indicator was already sent, and the queue is four minutes long. The dots expire and the conversation goes silent. A human handoff needs a real message stating that a person is coming, not an animation standing in for one.
Read receipts you did not decide to enable. A team turns on WhatsApp typing indicators for responsiveness and inadvertently starts blue-ticking every inbound message, including the ones nobody will answer until Monday.
Vanishing dots on Telegram. No keepalive, an answer that takes longer than five seconds, and the indicator disappears mid-wait.
Deliberate padding. A delay added purely to make the bot feel human, on a bot that had the answer immediately. It costs the customer time, and it is the one item on this list that is a choice rather than an accident. Our QA testing protocol treats sub-two-second replies as acceptable with an indicator present, which is the standard we would hold to.
The indicator is one of eight signals a customer needs and cannot get from reading the transcript. The other seven, and a twenty-minute audit that tests all of them against a live bot, are in our companion guide on conversational UX.
Related terms
- Turn-taking — who holds the floor and when the bot is allowed to answer, which is the layer the indicator reports on.
- Live chat — the surface where typing indicators, read receipts and presence originally came from.
- Chatbot first response time — the number the indicator is buying patience for.
- WhatsApp Business API — the channel where the indicator and the read receipt are one request.
- RCS messaging — the carrier standard that brought typing indicators to the native SMS inbox.
- Human handoff — where an animation is not an acceptable substitute for a sentence.
- Conversational UX — the other seven state signals a transcript cannot show, and how to audit them.
FAQ
What is a typing indicator?
It is the signal, usually three animated dots, that tells one participant in a chat that the other is composing a message. In person-to-person messaging the app generates it from keyboard activity. In business messaging there is no keyboard, so it is an explicit API request your server sends, with an expiry the channel publishes and rules that differ by channel.
How long does a WhatsApp typing indicator last?
Meta documents 25 seconds. The exact wording is that the indicator "will be dismissed once you respond, or after 25 seconds, whichever comes first." Because the ceiling is that high, a single call covers most model-generated replies without any refresh logic.
Does showing a typing indicator on WhatsApp mark the message as read?
Yes, and there is no documented way to avoid it. The typing indicator is a field inside the request whose status is read, so the two travel together. If your team has a policy about when inbound messages get marked read, showing typing indicators is a change to that policy rather than a UI tweak.
Why does my Telegram bot's typing indicator disappear?
Because Telegram sets the status "for 5 seconds or less" and clears it when your bot's message arrives. If the reply takes longer than five seconds you have to call sendChatAction again, on a loop, until you send. There is no long-duration variant.
Should a chatbot add an artificial typing delay?
Our position is no, and it is a position rather than a finding. Meta's own two products disagree with each other here: the WhatsApp page says to display the indicator only if you are going to respond, while the Messenger page asks you to pace the gap so the user feels a real person was typing. A delay that exists only to simulate a human costs the customer time and buys them nothing. Use the indicator when the bot is actually working, and spend the effort on being faster.
Can I show a typing indicator before a proactive message?
Not on WhatsApp. The request requires a message_id taken from an inbound webhook, so there has to be a customer message to attach it to. Telegram's sendChatAction takes only a chat ID and Messenger's sender action takes only a recipient ID, so neither has that constraint.
Is a typing indicator the same as a read receipt?
Conceptually no. One says a reply is coming; the other says the message was opened. On WhatsApp's API they happen to be the same request, which is the whole reason this distinction matters to anyone building there.
Sources
- Meta. Typing indicators, WhatsApp Business Platform documentation (page stamped "Updated: Jun 17, 2026" when read) — the statement that on receiving a messages webhook you can use the
message.idvalue "to mark the message as read and display a typing indicator so the WhatsApp user knows you are preparing a response"; the sentence that follows it, "This is good practice if it will take you a few seconds to respond"; the rule that the indicator "will be dismissed once you respond, or after 25 seconds, whichever comes first"; the instruction "To prevent a poor user experience, only display a typing indicator if you are going to respond"; and the request syntax showingmessaging_product,statusset toread, a requiredmessage_id, andtyping_indicatorwithtypeset totext, posted to the phone number ID's messages endpoint. Read in a live browser session on 13 August 2026. developers.facebook.com - Meta. Sender Actions, Messenger Platform documentation (page stamped "Updated: Jan 21, 2026" when read) — the
sender_actionparameter set totyping_onposted to the Page ID's messages endpoint; the limitation that sender action requests "should only include the sender_action parameter and the recipient object"; the limitation that "the recipient must be signed in for sender actions to be displayed"; and the best practices to sendmark_seenon receipt, to sendtyping_onwhen the bot will respond, to sendtyping_onandtyping_offin separate batch requests because batching "may result in the typing_on indicator being displayed for a fraction of a second," and not to "allow an unnatural amount of time (too long or too short) to pass between typing_on and typing_off sender actions," with the stated ideal that "the user should feel that a real person was typing the message in the elapsed time." The page's guidance about elapsed time is entirely relative, covering the interval betweentyping_onandtyping_offand the "fraction of a second" batching warning, and it names no duration after which the indicator clears on its own. It also defers to the Page Messages reference for "a complete list of sender actions," so the actions named in this entry's table are the ones this page documents rather than a guaranteed complete set. Read in a live browser session on 13 August 2026. developers.facebook.com - Telegram. Bot API,
sendChatActionmethod (page listing July 14, 2026 as its most recent change when read) — the statement that "the status is set for 5 seconds or less (when a message arrives from your bot, Telegram clients clear its typing status)"; the recommendation to use the method "only when a response from the bot will take a noticeable amount of time to arrive"; and the eleven documentedactionvalues:typing,upload_photo,record_video,upload_video,record_voice,upload_voice,upload_document,choose_sticker,find_location,record_video_noteandupload_video_note. Read in a live browser session on 13 August 2026. core.telegram.org - Chatbotscape platform reviews, all fifteen published reviews, searched 13 August 2026 — the catalog-wide claim in this entry. The method: a case-insensitive search for the string "typing" across every published review, excluding process notes and backups. It returns five matching lines in four reviews, Chatfuel, Landbot, Tidio and Voiceflow, and in none of them as a bot-side typing-indicator control. The Landbot hit is typing a Copilot prompt (landbot-review.md:579); the two Voiceflow hits are the variable data-typing surface (voiceflow-review.md:549) and a substring inside "prototyping" in a quoted G2 summary (voiceflow-review.md:478); the Chatfuel hit is the
altattribute of a preview-sandbox screenshot, not its caption (chatfuel-review.md:623); and the Tidio hit is the "Live typing preview" feature name inside thealtattribute of a plan-comparison screenshot (tidio-review.md:725). A separate case-insensitive search for "typing delay", "response delay", "delay node", "artificial delay" and "delay step" returned no bot-side typing-delay control in any of the fifteen; the "response delay" hits that did return are about vendor support turnaround. We publish no typing-indicator benchmark for any platform. - Chatbotscape. Tidio review — the source of the Live typing preview tier placement, and two separate artifacts within it, which this entry keeps separate rather than fusing. The feature name appears only in the
altattribute of our screenshot of Tidio's plan comparison surface (tidio-review.md:725), which lists it under Growth and displays that tier at the annual-billed rate of €49.17 per month. The $59 per month figure is the monthly-only rate from our own pricing table (tidio-review.md:312), used here per our pricing methodology. Our review's Growth feature row does not itself list Live typing preview, and we have not tested the feature or verified Tidio's documentation of what it does. - Ahrefs Keywords Explorer, US and volume-by-country, 13 August 2026 — the search-demand figures and the parent-topic findings recorded in this entry's keyword note.
- Chatbotscape evaluation methodology. /methodology (continuously updated).