2026-04-21 Aggiornato 2026-08-04 Knowledge Base

Code 128 vs Code 39: quale simbologia di codici a barre scegliere?

TL

Scritto da

Pronto a generare codici a barre?

Crea etichette di alta qualità in pochi secondi.

Avvia generatore →

Quando si configura un sistema di inventario o di logistica interna, ci si trova spesso di fronte alla scelta tra due simbologie classiche: il Code 128 e il Code 39. Entrambe sono lineari, entrambe gestiscono lettere e numeri e a prima vista sembrano intercambiabili. Non lo sono — e la scelta sbagliata emerge più tardi sotto forma di etichette troppo larghe, letture che falliscono o un'integrazione che richiede più manutenzione del previsto.

I codici lineari (1D) restano la base del tracciamento fisico. A differenza dei QR Code o dei DataMatrix, che richiedono uno scanner a immagine, un codice lineare si legge con un semplice laser economico. Se stai etichettando ubicazioni di magazzino, cespiti aziendali o scaffalature, la decisione si riduce quasi sempre a questi due standard industriali.

Questo articolo non si limita a citare i numeri consueti: tutte le larghezze riportate sotto sono state misurate sul generatore che alimenta questo sito, simbolo per simbolo. Due affermazioni che questa pagina ripeteva non hanno superato la misurazione.


1. Code 39: il pioniere degli standard industriali

Introdotto nel 1974 da Intermec, il Code 39 (scritto anche «3 of 9») è stato il primo codice a barre alfanumerico. Il nome ne descrive la struttura: ogni carattere è composto da nove elementi — barre e spazi — di cui esattamente tre sono larghi.

Lo abbiamo verificato sul simbolo più corto possibile, con un solo carattere di dati. Il simbolo completo contiene allora tre caratteri (start *, il dato, stop *): il generatore produce 29 elementi, di cui 9 larghi — cioè esattamente 3 × 9 elementi con 3 × 3 larghi, più gli spazi tra i caratteri. Il rapporto largo/stretto misurato è 3:1, entro l'intervallo ammesso dalla norma (da 2:1 a 3:1).

Set di caratteri e limiti

Nella versione base il Code 39 è autoverificante e copre 43 caratteri:

  • Lettere maiuscole dalla A alla Z
  • Cifre da 0 a 9
  • Alcuni simboli: spazio, -, ., $, /, +, %
  • L'asterisco (*), riservato ai marcatori di inizio e fine. Gli scanner non lo trasmettono al sistema: serve solo a individuare dove il codice comincia e finisce.

Esiste una variante estesa «Full ASCII» in grado di codificare le minuscole e il resto dei 128 caratteri ASCII, ma lo fa abbinando due caratteri standard per ciascuno (una «a» minuscola diventa +A).

Il costo misurato di questo espediente: sei lettere maiuscole occupano 127 X, le stesse sei lettere in minuscolo tramite Full ASCII ne occupano 223 X, cioè 1,76 volte di più. Il fattore non è esattamente 2 perché l'overhead fisso di start e stop non viene raddoppiato — ma a livello di caratteri il raddoppio è esatto.


2. Code 128: lo standard moderno delle prestazioni

Sviluppato nel 1981 da Computer Identics, il Code 128 nasce proprio per risolvere il problema di ingombro del Code 39, aggiungendo un controllo d'errore più solido e il supporto completo della tastiera.

ASCII completo e sottoinsiemi

Il Code 128 codifica tutti i 128 caratteri ASCII — minuscole, punteggiatura, perfino caratteri di controllo. Ci riesce senza gonfiare il simbolo grazie a tre sottoinsiemi di caratteri (A, B e C) tra cui commuta a metà codice:

  • Sottoinsieme A — cifre, maiuscole e caratteri di controllo.
  • Sottoinsieme B — cifre, maiuscole, minuscole e punteggiatura standard.
  • Sottoinsieme C — coppie numeriche. Invece di una cifra per simbolo, codifica due cifre in un unico motivo.

La formula della larghezza, misurata

È qui che il confronto diventa concreto. Misurando simboli di lunghezza crescente, la larghezza di entrambe le simbologie segue una retta perfetta:

Simbologia Larghezza del simbolo (in moduli X)
Code 39 31 X + 16 X × numero di caratteri
Code 128 35 X + 11 X × numero di caratteri

I 16 X del Code 39 si scompongono esattamente: 6 elementi stretti (6 X) + 3 elementi larghi (9 X) + 1 X di spazio tra caratteri. Il Code 128 invece addebita sempre 11 moduli per carattere, qualunque sia il contenuto.

Il suo overhead fisso è più alto — 35 X, cioè tre caratteri interi di cui nessuno trasporta i tuoi dati: carattere di start (11 X), somma di controllo Modulo 103 (11 X) e carattere di stop (13 X). Il Code 39 parte più basso (31 X) ma paga molto di più ogni singolo carattere.


3. «Dal 30 al 50 % più stretto»: cosa dice davvero la misura

Questa frase circola ovunque, e anche questa pagina la ripeteva. Così com'è, è falsa: vale solo per un tipo di dati ben preciso.

Stringa alfanumerica (sottoinsieme B)

Caratteri Code 39 Code 128 Risparmio
4 95 X 79 X 17 %
6 127 X 101 X 20 %
8 159 X 123 X 23 %
10 191 X 145 X 24 %
15 271 X 200 X 26 %
20 351 X 255 X 27 %

Persino a 20 caratteri il divario si ferma al 27 % — sotto la soglia minima dichiarata.

Stringa puramente numerica (sottoinsieme C)

Cifre Code 39 Code 128 Risparmio
4 95 X 57 X 40 %
6 127 X 68 X 47 %
8 159 X 79 X 50 %
10 191 X 90 X 53 %
15 271 X 134 X 51 %
20 351 X 145 X 59 %

