IZN Tools

Счётчик символов

Символы с пробелами и без, с учётом лимитов площадок.

Emoji считается одним символом, а не двумя
Символов0
Без пробелов0
Meta title0 / 60
Meta description0 / 155
Пост в X0 / 280
Одна SMS0 / 160
og:title0 / 88
Заголовок YouTube0 / 100
Ожидание ввода
Посчитано на вашем устройстве

Лимиты, которые реально срабатывают

| Где | Лимит | Что происходит дальше | | --- | --- | --- | | SMS (обычная) | 160 | Разбивается на несколько, тарифицируется отдельно | | SMS (кириллица или emoji) | 70 | То же самое, вчетверо раньше | | Пост в X | 280 | Отклоняется | | og:title | ~88 | Обрезается в карточке | | Заголовок YouTube | 100 | Отклоняется | | Meta description | ~155 | Обрезается в выдаче |

Символы — это не байты и не кодовые единицы

Три разных числа, и формы расходятся в том, какое из них проверяют:

  • Символы, которые видит читатель — то, что считается здесь
  • Кодовые единицы UTF-16 — то, что возвращает .length в JavaScript, а значит то, что использует большинство наивных валидаторов
  • Байты — то, что меряет ограничение колонки в базе

Русское предложение содержит столько же символов, сколько его латинский эквивалент, вдвое больше байт в UTF-8 и столько же кодовых единиц. Emoji — это один символ, две кодовые единицы и четыре байта. Если форма отклоняет текст, который по вашему счёту помещался, она считает одно из двух других.

Подсчёт под колонку базы данных

Если ограничение — varchar(255), вы упираетесь в байты или в символы, в зависимости от СУБД и сопоставления. Считайте по более строгому прочтению и оставляйте запас: упереться в лимит на вставке хуже, чем чуть недобрать.

Вопросы

Почему здесь emoji считается одним символом, а в другом месте двумя?+

Потому что большинство инструментов считает единицы UTF-16, а не символы, которые видит читатель. Emoji обычно занимает две такие единицы, а флаг или emoji с тоном кожи — четыре и больше. Здесь считается так, как посчитал бы человек, — и так, как должна считать хорошо сделанная форма.

Эти лимиты официальные?+

Это то, на чём каждая площадка обрезает или отклоняет, а оно не всегда совпадает с её справкой. Считайте их практическим ориентиром и проверяйте то, на что полагаетесь: площадки меняют лимиты без предупреждения.

SMS правда обрезается на 160?+

На 160 — для обычных символов GSM. Один символ вне этого набора (emoji, кириллическая буква, «умная» апострофа) переводит всё сообщение в другую кодировку, и лимит падает до 70. Поэтому сообщение, которое помещалось, после одной правки вдруг становится тремя.

Зачем вообще мерить meta title в символах?+

В основном незачем: Google обрезает по ширине в пикселях. Это полезно для площадок, которые действительно считают символы. Для выдачи берите [генератор meta title](/ru/t/meta-title-generator) — он меряет ширину отрисовки.