The limits that actually bite
| Where | Limit | What happens past it |
| --- | --- | --- |
| SMS (plain) | 160 | Splits into several messages, billed separately |
| SMS (any accent or emoji) | 70 | Same, four times sooner |
| Post on X | 280 | Rejected |
| og:title | ~88 | Truncated in the share card |
| YouTube title | 100 | Rejected |
| Meta description | ~155 | Truncated in results |
Characters are not bytes and not code units
Three different numbers, and forms disagree about which one they enforce:
- Characters a reader sees — what this counts
- UTF-16 code units — what JavaScript's
.lengthreturns, so what most naive form validators use - Bytes — what a database column limit measures
A Cyrillic sentence is the same character count as its Latin equivalent, twice the bytes in UTF-8, and the same number of code units. An emoji is one character, two code units, and four bytes. If a form rejects text you counted as fitting, it is counting one of the other two.
Counting for a database column
If the constraint is varchar(255), you are constrained by bytes or by
characters depending on the database and the collation. Assume the stricter
reading and leave headroom — running out mid-insert is a worse failure than a
slightly short field.
Questions
Why does my emoji count as one character here and two elsewhere?+
Because most tools count UTF-16 code units rather than characters a reader sees. An emoji is usually two code units, and a flag or a skin-toned emoji can be four or more. This counts what a person would count, which is also what a well-built form should.
Are these limits official?+
They are what each platform truncates or rejects at, which is not always what its help page says. Treat them as practical guidance and verify anything you are relying on — platforms change them without notice.
Does an SMS really cut off at 160?+
At 160 for plain GSM characters. One non-GSM character — an emoji, a Cyrillic letter, a curly apostrophe — switches the whole message to a different encoding and the limit drops to 70. That is why a message that fits suddenly becomes three messages after one edit.
Why measure a meta title in characters at all?+
You should not, mostly — Google truncates by pixel width. This is useful for platforms that genuinely count characters. For search results, use the [meta title generator](/t/meta-title-generator), which measures the rendered width.