En küçük şeffaf GIF 43 bayttır.
Dosyanın tamamı bu. Ne işe yaradığını görmek için herhangi bir bayta tıklayın; sonra dosyayı kopyalayın, indirin, doğrudan bağlantı verin ya da kendi kodunuzdan sunun.

Her bayt ne yapar
Bir GIF, bloklardan oluşan bir dizidir. Bu dosyada yedi blok var ve bu sayfadaki her renk bunlardan birine ait. Okumak için bir bayt ya da blok seçin. Sayılar little-endian olarak saklanır: düşük bayt önce gelir, yani 01 00 1 demektir.
| Baytlar | Alan | Anlamı |
|---|---|---|
| Başlık Çözücüye bunun bir GIF olduğunu ve formatın hangi sürümünü beklemesi gerektiğini söyler. | ||
| 47 49 46 | İmza | ASCII harfleri “GIF”. Her GIF dosyası bunlarla başlar. |
| 38 39 61 | Sürüm | “89a”. Şeffaflık için 89a gerekir; 87a'da grafik kontrol uzantısı yoktur. |
| Mantıksal ekran tanımlayıcısı Tuvalin boyutu ve renk tablosunun nasıl ayarlandığı. | ||
| 01 00 | Tuval genişliği | 1 px. |
| 01 00 | Tuval yüksekliği | 1 px. |
| 80 | Paketlenmiş bayraklar | Tek bir bayta sıkıştırılmış dört ayar. En üst bit, ardından global renk tablosu geldiğini belirtir; son üç bit tablonun boyutunu verir. |
| 00 | Arka plan renk indeksi | Paletin 0 numaralı girdisi. Tarayıcılar bunu yok sayar ve görüntünün arkasında ne varsa onu gösterir. |
| 00 | Piksel en-boy oranı | 0, düzeltme yapılmayan kare pikseller anlamına gelir. |
| Global renk tablosu Palet. Pikseller renk yerine bu listedeki bir indeksi saklar. | ||
| FF FF FF | Palet girdisi | Kırmızı, yeşil ve mavi, her biri bir bayt: #ffffff. Bir GIF'in sahip olabileceği en küçük tablo iki girdiliktir. |
| 00 00 00 | Palet girdisi | Kırmızı, yeşil ve mavi, her biri bir bayt: #000000. Bir GIF'in sahip olabileceği en küçük tablo iki girdiliktir. |
| Grafik kontrol uzantısı GIF89a ile eklenen isteğe bağlı blok. Burada paletin 0 numaralı girdisini şeffaf yapar. | ||
| 21 | Uzantı başlatıcısı | 0x21 (“!”) bir uzantı bloğunun başladığını bildirir. |
| F9 | Grafik kontrol etiketi | 0xF9, bu uzantının bir grafik kontrol uzantısı olduğunu belirtir. |
| 04 | Blok boyutu | Ardından 4 bayt ayar gelir. |
| 01 | Paketlenmiş bayraklar | En düşük bit şeffaflık bayrağıdır. Açık olduğu için aşağıdaki şeffaf indeks kullanılır. |
| 00 00 | Gecikme | Saniyenin yüzde biri cinsinden 0. Yalnızca animasyonlarda önemlidir. |
| 00 | Şeffaf renk indeksi | Paletin 0 numaralı girdisi tamamen şeffaf çizilir. |
| 00 | Blok sonlandırıcı | Bloğu kapatan, sıfır uzunlukta bir alt blok. |
| Görüntü tanımlayıcısı Görüntünün tuvaldeki konumu ve boyutu. | ||
| 2C | Görüntü ayırıcı | 0x2C (“,”) bir görüntüyü başlatır. |
| 00 00 | Sol | Görüntü, tuvalin sol kenarından 0 px uzakta başlar. |
| 00 00 | Üst | Görüntü, tuvalin üst kenarından 0 px uzakta başlar. |
| 01 00 | Görüntü genişliği | 1 px. |
| 01 00 | Görüntü yüksekliği | 1 px. |
| 00 | Paketlenmiş bayraklar | Yerel renk tablosu yok, interlace yok. Görüntü global paleti kullanır. |
| Görüntü verisi LZW ile sıkıştırılmış ve en fazla 255 baytlık alt bloklara bölünmüş pikseller. | ||
| 02 | LZW minimum kod boyutu | 2, yani sıkıştırılmış kodlar 3 bit genişliğinde başlar. |
| 02 | Alt blok boyutu | Ardından 2 bayt sıkıştırılmış veri gelir. |
| 44 01 | Sıkıştırılmış pikseller | En düşük bitten başlayarak paketlenmiş LZW kodları. Nasıl çözüldüklerini aşağıda görebilirsiniz. |
| 00 | Blok sonlandırıcı | Bloğu kapatan, sıfır uzunlukta bir alt blok. |
| Sonlandırıcı Dosyanın sonunu işaretleyen tek bir bayt. | ||
| 3B | Sonlandırıcı | 0x3B (“;”) dosyayı bitirir. |
Paketlenmiş baytların içi
Üç baytın her biri birkaç küçük ayarı saklar. Bit 7 en soldakidir.
0x800x010x00İki bayt bir pikseli nasıl taşır
Minimum kod boyutu 2 olduğunda çözücü 3 bitlik kodlar okur. Kod 4 tabloyu temizler, kod 5 görüntüyü bitirir, 0-3 arasındaki kodlar ise palet girdileridir. 44 01 baytları en düşük bitten yukarı doğru okunur:
0x44 010001000x01 00000001
- 001100 = 4Temizle: yeni bir tabloyla başla
- 000000 = 0Piksel: paletin 0 numaralı girdisi
- 101101 = 5Görüntü sonu
- 0000000 Kullanılmayan dolgu bitleri
Daha büyük görüntüler de aynı hileyi kullanır: her yeni kod bir öncekinden bir piksel daha uzun bir diziyi temsil eder, bu yüzden 1000×1000 şeffaf bir GIF yalnızca 1.743 bayt tutar.
Daha küçük olabilir mi?
Evet, çözücülerin eksikliğini tolere ettiği kısımları atarsanız. Her varyantı üç tarayıcı motoruna ve Pillow'a verdik ve ne çizdiklerini kaydettik.
| Boyut | Varyant | Chromium | Firefox | WebKit | Pillow |
|---|---|---|---|---|---|
| 43 | Bu sayfadaki standart dosya. | Şeffaf | Şeffaf | Şeffaf | Şeffaf |
| 42 | Sonlandırıcı bayt yok. Çözücüler zaten verinin sonunda durur. | Şeffaf | Şeffaf | Şeffaf | Şeffaf |
| 37 | Hiç palet yok. Yine de geçerli: spesifikasyon çözücülerin kendi paletlerini kullanmasına izin verir ve indeks 0 zaten şeffaftır. | Şeffaf | Şeffaf | Şeffaf | Şeffaf |
| 36 | Palet yok, sonlandırıcı yok. | Şeffaf | Şeffaf | Şeffaf | Şeffaf |
| 35 | Şeffaflık bloğu yok: piksel, paletin 0 numaralı rengiyle, yani beyazla çizilir. | Beyaz | Beyaz | Beyaz | Beyaz |
| 35 | 1987 formatı. Bir rengi şeffaf olarak işaretlemenin hiçbir yolu yoktur. | Beyaz | Beyaz | Beyaz | Beyaz |
| 34 | Şeffaflık bloğu var ama sıkıştırılmış piksel yok. | Şeffaf | Şeffaf | Şeffaf | Hata |
| 33 | Aynısı, sonlandırıcı olmadan. | Şeffaf | Şeffaf | Şeffaf | Hata |
| 29 | Palet yok, şeffaflık yok. Her motor kendi rengini seçer. | Siyah | Beyaz | Şeffaf | Siyah |
| 26 | Hiç sıkıştırılmış verisi olmayan bir görüntü. | Şeffaf | Şeffaf | Şeffaf | Hata |
| 14 | Yalnızca başlık, tuval boyutu ve sonlandırıcı. İçinde görüntü yok. | Şeffaf | Hata | Şeffaf | Hata |
Her yerde çalışması gerekiyorsa 43 baytı kullanın. 37 bayt hâlâ geçerli bir GIF'tir ve test ettiğimiz her motorda şeffaftı. Bunun altında çözücünün hoşgörüsüne bağlı kalırsınız; 29 baytlık dosya motorların nasıl farklı davrandığını gösteriyor.
23 Eylül 2026 tarihinde Chromium 153.0.8010.12, Firefox 155.0, WebKit 26.6, Pillow 12.2.0 ile kontrol edildi.
İstediğiniz boyutta oluşturun
Şeffaf ya da düz renk, 1×1'den 65535×65535'e kadar. Tarayıcınızda üretilir; hiçbir şey yüklenmez.
Doğrudan bağlantı verin
Bu dosyalara herhangi bir siteden, e-postadan ya da uygulamadan doğrudan bağlantı verin. Uzun önbellek süreleriyle Cloudflare'in edge ağından sunulurlar ve CORS herkese açıktır.
- 43 baytlık dosya
https://emptygif.com/1x1.gif - Herhangi bir boyut, şeffaf
https://emptygif.com/px/300x250.gif - Herhangi bir boyut, düz renk
https://emptygif.com/px/300x250/ff5a1f.gif - JSON API: boyut, base64 ve data URI
https://emptygif.com/api/gif?w=300&h=250 - Tüm kod örnekleri JSON olarak
https://emptygif.com/snippets.json - Yapay zekâ ajanları için özet
https://emptygif.com/llms.txt
Yanıt header'ları
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: *Örnek
<img src="https://emptygif.com/1x1.gif" width="1" height="1" alt="">
Üretilen boyutlar kenar başına 4096 px'e kadar gider. Yoğun trafik alıyorsanız lütfen dosyayı indirip kendiniz barındırın.
Kendi stack'inizden sunun
Çalıştırmaya hazır 173 kod örneği. Kendinizinkini seçin: her biri seçtiğiniz yolda image/gif yanıtı döner. Yukarıda boyutu veya rengi değiştirdiyseniz örnekler o GIF'i kullanır.
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);
Bu örneği çalıştırıp döndürdüğü baytları karşılaştırdık. Sayfayı aç
Ne için kullanılır
- İzleme pikselleri ve beacon'lar: sunucu isteği loglar ve en küçük geçerli görüntüyle yanıt verir.
- Lazy-load edilen görseller için yer tutucular; böylece gerçek kaynak gelmeden önce de
imgetiketi geçerli olur. - CSS desteğinin tutarsız olduğu HTML e-postalarda sabit boyutlu boşluklar.
- Bir görsel dosyası taşımadan gerçek bir görüntüye ihtiyaç duyan testler ve mock'lar.
İzleme pikselleri göründükleri kadar güvenilir değildir
Mail Privacy Protection açıkken Apple Mail uzak görselleri bir proxy üzerinden önceden yükler; bu yüzden bir “açılma” hiç bir insana ait olmayabilir. Gmail de görselleri kendi proxy'si üzerinden çeker ve önbelleğe alır. Birçok istemci uzak görselleri varsayılan olarak engeller. Sayfa analitiği için navigator.sendBeacon() ya da 204 No Content yanıtı çoğu zaman bir görüntüden daha uygundur.
Sorular
- Bir pikseli varken neden boş deniyor?
- Bir GIF'in en az bir pikseli olmalıdır. Bu dosya 1×1'dir ve tek rengi şeffaf olarak işaretlenmiştir, bu yüzden hiçbir şey görünmez.
- 43 baytlık dosya geçerli mi?
- Evet. GIF89a spesifikasyonuna tam olarak uyar ve yukarıdaki tablodaki her motor onu şeffaf çizer.
- Neden PNG ya da WebP değil de GIF?
- En küçük şeffaf PNG'den bile küçüktür ve son 35 yılın her tarayıcısı, e-posta istemcisi ve görüntü kütüphanesi onu okuyabilir.
- data URI mı kullanmalıyım, dosya mı?
- data URI bir isteği ortadan kaldırır; yer tutucular ve CSS için uygundur. İzleme piksellerinde olduğu gibi asıl amaç isteğin kendisiyse bir dosya ya da endpoint gerekir.
- Hangi Content-Type'ı göndermeliyim?
image/gif. Her isteğin sunucunuza ulaşması gerekiyorsaCache-Control: no-storeekleyin.