Conjuntos de código A, B e C
O Code 128 alterna entre três conjuntos de código para acomodar com eficiência diferentes tipos de dados. O conjunto A cobre letras maiúsculas, dígitos e caracteres de controle; o conjunto B cobre letras maiúsculas e minúsculas, dígitos e pontuação; o conjunto C empacota dois dígitos em cada caractere do símbolo, o que deixa números longos muito compactos.
Cada caractere do símbolo tem 11 módulos de largura, formados por 3 barras e 3 espaços, e o padrão de fim tem 13 módulos. Um codificador pode trocar de conjunto no meio de um código de barras para mantê-lo o mais curto possível.
O caractere verificador
Todo código de barras Code 128 termina com um caractere verificador obrigatório. Ele é calculado somando o valor do caractere de início à soma do valor de cada caractere de dados multiplicado pela sua posição, e depois tomando o resto da divisão por 103. O caractere verificador não aparece no texto legível.
GS1-128 na logística
O GS1-128 é o Code 128 com um caractere FNC1 depois do início, que marca o conteúdo como Identificadores de Aplicação GS1. É o código de barras linear padrão em etiquetas de remessa e de paletes, onde costuma carregar um SSCC (Identificador de Aplicação 00) junto com GTINs, números de lote e datas.
O Code 128 é especificado na ISO/IEC 15417 e muito usado em expedição, armazenagem e etiquetas internas.