Code 128 vs Code 39: Qual Formato de Codigo de Barras Usar
Comparativo tecnico entre Code 128 e Code 39: caracteres suportados, densidade, usos ideais e quando migrar de um para o outro.
Code 128 e Code 39 sao os dois formatos de codigo de barras alfanumerico mais usados no mundo. Ambos sao suportados por praticamente todos os scanners modernos, mas tem diferencas tecnicas importantes que os tornam mais adequados para diferentes situacoes. Neste guia, vamos comparar os dois em detalhe.
Historia e origens
Code 39 foi criado em 1974 por David Allais e Raymond Stevens da Intermec. Foi um dos primeiros formatos a suportar letras alem de numeros, o que o tornou muito popular em ambientes industriais e governamentais nos anos 80 e 90.
Code 128 foi criado em 1981 por Ted Williams da Laserlight Data Systems. Foi projetado para superar as limitacoes do Code 39, oferecendo maior densidade e suporte a todos os 128 caracteres ASCII.
Conjunto de caracteres
Esta e a diferenca mais importante:
Code 39 suporta:
- Letras A-Z (apenas maiusculas)
- Digitos 0-9
- Caracteres especiais: espaco, -, ., $, /, +, %
- Total: 43 caracteres possiveis
Code 128 suporta:
- Letras A-Z (maiusculas e minusculas)
- Digitos 0-9
- Todos os caracteres especiais e de controle ASCII
- Total: 128 caracteres possiveis (daí o nome)
Se voce precisa de letras minusculas, Code 128 e obrigatorio.
Densidade: Code 128 e mais compacto
Para a mesma sequencia de dados, Code 128 ocupa menos espaco fisico que Code 39. Isso porque:
- Code 39 usa 9 elementos (barras e espacos) por caractere, dos quais 3 sao largos
- Code 128 usa codificacao variavel mais eficiente, especialmente o Subset C para numeros
Exemplo pratico: O texto “ABC123” em Code 39 ocupa ~40mm a 2 pixels/modulo. Em Code 128, o mesmo texto ocupa ~28mm. A diferenca aumenta com sequencias mais longas.
Digito verificador
Code 39: O checksum e opcional. A maioria das implementacoes nao o usa. Isso simplifica a integracao com sistemas mais antigos que nao esperam um digito verificador.
Code 128: O checksum e obrigatorio e calculado automaticamente. Toda leitura de Code 128 valida o checksum — erros de leitura sao detectados automaticamente.
Velocidade de leitura e robustez
Para scanners modernos (imagem ou laser), a velocidade de leitura de Code 39 e Code 128 e praticamente identica — ambos sao lidos em milissegundos.
Para scanners laser muito antigos (anos 80-90), Code 39 pode ter maior compatibilidade pois e um formato mais antigo e simples.
Em ambientes com sujeira, oleo ou danos parciais: Code 128 e geralmente mais robusto graças ao checksum obrigatorio.
Quando usar Code 39
Use Code 39 quando:
- Voce tem scanners legados que nao suportam Code 128 — muito comum em industrias com equipamentos de 20+ anos
- O sistema de destino exige Code 39 — alguns sistemas de saude (hospitais, laboratorios) e governo usam Code 39 como padrao estabelecido
- Voce so usa caracteres suportados (A-Z, 0-9, -./+$%) — nao ha motivo tecnico para Code 128 nesse caso, mas Code 128 tambem funcionaria
- Ambientes militares e aeroespaciais — Code 39 e o padrao especificado em muitas normas militares americanas e europeias
Quando usar Code 128
Use Code 128 quando:
- Voce precisa de letras minusculas — Code 39 nao suporta
- Voce quer codigos menores para a mesma quantidade de dados
- Voce quer checksum automatico para maior confiabilidade
- Voce esta comecando do zero um novo sistema — Code 128 e o padrao moderno recomendado
- Logistica e rastreamento — GS1-128 (variante do Code 128) e o padrao da industria logistica mundial
- Codigos numericos longos — Code 128 Subset C armazena pares de digitos com densidade maxima
GS1-128: o padrao logistico
Uma observacao importante: em logistica e supply chain, o formato dominante e o GS1-128 (anteriormente chamado EAN-128), que e uma aplicacao do Code 128 com estrutura adicional de Identificadores de Aplicacao (AI) que definem o significado de cada campo de dado.
Exemplos de AI:
(00)= SSCC (Serial Shipping Container Code)(01)= GTIN (Global Trade Item Number — tipo de produto)(17)= Data de validade(10)= Numero do lote
Se voce trabalha com grandes varejistas (ex: Walmart, Carrefour) ou distribuidores que exigem etiquetas GS1, certifique-se de usar GS1-128 com os IDs corretos.
Tabela de decisao
| Situacao | Recomendacao |
|---|---|
| Novo sistema, sem restricoes | Code 128 |
| Equipamentos legados (pre-2000) | Code 39 |
| Letras minusculas necessarias | Code 128 |
| Norma militar/aeroespacial | Code 39 (verificar norma especifica) |
| Logistica/supply chain | GS1-128 (Code 128) |
| Saude/hospital | Verificar padrao local (varia) |
| Maximo de dados no menor espaco | Code 128 |
| Simplicidade maxima | Code 39 |
Conclusao
Para novos projetos sem restricoes de equipamento legado, Code 128 e a escolha recomendada — e mais compacto, suporta mais caracteres e tem checksum obrigatorio. Code 39 permanece relevante em contextos com sistemas legados ou normas que o exigem especificamente. Ambos estao disponíveis gratuitamente nos nossos geradores de codigo de barras.