Kompresi file mengurangi redundansi sehingga informasi yang sama membutuhkan lebih sedikit bit. Batas atasnya ditentukan oleh teori informasi: untuk kompresi lossless, batasnya adalah entropi sumber (lihat teorema pengkodean sumber Shannon source coding theorem dan makalah aslinya tahun 1948 “A Mathematical Theory of Communication”). Untuk kompresi lossy, kompromi antara laju bit dan kualitas dijelaskan oleh teori rate–distortion.
Sebagian besar kompresor memiliki dua tahap. Pertama, sebuah model memprediksi atau mengekspos struktur dalam data. Kedua, sebuah coder mengubah prediksi tersebut menjadi pola bit yang hampir optimal. Keluarga pemodelan klasik adalah Lempel–Ziv LZ77 (1977) dan LZ78 (1978) mendeteksi substring berulang lalu memancarkan referensi alih-alih byte mentah. Di sisi pengodean, pengodean Huffman (lihat makalah aslinya 1952) memberikan kode lebih pendek untuk simbol yang lebih mungkin. Pengodean aritmetika dan range coding lebih halus lagi dan mendekati batas entropi, sementara Asymmetric Numeral Systems (ANS) modern mencapai rasio serupa dengan implementasi berbasis tabel yang cepat.
DEFLATE (dipakai oleh gzip, zlib, dan ZIP) menggabungkan LZ77 dengan pengodean Huffman. Spesifikasinya bersifat publik: DEFLATE RFC 1951, pembungkus zlib RFC 1950, dan format file gzip RFC 1952. Gzip dibingkai untuk streaming dan tidak menyediakan akses acak. Gambar PNG menstandarkan DEFLATE sebagai satu-satunya metode kompresi (maksimal jendela 32 KiB) menurut spesifikasi PNG “Compression method 0… deflate/inflate… at most 32768 bytes” dan W3C/ISO PNG 2nd Edition.
Zstandard (zstd): kompresor serbaguna modern yang dirancang untuk rasio tinggi dengan dekompresi sangat cepat. Formatnya didokumentasikan dalam RFC 8878 (serta cermin HTML-nya) dan spesifikasi referensi di GitHub. Seperti gzip, frame dasar tidak menargetkan akses acak. Salah satu keunggulan zstd adalah kamus: sampel kecil dari korpus Anda yang membuat banyak file kecil atau serupa terkompresi jauh lebih baik (lihat dokumentasi kamus python-zstandard dan contoh karya Nigel Tao). Implementasi menerima kamus “unstructured” maupun “structured” (diskusi).
Brotli: dioptimalkan untuk konten web (mis. font WOFF2, HTTP). Ia memadukan kamus statis dengan inti LZ+entropi mirip DEFLATE. Spesifikasinya adalah RFC 7932, yang juga menyebut jendela geser 2WBITS−16 dengan WBITS [10, 24] (1 KiB−16 B hingga 16 MiB−16 B) dan bahwa ia tidak memberikan akses acak. Brotli sering mengalahkan gzip pada teks web sambil tetap cepat saat decoding.
Kontainer ZIP: ZIP adalah arsip file yang dapat menyimpan entri dengan berbagai metode kompresi (deflate, store, zstd, dll.). Standar de facto-nya adalah APPNOTE PKWARE (lihat portal APPNOTE, salinan yang di-host, serta ringkasan LC ZIP File Format (PKWARE) / ZIP 6.3.3).
LZ4 menargetkan kecepatan mentah dengan rasio sedang. Lihat halaman proyeknya (“extremely fast compression”) dan format frame. Cocok untuk cache in-memory, telemetri, atau jalur panas yang memerlukan dekompresi hampir secepat RAM.
XZ / LZMA mengejar kerapatan tinggi dengan waktu kompres yang relatif lambat. XZ adalah kontainer; pekerjaan berat biasanya dilakukan LZMA/LZMA2 (pemodelan mirip LZ77 + range coding). Lihat format .xz, spesifikasi LZMA (Pavlov), dan catatan kernel Linux tentang XZ Embedded. XZ biasanya lebih kecil dari gzip dan sering bersaing dengan codec modern yang berorientasi rasio tinggi, walau waktu enkodenya lebih lama.
bzip2 menggunakan Transformasi Burrows–Wheeler (BWT), move-to-front, RLE, dan pengodean Huffman. Biasanya lebih kecil daripada gzip namun lebih lambat; lihat manual resminya dan halaman manual (Linux).
Ukuran “jendela” penting. Referensi DEFLATE hanya bisa melihat ke belakang 32 KiB (RFC 1951) serta batas 32 KiB di PNG yang disebutkan di sini. Brotli memiliki jendela sekitar 1 KiB hingga 16 MiB (RFC 7932). Zstd menyetel jendela dan kedalaman pencarian lewat level (RFC 8878). Stream dasar gzip/zstd/brotli didesain untuk decoding sekuensial; format dasarnya tidak menjanjikan akses acak, meskipun kontainer (mis. indeks tar, framing berchunk, atau indeks khusus format) bisa menambahkannya.
Format di atas bersifat lossless: Anda bisa merekonstruksi byte yang sama persis. Codec media sering lossy: mereka membuang detail yang tak terlihat untuk mencapai bitrate lebih rendah. Pada gambar, JPEG klasik (DCT, kuantisasi, pengodean entropi) distandardisasi dalam ITU-T T.81 / ISO/IEC 10918-1. Di audio, MP3 (MPEG-1 Layer III) dan AAC (MPEG-2/4) menggunakan model persepsi dan transformasi MDCT (lihat ISO/IEC 11172-3, ISO/IEC 13818-7, dan ringkasan MDCT di sini). Lossy dan lossless dapat berdampingan (mis. PNG untuk aset UI; codec web untuk gambar/video/audio).
Teori Shannon 1948 · Rate–distortion · Pengodean Huffman 1952 · Pengodean aritmetika · Range coding · ANS. Format DEFLATE