GIF transparan terkecil berukuran 43 byte.
Inilah seluruh isinya. Pilih byte mana saja untuk melihat fungsinya, lalu salin file-nya, unduh, hotlink, atau sajikan dari kode Anda sendiri.

Fungsi setiap byte
GIF adalah rangkaian blok. File ini punya tujuh blok, dan setiap warna di halaman ini menandai salah satunya. Pilih sebuah byte atau blok untuk membacanya. Angka disimpan dalam format little-endian: byte rendah didahulukan, jadi 01 00 berarti 1.
| Byte | Field | Arti |
|---|---|---|
| Header Memberi tahu decoder bahwa ini adalah GIF dan versi format mana yang digunakan. | ||
| 47 49 46 | Signature | Huruf ASCII “GIF”. Setiap file GIF diawali dengan huruf-huruf ini. |
| 38 39 61 | Versi | “89a”. 89a diperlukan untuk transparansi; 87a tidak memiliki ekstensi kontrol grafis. |
| Deskriptor layar logis Ukuran kanvas dan cara tabel warnanya diatur. | ||
| 01 00 | Lebar kanvas | 1 px. |
| 01 00 | Tinggi kanvas | 1 px. |
| 80 | Flag terpaket | Empat pengaturan dimampatkan ke dalam satu byte. Bit teratas menandakan bahwa tabel warna global menyusul; tiga bit terakhir menentukan ukurannya. |
| 00 | Indeks warna latar | Entri palet 0. Browser mengabaikannya dan menampilkan apa pun yang ada di belakang gambar. |
| 00 | Rasio aspek piksel | 0 berarti piksel persegi, tanpa koreksi. |
| Tabel warna global Palet warna. Piksel menyimpan indeks ke daftar ini, bukan warna itu sendiri. | ||
| FF FF FF | Entri palet | Merah, hijau, dan biru, masing-masing satu byte: #ffffff. Dua entri adalah tabel terkecil yang bisa dimiliki GIF. |
| 00 00 00 | Entri palet | Merah, hijau, dan biru, masing-masing satu byte: #000000. Dua entri adalah tabel terkecil yang bisa dimiliki GIF. |
| Ekstensi kontrol grafis Blok opsional yang ditambahkan di GIF89a. Di sini blok ini membuat entri palet 0 menjadi transparan. | ||
| 21 | Pembuka ekstensi | 0x21 (“!”) menandai dimulainya blok ekstensi. |
| F9 | Label kontrol grafis | 0xF9 menyatakan bahwa ekstensi ini adalah ekstensi kontrol grafis. |
| 04 | Ukuran blok | Diikuti 4 byte pengaturan. |
| 01 | Flag terpaket | Bit terendah adalah flag transparansi. Flag ini aktif, jadi indeks transparan di bawah digunakan. |
| 00 00 | Jeda | 0 per seratus detik. Hanya berpengaruh untuk animasi. |
| 00 | Indeks warna transparan | Entri palet 0 digambar sepenuhnya transparan. |
| 00 | Terminator blok | Sub-blok berpanjang nol yang menutup blok. |
| Deskriptor gambar Posisi gambar di kanvas dan ukurannya. | ||
| 2C | Pemisah gambar | 0x2C (“,”) memulai sebuah gambar. |
| 00 00 | Kiri | Gambar dimulai 0 px dari tepi kiri kanvas. |
| 00 00 | Atas | Gambar dimulai 0 px dari tepi atas kanvas. |
| 01 00 | Lebar gambar | 1 px. |
| 01 00 | Tinggi gambar | 1 px. |
| 00 | Flag terpaket | Tanpa tabel warna lokal, tidak interlaced. Gambar memakai palet global. |
| Data gambar Piksel-pikselnya, dikompresi dengan LZW dan dipecah menjadi sub-blok berukuran hingga 255 byte. | ||
| 02 | Ukuran kode minimum LZW | 2, jadi kode terkompresi dimulai dengan lebar 3 bit. |
| 02 | Ukuran sub-blok | Diikuti 2 byte data terkompresi. |
| 44 01 | Piksel terkompresi | Kode LZW yang dikemas mulai dari bit terendah. Lihat cara dekodenya di bawah. |
| 00 | Terminator blok | Sub-blok berpanjang nol yang menutup blok. |
| Trailer Satu byte yang menandai akhir file. | ||
| 3B | Trailer | 0x3B (“;”) mengakhiri file. |
Isi byte terpaket
Masing-masing dari tiga byte ini menyimpan beberapa pengaturan kecil. Bit 7 adalah yang paling kiri.
0x800x010x00Bagaimana dua byte memuat satu piksel
Dengan ukuran kode minimum 2, decoder membaca kode 3-bit. Kode 4 mengosongkan tabel, kode 5 mengakhiri gambar, dan kode 0 sampai 3 adalah entri palet. Byte 44 01 dibaca mulai dari bit terendah:
0x44 010001000x01 00000001
- 001100 = 4Clear: mulai dengan tabel baru
- 000000 = 0Piksel: entri palet 0
- 101101 = 5Akhir gambar
- 0000000 Bit pengisi yang tidak terpakai
Gambar yang lebih besar memakai trik yang sama: setiap kode baru mewakili deretan yang satu piksel lebih panjang dari sebelumnya, sehingga GIF transparan 1000×1000 hanya butuh 1.743 byte.
Bisakah lebih kecil?
Bisa, jika Anda membuang bagian yang ketiadaannya masih ditoleransi decoder. Kami menguji setiap varian di tiga engine browser dan di Pillow, lalu mencatat apa yang mereka gambar.
| Ukuran | Varian | Chromium | Firefox | WebKit | Pillow |
|---|---|---|---|---|---|
| 43 | File standar di halaman ini. | Transparan | Transparan | Transparan | Transparan |
| 42 | Tanpa byte trailer. Decoder toh berhenti di akhir data. | Transparan | Transparan | Transparan | Transparan |
| 37 | Tanpa palet sama sekali. Tetap valid: spesifikasi mengizinkan decoder memakai paletnya sendiri, dan indeks 0 toh transparan. | Transparan | Transparan | Transparan | Transparan |
| 36 | Tanpa palet dan tanpa trailer. | Transparan | Transparan | Transparan | Transparan |
| 35 | Tanpa blok transparansi: piksel digambar dengan warna palet 0, yaitu putih. | Putih | Putih | Putih | Putih |
| 35 | Format tahun 1987. Format ini tidak punya cara untuk menandai warna sebagai transparan. | Putih | Putih | Putih | Putih |
| 34 | Ada blok transparansi, tetapi tanpa piksel terkompresi. | Transparan | Transparan | Transparan | Error |
| 33 | Sama seperti di atas, tanpa trailer. | Transparan | Transparan | Transparan | Error |
| 29 | Tanpa palet dan tanpa transparansi. Setiap engine memilih warnanya sendiri. | Hitam | Putih | Transparan | Hitam |
| 26 | Gambar tanpa data terkompresi sama sekali. | Transparan | Transparan | Transparan | Error |
| 14 | Hanya header, ukuran kanvas, dan trailer. Tidak ada gambar di dalamnya. | Transparan | Error | Transparan | Error |
Gunakan 43 byte jika harus berfungsi di mana saja. 37 byte masih GIF yang valid dan tampil transparan di semua engine yang kami uji. Di bawah itu Anda bergantung pada toleransi decoder, dan file 29 byte menunjukkan betapa hasil antar-engine bisa berbeda.
Diperiksa pada 23 September 2026 dengan Chromium 153.0.8010.12, Firefox 155.0, WebKit 26.6, Pillow 12.2.0.
Buat dengan ukuran apa pun
Transparan atau warna solid, dari 1×1 hingga 65535×65535. Dibuat di browser Anda; tidak ada yang diunggah.
Hotlink langsung
Tautkan langsung ke file-file ini dari situs, email, atau aplikasi mana pun. File disajikan dari edge Cloudflare dengan masa cache yang panjang, dan CORS terbuka untuk semua.
- File 43 byte
https://emptygif.com/1x1.gif - Ukuran apa pun, transparan
https://emptygif.com/px/300x250.gif - Ukuran apa pun, warna solid
https://emptygif.com/px/300x250/ff5a1f.gif - JSON API: ukuran, base64, dan data URI
https://emptygif.com/api/gif?w=300&h=250 - Semua snippet dalam JSON
https://emptygif.com/snippets.json - Ringkasan untuk agen AI
https://emptygif.com/llms.txt
Header respons
HTTP/2 200
content-type: image/gif
content-length: 43
cache-control: public, max-age=31536000, immutable
access-control-allow-origin: *
cross-origin-resource-policy: cross-origin
timing-allow-origin: *Contoh
<img src="https://emptygif.com/1x1.gif" width="1" height="1" alt="">
Ukuran yang dibuat maksimal 4096 px per sisi. Jika trafik Anda besar, silakan unduh file-nya dan host sendiri.
Sajikan dari stack Anda
173 snippet siap jalan. Pilih yang sesuai: masing-masing menjawab di path yang Anda pilih dengan respons image/gif. Jika Anda mengubah ukuran atau warna di atas, snippet akan memakai GIF tersebut.
JavaScript & TypeScript
Edge & serverless
- Cloudflare Workers
- Cloudflare Workers (Rust, workers-rs)
- Cloudflare Pages Functions
- Deno Deploy (deno serve)
- Vercel Functions
- Netlify Functions
- Netlify Edge Functions
- AWS Lambda (Node.js)
- AWS Lambda (Python)
- AWS Lambda (Go)
- AWS Lambda (Rust, lambda_http)
- AWS Lambda@Edge (CloudFront)
- Google Cloud Run functions (Node.js)
- Google Cloud Run functions (Python)
- Firebase Cloud Functions + Hosting
- Azure Functions (Node.js v4 model)
- Fastly Compute (JavaScript)
Python
JVM
PHP
Elixir, Erlang & Gleam
Functional languages
C, C++ & systems languages
Swift, Dart & other languages
Web servers & proxies
Command line & one-liners
Express JavaScript
import express from 'express';
const GIF = Buffer.from('R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', 'base64');
const app = express();
app.get('/pixel.gif', (req, res) => {
res.set('Cache-Control', 'no-store');
res.type('gif').send(GIF);
});
app.listen(8080);
Kami telah menjalankan snippet ini dan membandingkan byte yang dikembalikannya. Buka halaman
Kegunaannya
- Tracking pixel dan beacon: server mencatat request lalu menjawab dengan gambar valid terkecil.
- Placeholder untuk gambar lazy-load, agar tag
imgsudah valid sebelum sumber aslinya tiba. - Spacer berukuran tetap di email HTML, yang dukungan CSS-nya tidak merata.
- Tes dan mock yang butuh gambar sungguhan tanpa harus menyertakan file gambar.
Tracking pixel tidak seandal kelihatannya
Apple Mail memuat gambar jarak jauh lebih dulu melalui proxy saat Mail Privacy Protection aktif, jadi sebuah “open” bisa saja tidak pernah dilakukan oleh manusia. Gmail juga mengambil gambar melalui proxy-nya sendiri dan menyimpannya di cache. Banyak klien email memblokir gambar jarak jauh secara default. Untuk analitik halaman, navigator.sendBeacon() atau respons 204 No Content sering kali lebih cocok daripada gambar.
Pertanyaan
- Kenapa disebut kosong padahal ada pikselnya?
- GIF harus punya setidaknya satu piksel. Yang ini berukuran 1×1 dan satu-satunya warnanya ditandai transparan, jadi tidak ada yang terlihat.
- Apakah file 43 byte ini valid?
- Ya. File ini mengikuti spesifikasi GIF89a dengan tepat, dan semua engine di tabel atas menampilkannya transparan.
- Kenapa GIF, bukan PNG atau WebP?
- Ukurannya lebih kecil daripada PNG transparan yang paling minimal, dan bisa dibaca oleh semua browser, klien email, dan library gambar dari 35 tahun terakhir.
- Sebaiknya pakai data URI atau file?
- Data URI menghemat satu request dan cocok untuk placeholder dan CSS. File atau endpoint diperlukan jika request itu sendiri yang penting, seperti pada tracking pixel.
- Content-Type apa yang harus dikirim?
image/gif. TambahkanCache-Control: no-storejika setiap request harus sampai ke server Anda.