emptygif
Bahasa: Bahasa Indonesia

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.

GIF 43 byte, diperbesar: satu piksel transparan
0000
0010
0020
Unduh 1×1.gif

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

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.

ByteFieldArti
Header Memberi tahu decoder bahwa ini adalah GIF dan versi format mana yang digunakan.
47 49 46SignatureHuruf ASCII “GIF”. Setiap file GIF diawali dengan huruf-huruf ini.
38 39 61Versi“89a”. 89a diperlukan untuk transparansi; 87a tidak memiliki ekstensi kontrol grafis.
Deskriptor layar logis Ukuran kanvas dan cara tabel warnanya diatur.
01 00Lebar kanvas1 px.
01 00Tinggi kanvas1 px.
80Flag terpaketEmpat pengaturan dimampatkan ke dalam satu byte. Bit teratas menandakan bahwa tabel warna global menyusul; tiga bit terakhir menentukan ukurannya.
00Indeks warna latarEntri palet 0. Browser mengabaikannya dan menampilkan apa pun yang ada di belakang gambar.
00Rasio aspek piksel0 berarti piksel persegi, tanpa koreksi.
Tabel warna global Palet warna. Piksel menyimpan indeks ke daftar ini, bukan warna itu sendiri.
FF FF FFEntri paletMerah, hijau, dan biru, masing-masing satu byte: #ffffff. Dua entri adalah tabel terkecil yang bisa dimiliki GIF.
00 00 00Entri paletMerah, 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.
21Pembuka ekstensi0x21 (“!”) menandai dimulainya blok ekstensi.
F9Label kontrol grafis0xF9 menyatakan bahwa ekstensi ini adalah ekstensi kontrol grafis.
04Ukuran blokDiikuti 4 byte pengaturan.
01Flag terpaketBit terendah adalah flag transparansi. Flag ini aktif, jadi indeks transparan di bawah digunakan.
00 00Jeda0 per seratus detik. Hanya berpengaruh untuk animasi.
00Indeks warna transparanEntri palet 0 digambar sepenuhnya transparan.
00Terminator blokSub-blok berpanjang nol yang menutup blok.
Deskriptor gambar Posisi gambar di kanvas dan ukurannya.
2CPemisah gambar0x2C (“,”) memulai sebuah gambar.
00 00KiriGambar dimulai 0 px dari tepi kiri kanvas.
00 00AtasGambar dimulai 0 px dari tepi atas kanvas.
01 00Lebar gambar1 px.
01 00Tinggi gambar1 px.
00Flag terpaketTanpa 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.
02Ukuran kode minimum LZW2, jadi kode terkompresi dimulai dengan lebar 3 bit.
02Ukuran sub-blokDiikuti 2 byte data terkompresi.
44 01Piksel terkompresiKode LZW yang dikemas mulai dari bit terendah. Lihat cara dekodenya di bawah.
00Terminator blokSub-blok berpanjang nol yang menutup blok.
Trailer Satu byte yang menandai akhir file.
3BTrailer0x3B (“;”) mengakhiri file.

Isi byte terpaket

Masing-masing dari tiga byte ini menyimpan beberapa pengaturan kecil. Bit 7 adalah yang paling kiri.

Deskriptor layar logis 0x80
1Ada tabel warna global
000Resolusi warna
0Palet diurutkan menurut kepentingan
000Ukuran tabel: 2^(n+1) entri
Ekstensi kontrol grafis 0x01
000Dicadangkan
000Metode disposal
0Tunggu input pengguna
1Transparansi aktif
Deskriptor gambar 0x00
0Ada tabel warna lokal
0Interlaced
0Palet diurutkan menurut kepentingan
00Dicadangkan
000Ukuran tabel lokal

Bagaimana 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

  1. 001100 = 4Clear: mulai dengan tabel baru
  2. 000000 = 0Piksel: entri palet 0
  3. 101101 = 5Akhir gambar
  4. 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.

UkuranVarianChromiumFirefoxWebKitPillow
43File standar di halaman ini.TransparanTransparanTransparanTransparan
42Tanpa byte trailer. Decoder toh berhenti di akhir data.TransparanTransparanTransparanTransparan
37Tanpa palet sama sekali. Tetap valid: spesifikasi mengizinkan decoder memakai paletnya sendiri, dan indeks 0 toh transparan.TransparanTransparanTransparanTransparan
36Tanpa palet dan tanpa trailer.TransparanTransparanTransparanTransparan
35Tanpa blok transparansi: piksel digambar dengan warna palet 0, yaitu putih.PutihPutihPutihPutih
35Format tahun 1987. Format ini tidak punya cara untuk menandai warna sebagai transparan.PutihPutihPutihPutih
34Ada blok transparansi, tetapi tanpa piksel terkompresi.TransparanTransparanTransparanError
33Sama seperti di atas, tanpa trailer.TransparanTransparanTransparanError
29Tanpa palet dan tanpa transparansi. Setiap engine memilih warnanya sendiri.HitamPutihTransparanHitam
26Gambar tanpa data terkompresi sama sekali.TransparanTransparanTransparanError
14Hanya header, ukuran kanvas, dan trailer. Tidak ada gambar di dalamnya.TransparanErrorTransparanError

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.

Isi
Ukuran umum

1×1 · 43 byte

Unduh GIF

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.

Elixir, Erlang & Gleam

Express JavaScript

Instal
npm i express
File
server.mjs
Jalankan
node server.mjs
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 img sudah 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. Tambahkan Cache-Control: no-store jika setiap request harus sampai ke server Anda.