Come suggerisce il nome, un codec svolge due funzioni: in primo luogo, comprime le dimensioni del file audio o video e, in secondo luogo, lo decomprime quando necessario. Tutti i codec utilizzano un algoritmo per ridurre le dimensioni dei file con la possibilità di recuperare e visualizzare i dati con una qualità simile a quella della registrazione originale. Tuttavia, ciò non significa che esista un algoritmo "predefinito" per la compressione delle dimensioni dei file; ogni codec utilizza la propria tecnologia per creare l'algoritmo ideale per determinate applicazioni. Inoltre, ogni codec può scegliere di codificare i file con uno dei due metodi: compressione con o senza perdita.
La compressione con perdita funziona rimuovendo i bit di informazione estranei che non influiscono sulla qualità complessiva del contenuto. Ad esempio, un file musicale MP3 può utilizzare la compressione con perdita in modo abbastanza efficace, estraendo suoni che non possono essere uditi dall'orecchio umano e, di conseguenza, incidendo appena sulla qualità del suono complessivo. Un altro esempio è un file immagine JPG; anch'esso elimina le informazioni in eccesso o le converte in un contesto gradevole; ad esempio, un'immagine reale con un cielo completamente blu genererà molti gradienti di blu, ma può essere facilmente ridotta a una o due tonalità di blu. Nella compressione con perdita, l'utente può scegliere l'entità della tecnica di compressione del file, ma una compressione più elevata (con conseguente riduzione delle dimensioni del file) produce contenuti di qualità inferiore; l'utente può ricorrere a tentativi ed errori per determinare la migliore percentuale di compressione mantenendo una qualità accettabile del contenuto.
La compressione senza perdita è orientata più che altro a preservare la qualità dei contenuti, il che significa che le dimensioni dei file non saranno ridotte come quelle della compressione con perdita, ma che nel processo di compressione non vengono eliminati dati preziosi; al contrario, la compressione viene realizzata rimuovendo la ridondanza. Sebbene ciò sembri molto simile alla rimozione dei dati nella compressione con perdita, in realtà i dati vengono convertiti in sottounità logiche. Ecco una spiegazione di come può funzionare la compressione senza perdita.
Si supponga di avere un contenuto con la seguente stringa di caratteri: "aaaaaaabbbccccccddeeeeeeeee" (che corrisponde a una stringa di 7 a in fila, seguite da 3 b, poi 6 c, 2 d e 9 e). La compressione senza perdite convertirebbe queste informazioni in "a7b3c6d2e9" riducendo la stringa da 27 caratteri a soli 10 caratteri (descrive ogni gruppo consecutivo di caratteri con il carattere e il numero di caratteri identici che lo seguono, quindi "a7" equivale a "aaaaaaa"). Il bello della compressione senza perdita è che i dati originali possono sempre essere recuperati e utilizzati quando necessario.
Perché qualcuno dovrebbe voler invertire la compressione di un file di grandi dimensioni? I fotografi professionisti, ad esempio, desiderano che i loro file RAW siano intatti, magari per la stampa professionale di un'immagine di grandi dimensioni, ma vogliono anche condividere un'immagine più piccola e di qualità inferiore sulle loro piattaforme di social media per scopi di marketing. Utilizzando la compressione senza perdita di dati, il lavoro originale può essere presentato in un contesto informale (ad esempio, su Pinterest) e allo stesso tempo può essere modificato in modo dettagliato senza perdere un pixel di dati.