Free tool
Instagram DM character counter
Counts your message the way the API counts it, which is not the way it looks. Emoji cost more than one, and adding a link button drops the effective limit to 640. No sign-in, nothing sent anywhere.
Once it fits, a campaign delivers it to everyone who comments your keyword. 300 free DMs a month.

sunday.studio New reel pack is out. Comment REELS and we’ll send it straight to your DMs.
Replied to your commentREELS please!
Hey Maya! Here’s the reel pack. 12 templates you can edit today.
Sent through the official Instagram API
Paste your message
Nothing here is sent anywhere. The count runs in your browser and no account is needed.
Which limit actually applies
There is no single Instagram DM character limit, which is why the answers online disagree. Three different numbers govern three different situations:
| Situation | Limit | What happens past it |
|---|---|---|
| Automated reply with a link button | 640 | Meta truncates the text. No error, no warning — the end simply never arrives. |
| Automated reply with no button | 1,000 | The campaign refuses to save, naming the field, so you find out while writing rather than after sending. |
| A message you type in the app | Instagram's own | Governed by Instagram, not by us. We do not publish a number for it, because it is theirs to state and it changes. |
The 640 cap is the one that bites
A message can be well inside the campaign limit, save without complaint, and still lose its last few sentences — because attaching a button changes the format it is sent in. It is silent, and it hits exactly the messages that matter, since the ones with buttons are the ones carrying your link.
Why emoji cost more than one
The count is in UTF-16 code units, which is how JavaScript and most messaging APIs measure a string. Most characters are one unit. Anything outside the basic range is two or more, and an emoji built by joining several others costs one per part plus the joiners.
| You type | Looks like | Counts as |
|---|---|---|
| Hello | 5 characters | 5 |
| 👋 | 1 character | 2 |
| 👨👩👧 | 1 character | 8 |
| 🇵🇱 | 1 character | 4 |
A dozen emoji in a friendly message can quietly eat fifty units. That is fine at 200 characters and decisive at 630.
Writing to the limit
- Aim far below the cap. The best performing replies are two or three sentences. If you are near 640 you are writing a landing page into somebody's inbox.
- Put the link in the button, not the text. A tappable button reads better and does not spend characters on a URL.
- Remember the substitution.
{username}is replaced with a real handle, so a long username makes the sent message longer than the one you counted. - Keep the label short. 20 characters, cut without warning past that.
Six message examples you can start from, taken from the templates the product ships with.
Frequently asked questions
What is the character limit for an Instagram DM?
It depends on how the message is sent. A reply carrying link buttons goes out as a button template, and Meta caps that text at 640 characters — longer text is truncated rather than rejected. An AudienceKeeper campaign message is limited to 1,000 characters. A message you type by hand in the Instagram app is governed by Instagram itself, and that number is theirs to state, not ours.
Do emoji count as one character?
No. The count uses UTF-16 code units, so a waving hand counts as two and a family emoji made of several joined people counts as eight. The counter above shows both numbers: what you see, and what is counted.
Why did my message get cut off?
Almost certainly the button. Adding a link button changes how the message is sent, and Meta caps that format at 640 characters. A 1,000-character message saves fine and then loses its tail the moment a button is attached — silently, which is why this tool warns about it.
How long should a button label be?
At most 20 characters, because anything longer is cut before it is sent. Two or three words works: "Get the guide", "See the offer", "Book a call".
Is this counter free?
Yes, and there is no sign-in. Everything runs in your browser; nothing you type is sent anywhere.
Now make it send itself
A message that fits is only half of it. Point a campaign at a post and everyone who comments your keyword gets it automatically. 300 free DMs a month, no card.
Not affiliated with Meta or Instagram.
On this page
On this page
Once it fits, a campaign sends it automatically to everyone who comments your keyword. 300 free DMs a month.
Create a campaign
maya.creates REELS please! This is just what I needed.