Le telecomunicazioni tra gli uomini hanno sempre avuto bisogno di un qualche sistema di codifica dei messaggi da trasmettere.
Nell'antichità le telecomunicazioni si basavano soprattutto su sistemi di telegrafo ottico; nella stazione trasmittente c'era un addetto che accendeva e spegneva torce o fuochi secondo un codice convenuto.
I codici più antichi erano molto rudimentali e prevedevano solo alcuni messaggi predefiniti; tale era p.es. il telegrafo ad acqua usato dai romani: in ogni stazione trasmittente e ricevente era installato un grosso contenitore trasparente pieno di acqua di dimensioni costanti; sul contenitore erano riportate ad altezze convenute tacche ben visibili. Ogni tacca stava per un messaggio possibile: p.es. 1. inviare rifornimenti; 2. Inviare rinforzi ... Al momento della trasmissione l'addetto accendeva per breve tempo una torcia e al tempo stesso iniziava a svuotare il contenitore; quando l'acqua era scesa fino alla tacca voluta, veniva nuovamente accesa una torcia; l'addetto della stazione ricevente nel momento in cui vedeva accendersi la prima torcia, apriva anche lui il contenitore dell'acqua e lo chiudeva quando osservava la seconda torcia. A quel punto poteva ossevare a quale tacca era arrivata l'acqua e quindi leggere il messaggio.
In epoca ellenistica Polibio aveva descritto un sistema più sofisticato che permetteva di codificare un qualsiasi messaggio alfabetico: la scacchiera di Polibio. Ma il sistema era piuttosto complesso e lento e non sembra sia mai stato usato sistematicamente.
In tempi molto più recenti l'invenzione del telegrafo trovò il suo compagno ideale nel famoso codice Morse; con l'avvento delle telescriventi si diffuse molto anche il più sofisticato codice Baudot che è già un codice binario, codificato cioè con sequenze di 0 e 1.
Con l'avvento dei computer si sono affermati altri codici, il più conosciuto di tutti essendo il codice ASCII che nacque come codice binario a 7 bit (128 caratteri possibili) e che è stato poi esteso in molti modi purtroppo non ancora ben standardizzati.
Tutti questi codici si distinguono dai codici segreti (o meglio cifrari) per il fatto appunto di essere codici pubblici. Molti cifrari d'altra parte sono stati progettati esplicitamente in funzione del tipo di codice di trasmissione; p.es. la cifra Pollux fu pensata in funzione del codice Morse, la macchina Lorenz in funzione del codice Baudot, mentre i moderni cifrari per comunicazioni tra computer usano il codice ASCII.