Un carattere di tabulazione, ovvero un singolo carattere che in linguaggio C si rappresenta con la costante '\t', il cui codice ASCII è 9, mentre su altri sistemi assume valori diversi (ad esempio, in EBCDIC è pari a 5). In teoria, ogni volta che si preme il tasto TAB, nel sorgente viene inserito uno \t.
Ogni singolo editor ed ogni visualizzatore (nel mondo Posix CLI more, less, cat, head, tail...)
decidono quanti spazi visualizzare quando incontrano un singolo carattere di visualizzazione, con o più spesso senza il benestare esplicito dell'utente. E questo sarebbe già un male, ma c'è di peggio.
Molti editor avanzati, fin dagli albori del DOS, consentono di definire sul "ruler" i "tab stops", vale a dire le colonne alle quali spostarsi ad ogni singola pressione di TAB e del tasto avente funzione complementare (usualmente BACKSPACE o SHIFT+BACKSPACE, ma esiste una miriade di varianti). Naturalmente tali tab stop sono 1) potenzialmente a passo variabile, i.e. per un sorgente Assembly è tipico avere tab stops a colonna 8, 10, 12, 20, 24, 28, 52 e 2) dipendenti dall'estensione del file aperto in quella sessione! Se l'editor usa solo spazi, il risultato è garantito e invariante. Ma in taluni casi (i.e. con opzioni come "Use tab only" abilitate) una simile impostazione implica che in tale editor, ricaricando un file precedentemente editato, il primo carattere di tabulazione causerà uno spostamento di otto spazi sulla destra, ma il secondo aggiornerà la posizione aggiungendo solo due colonne, eccetera. Risultato che, inutile dirlo, viene totalmente stravolto nel passaggio ad altro ambiente il quale semplicemente sostituisca ad ogni '\t' una quantità prefissata di spazi...
Infine le cosiddette "smart tabs" o analoga onomastica costituiscono un rimedio peggiore del male. L'editor cerca in tale frangente di minimizzare lo spazio occupato su disco, ma sempre rispettando i tab stop impostati, che siano a passo fisso o meno: dunque inserisce sequenze di tabulazioni e spazi, intercalati secondo una logica sovente impredicibile. Ne risulta un minestrone altrove illeggibile, con l'aggravante di compromettere tutte le tabulazioni nei linguaggi posizionali se il file viene aperto e poi salvato da un altro editor, o dal medesimo ma con diverse impostazioni.
Per questi motivi anche l'uso promiscuo di tabulazioni e spazi è deprecato, in considerazione delle possibili anomalie di indentazione derivanti dall'apertura in un altro ambiente, possibilmente impostato per la sostituzione automatica dei tab con sequenze fisse di spazi (il che dovrebbe essere il default in ogni editor decente).