Cosa fa questo character counter
Questa versione italiana del character counter analizza il tuo testo su quattro livelli distinti: grafemi (i caratteri percepiti dall'utente), caratteri senza spazi, codepoint Unicode e dimensione in byte UTF-8. La differenza è tutt'altro che accademica: l'emoji 👨👩👧 vale 1 grafema ma occupa 7 codepoint, e molti database con colonne VARCHAR(255) si riferiscono a 255 byte, non a 255 caratteri. Capire questa distinzione evita troncamenti inattesi in produzione. Il conteggio avviene in tempo reale mentre scrivi, sfruttando MDN — Intl.Segmenter per la segmentazione Unicode corretta. 100% lato client — i tuoi dati non lasciano mai il browser. Nessun upload, nessun tracciamento, nessun log sul server.
Funzionalità
- Conteggio grafemi Unicode. Usa la segmentazione Unicode per contare i caratteri percepiti dall'utente, non i codepoint grezzi. Emoji composte, caratteri CJK e lettere accentate vengono gestiti correttamente.
- Caratteri senza spazi. Mostra il conteggio escludendo tutti i whitespace, utile per meta description SEO e limiti di slug nei CMS.
- Codepoint UTF-16 e byte UTF-8. Espone sia i codepoint (come li conta JavaScript con
[...text].length) sia i byte UTF-8 reali, fondamentali per validare colonne di database e payload API con limiti in byte. - Carattere più frequente. Identifica il carattere con più occorrenze nel testo, utile per analisi stilistica e debug di encoding anomali.
- Aggiornamento in tempo reale. Tutti i contatori si aggiornano istantaneamente a ogni battitura, senza bottoni da premere e senza round-trip verso server remoti.
- Completamente client-side. Nessun dato viene trasmesso. Il codice gira interamente nel browser: sicuro per testi riservati, contratti, codice sorgente e qualsiasi contenuto sensibile.
Come usare il character counter
Incolla o digita il testo nell'area di input: i contatori si aggiornano automaticamente. Usa il tasto «Cancella» per svuotare il campo.
- Incolla il testo. Copia il contenuto da qualsiasi fonte — editor, IDE, foglio di calcolo — e incollalo nell'area di testo. Non serve premere nulla.
- Leggi i quattro valori. Controlla grafemi (caratteri percepiti), senza spazi, codepoint e byte UTF-8. Per confronto: in Python
len(text)restituisce codepoint, non grafemi. - Verifica il limite target. Confronta il valore rilevante con il limite della piattaforma: 280 grafemi per Twitter/X, 160 caratteri GSM-7 per SMS, ~60 per il title tag SEO.
- Usa il terminale se preferisci. Per file locali puoi usare
wc -m file.txtin bash, ma tieni presente che conta codepoint, non grafemi — per emoji composite il risultato differisce.
Casi d'uso comuni
- Post su social media. Twitter/X limita a 280 grafemi, Bluesky a 300, LinkedIn a 3.000 per i post. Il contatore ti dice esattamente dove sei, senza dover copiare il testo nella piattaforma.
- SEO on-page. Il title tag dovrebbe stare sotto i 60 caratteri e la meta description tra i 155 e i 160. Controlla qui prima di pubblicare, poi verifica il conteggio delle parole con il [word counter](/it/word-counter/).
- Messaggi SMS. Un SMS in GSM-7 porta 160 caratteri; se il testo include emoji o caratteri fuori dall'alfabeto base, il protocollo passa a UCS-2 e il limite scende a 70. Ogni segmento aggiuntivo ha un costo.
- Validazione colonne database. Prima di una migrazione, verifica che i tuoi valori stiano nei limiti VARCHAR della tabella di destinazione. PostgreSQL conta in caratteri, MySQL in byte a seconda del charset — il campo «Byte UTF-8» ti dà il numero esatto.
- Redazione e copywriting. Il vocabolario dello Zingarelli 2024 contiene oltre 144.000 lemmi italiani. Quando scrivi testi ricchi e variegati, il contatore ti aiuta a rispettare i limiti dei form e dei CMS senza sorprese.
Domande frequenti
Qual è la differenza tra grafemi e codepoint?
Un grafema è ciò che vedi sullo schermo — un carattere percepito dall'utente. Un codepoint è il numero assegnato dallo standard Unicode a ogni unità atomica. L'emoji 👨👩👧 è 1 grafema ma 7 codepoint collegati da zero-width joiner. JavaScript con string.length conta le code unit UTF-16, non i grafemi: questo è il motivo per cui Twitter si affida a MDN — Intl.Segmenter per il conteggio corretto.
I miei testi vengono inviati a qualche server?
No. Tutto il calcolo avviene nel tuo browser con JavaScript puro. Nessun testo viene trasmesso, memorizzato o analizzato da server remoti. Puoi usare lo strumento anche offline dopo il primo caricamento della pagina.
Perché il mio SMS si divide in più parti inaspettatamente?
Il protocollo SMS usa GSM-7 (160 caratteri per segmento) per il testo latino standard. Non appena inserisci un carattere fuori dal set GSM-7 — per esempio un'emoji o una «à» in certe codifiche — il messaggio passa a UCS-2 e il limite scende a 70 caratteri per segmento. Ogni segmento aggiuntivo viene fatturato separatamente dall'operatore.
Perché VARCHAR(255) nel database non basta per 255 caratteri?
In MySQL con charset utf8mb4, ogni carattere può occupare fino a 4 byte. Una colonna VARCHAR(255) riserva spazio per 255 byte, non 255 caratteri. Un testo con 100 emoji può superare il limite anche se sembra corto. Il campo «Byte UTF-8» di questo tool ti dà la dimensione reale da confrontare con la definizione della colonna.
Come si contano i caratteri in Python o JavaScript?
In Python len(text) restituisce il numero di codepoint Unicode. In JavaScript text.length conta le code unit UTF-16 (un emoji fuori dal BMP ne vale 2). Per i grafemi in JavaScript usa [...text].length via spread, oppure Intl.Segmenter per la massima conformità Unicode. Questo tool usa quest'ultimo approccio internamente.
Lo strumento funziona con testi in italiano con caratteri accentati?
Sì. Lettere come à, è, ì, ò, ù sono singoli codepoint nel range Latin-1 Supplement e vengono conteggiate correttamente sia come grafemi sia come byte UTF-8 (2 byte ciascuna). Non ci sono problemi con testo italiano standard.