UTF-8 использует переменное число байтов. ASCII обычно занимает один байт на точку, а диакритика и emoji — больше. WordCount измеряет точный результат TextEncoder, а не умножает символы на предполагаемую ширину.

UTF-8 имеет переменную ширину

Лимит байтов нельзя вывести из видимой длины. e с комбинируемым ударением — одна графема, две точки и три байта UTF-8. Семейный emoji — одна графема и двадцать пять байтов. Кодируйте итоговый текст вместе с переводами строк.

Хранение и транспорт могут менять текст

Форма может нормализовать окончания строк, БД — применять другую кодировку, а протокол — добавлять кавычки и escape-последовательности. Счётчик измеряет только UTF-8 текущего текста, без JSON, URL-кодирования, сжатия, заголовков и накладных расходов БД.

Проверьте целевую систему

Некоторые сервисы называют лимит символов, но проверяют UTF-16 или байты; другие нормализуют текст после отправки. Проверьте границу примером с ASCII, диакритикой и emoji на реальном endpoint. WordCount показывает метрики, но не сертифицирует внешнюю реализацию.