È qui che la promessa regge — e viene superata. Il motivo è diretto: nel sottoinsieme C una cifra costa 5,5 X contro i 16 X del Code 39, quasi tre volte meno.

Da ricordare: il divario dipende prima dalla natura dei tuoi dati e solo dopo dalla loro lunghezza. Un identificativo alfanumerico non ti farà risparmiare metà etichetta.


4. Il dettaglio controintuitivo: una cifra in più può restringere il codice

Verificando la tabella precedente è emersa un'anomalia: il risparmio a 15 cifre (51 %) è inferiore a quello a 10 cifre (53 %). Non è un errore di misura.

Il sottoinsieme C codifica le cifre a coppie. Un numero dispari di cifre non entra nelle coppie: il generatore deve cambiare sottoinsieme per l'ultima cifra, e lo paga al prezzo di un carattere intero.

Cifre Code 128 Variazione
12 101 X
13 123 X +22 X
14 112 X −11 X
15 134 X +22 X
16 123 X −11 X

Leggi la terza riga: un codice da 14 cifre è più stretto di uno da 13 cifre. Aggiungere una cifra — per esempio uno zero iniziale — fa guadagnare 11 X di larghezza.

Non è un caso da manuale. Il formato numerico più diffuso nel commercio, il GTIN a 13 cifre, cade esattamente in questa trappola: il numero di cifre è dispari e paga la penalità.


5. Confronto tecnico diretto

Caratteristica Code 39 Code 128
Anno di introduzione 1974 1981
Larghezza per carattere 16 X 11 X (5,5 X per cifra nel sottoinsieme C)
Overhead fisso 31 X 35 X
Set di caratteri Maiuscole, cifre, 7 simboli ASCII completo, minuscole incluse
Compressione numerica Nessuna Sì — due cifre per simbolo
Autoverifica
Cifra di controllo Opzionale (Modulo 43) Obbligatoria (Modulo 103)
Settori tipici Difesa, automotive, elettronica Logistica (GS1), magazzino, spedizioni
Rischio di letture errate Basso ma reale Estremamente basso

6. Due esempi che chiudono la questione

Prendiamo due identificativi che si incontrano ogni giorno.

Un codice di ubicazione, REG-A1 (6 caratteri alfanumerici): Code 39 = 127 X · Code 128 = 101 X · risparmio: 20 %. Reale, ma non decisivo. Se il tuo parco scanner è datato, non deve essere questo numero a determinare la scelta.

Un codice articolo, 4006381333931 (13 cifre): Code 39 = 239 X · Code 128 = 123 X · risparmio: 49 % (non ~55 %, per via del numero dispari di cifre visto sopra).

Tradotto in millimetri su una stampante termica a 203 dpi, con modulo X di 0,250 mm (2 punti):

  • In Code 39: 59,8 mm
  • In Code 128: 30,8 mm
  • Differenza: 29,0 mm

Quasi tre centimetri su una singola etichetta. È la differenza tra stare su un supporto da 40 mm e doverne ordinare uno più largo.


7. Quando scegliere l'uno o l'altro

Il Code 39 ha ancora senso quando:

  1. L'hardware è datato. Vecchi sistemi di inventario, penne ottiche o macchinari senza firmware di decodifica moderno leggono il Code 39 senza difficoltà, proprio perché è semplicissimo da decodificare.
  2. I codici sono corti e alfabetici. Un codice scaffale REG-A1 o di stanza ST-102 resta di lunghezza ragionevole e non devi preoccuparti della cifra di controllo.
  3. Il software è essenziale. Se stampi da un font per codici a barre racchiudendo semplicemente la stringa tra asterischi (*REG101*), il Code 39 si integra senza librerie di calcolo.

Il Code 128 è la scelta predefinita migliore quando:

  1. Lo spazio è poco. Componenti minuti, flaconi, cespiti, etichette per documenti: il layout compatto fa risparmiare materiale.
  2. I dati sono lunghi o numerici. È l'unico caso in cui il divario supera davvero il 50 %. E tieni conto della parità del numero di cifre.
  3. Servono minuscole o punteggiatura. In Code 39 la stessa stringa diventa 1,76 volte più larga; in Code 128 è 55 % più stretta del suo equivalente Full ASCII.
  4. Una lettura errata costa cara. Nella logistica farmaceutica, nei beni di valore o nello smistamento corrieri, la somma Modulo 103 obbligatoria è un'assicurazione a basso costo.

Conclusione

Il Code 39 resta un pioniere robusto e semplice, ancora giustificato in ambienti legacy, militari e industriali chiusi. Per la logistica generale, le spedizioni e la maggior parte degli inventari aziendali, il Code 128 è lo standard di riferimento: più denso, ASCII completo e con somma di controllo obbligatoria.

Ma la sfumatura più utile è quella emersa dalla misura: il suo vantaggio di densità vale il 20 % su un codice di ubicazione e il 49 % su un codice articolo. Scegli in base ai tuoi dati reali, non a un numero generico.

Qualunque simbologia tu scelga, alla fine conta una stampa nitida che venga letta al primo colpo. Puoi generare codici Code 128 o Code 39 conformi, in SVG o PDF ad alta risoluzione, con il nostro generatore Code 128.


Articoli correlati

TL
Software Engineer

Tomasz è uno sviluppatore full-stack con esperienza nelle tecnologie della supply chain e nei sistemi logistici. Ha creato BarcodeReady per risolvere un problema reale: la mancanza di un generatore di codici a barre rapido, gratuito e conforme agli standard, che funziona interamente nel browser.

Pronto a generare codici a barre?

Crea etichette di alta qualità in pochi secondi.

Avvia generatore
Torna al centro assistenza