Contare i caratteri: SMS, X, titoli di YouTube ed emoji

Aggiornato:

«Quanti caratteri sono?» ha più di una risposta, perché ogni sistema conta una cosa diversa: quello che vedi, i punti di codice che ci sono dietro o i byte necessari per inviarlo. Una mano che saluta 👋 è un carattere sullo schermo e due per JavaScript; un SMS con una sola emoji accetta 70 caratteri invece di 160. Questa guida spiega le regole da cui vengono questi conteggi.

Cos’è un «carattere»

Quello che vedi come un carattere, un grafema, può essere fatto di più punti di codice Unicode, e ogni punto di codice di una o due unità UTF-16. La proprietà length di JavaScript conta le unità, quindi 👋 ha lunghezza 2. L’emoji famiglia 👨‍👩‍👧 è un grafema formato da cinque punti di codice (uomo, unione, donna, unione, bambina) e otto unità. Anche «café» può avere quattro o cinque punti di codice, con l’accento salvato a parte; la maggior parte dei sistemi lo normalizza a quattro.

Un buon contatore conta i grafemi, cioè quello che vede chi legge. Dividere il testo in punti di codice o usare Intl.Segmenter, come spiega MDN, ci arriva; length da solo no.

Contatore di caratteri

SMS: 160, 70, 153 e 67

Un SMS trasporta al massimo 140 byte di testo. Con l’alfabeto GSM, 7 bit per carattere, sono 160 caratteri; appena un carattere ne è fuori, tutto il messaggio passa in UCS-2, 2 byte per carattere, e ne contiene 70. Alcuni caratteri GSM occupano due posti perché richiedono un escape: € [ ] { } ^ ~ \ |.

I testi più lunghi partono in più parti, e ogni parte usa 6 byte per un’intestazione che dice al telefono come ricomporle, lasciando 153 caratteri GSM o 67 caratteri UCS-2 per parte.

MessaggioEntra in un SMSPer parte se diviso
Solo caratteri GSM160153
Almeno un altro carattere (un’emoji, ó, ã, ê)7067

Così 161 caratteri GSM richiedono 2 parti e 307 ne richiedono 3; con un’emoji, già 71 caratteri ne richiedono 2. Gli accenti italiani non sono un problema: à, è, é, ì, ò e ù fanno parte dell’alfabeto GSM. La È maiuscola, le virgolette tipografiche e le emoji invece no, e ne basta una per passare a 70.

Limiti su X, YouTube e Google

DoveLimiteCome si conta
Post su X280Alfabeto latino, greco, cirillico, arabo e la maggior parte degli altri 1; cinese, giapponese e coreano 2; ogni emoji 2, anche una famiglia; ogni link 23
Titolo di un video di YouTube100Caratteri
Descrizione di YouTube5.000Caratteri
Meta description per GoogleNessun limiteGoogle taglia lo snippet per adattarlo allo schermo e spesso ne scrive uno suo a partire dalla pagina

Su X un post in alfabeto latino può usare tutti i 280 caratteri, uno in giapponese solo 140, e un link costa sempre 23, per quanto lungo sia.

Perché due contatori danno numeri diversi

Domande frequenti

Perché il mio SMS è sceso a 70 caratteri?

Perché contiene un carattere che non è nell’alfabeto GSM: un’emoji, le virgolette tipografiche o una lettera come ó. Tutto il messaggio viene allora inviato in UCS-2, che contiene 70 caratteri, o 67 per parte.

Perché € conta due in un SMS?

Fa parte della tabella di estensione GSM, raggiunta con un carattere di escape, quindi occupa due dei 160 posti. Lo stesso vale per [ ] { } ^ ~ \ e |.

Gli spazi contano?

In un SMS, in un post su X e in un titolo di YouTube sì: uno spazio è un carattere come un altro. Il contatore di caratteri mostra il conteggio con e senza spazi.

Quanto deve essere lunga una meta description?

Google non fissa un limite, taglia lo snippet per adattarlo allo schermo e spesso ne scrive uno suo dalla pagina. Metti prima le parole importanti, così sopravvivono al taglio.

Perché JavaScript dice 2 per una sola emoji?

Perché length conta le unità UTF-16, e la maggior parte delle emoji ne occupa due. Conta invece i grafemi, per esempio con Intl.Segmenter, e 👋 vale 1.

Riferimenti

  1. 3GPP TS 23.040 — Technical realization of the Short Message Service (SMS)
  2. 3GPP TS 23.038 — Alphabets and language-specific information
  3. X Developer Platform — Counting characters
  4. YouTube Help — Edit video settings
  5. Google Search Central — Control your snippets in search results
  6. MDN Web Docs — String: length

Guide correlate