Contare i caratteri: SMS, X, titoli di YouTube ed emoji
«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.
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.
| Messaggio | Entra in un SMS | Per parte se diviso |
|---|---|---|
| Solo caratteri GSM | 160 | 153 |
| Almeno un altro carattere (un’emoji, ó, ã, ê) | 70 | 67 |
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
| Dove | Limite | Come si conta |
|---|---|---|
| Post su X | 280 | Alfabeto 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 YouTube | 100 | Caratteri |
| Descrizione di YouTube | 5.000 | Caratteri |
| Meta description per Google | Nessun limite | Google 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
- Uno conta i grafemi, l’altro le unità UTF-16: ogni emoji e alcune lettere rare fanno la differenza.
- Spazi e a capo: alcuni strumenti non li contano, e un a capo di Windows vale due caratteri.
- Normalizzazione: un accento salvato come segno separato aggiunge un punto di codice finché il testo non viene normalizzato.
- Regole delle piattaforme: X pesa caratteri e link, l’SMS conta i byte, un campo titolo conta i caratteri.
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
- 3GPP TS 23.040 — Technical realization of the Short Message Service (SMS)
- 3GPP TS 23.038 — Alphabets and language-specific information
- X Developer Platform — Counting characters
- YouTube Help — Edit video settings
- Google Search Central — Control your snippets in search results
- MDN Web Docs — String: length
Guide correlate
- Indirizzi IP spiegati: IPv4, IPv6 e gli intervalli riservati
- Sottoreti e CIDR spiegati: prefissi, maschere e host utilizzabili
- Record DNS spiegati: A, AAAA, CNAME, MX, TXT e NS
- Un sito è down o il problema è solo tuo? Come verificarlo, passo per passo
- Codici di stato HTTP ed errori di Cloudflare: cosa significano 403, 404, 429, 500, 503 e 521
- Timestamp Unix e fusi orari spiegati
- Contare le date: giorni tra due date, anni bisestili e settimane ISO
- Fusi orari e ora legale: riunioni tra città
- Formati immagine spiegati: JPEG, PNG, WebP, AVIF e HEIC
- Le dimensioni di un’immagine spiegate: pixel, DPI, peso e qualità
- Le foto del telefono spiegate: HEIC, metadati EXIF e la tua privacy
- Robustezza delle password spiegata: lunghezza, entropia e passphrase
- Funzioni di hash spiegate: SHA-256, checksum e hashing delle password
- JSON Web Token spiegati: claim, firme e validazione sicura
- Le chiavi API spiegate: lunghezza, formato, archiviazione e rotazione
- Gli UUID spiegati: v4, v7 e come scegliere la versione giusta
- I codici QR spiegati: capacità, correzione degli errori e dimensioni di stampa
- Percentuali e IVA spiegate: aggiungere, scorporare e cumulare
- Errori comuni nel JSON e come correggerli
- I file CSV spiegati: separatori, virgolette, codifica ed Excel
- Le codifiche del testo spiegate: UTF-8, Base64 e codifica URL
- Espressioni regolari: classi, quantificatori e gruppi
- MB o MiB, Mbps o MB/s: dimensioni dei file e velocità
- Espressioni cron spiegate: campi, passi e fusi orari
- Parametri UTM spiegati: etichettare i link per le analisi
- Punto di pareggio, margine e ROAS: i numeri di una piccola attività
- Tariffe freelance spiegate: tariffa oraria, tariffa giornaliera e ore fatturabili
- RPM e CPM di YouTube spiegati: quanto guadagna davvero un creator
- Il contrasto dei colori spiegato: rapporti WCAG, testo leggibile e formati di colore
- Modificare i PDF nel browser: cosa conservano unione, divisione e conversione