سب سے چھوٹی شفاف GIF صرف 43 بائٹ کی ہے۔
پوری فائل یہی ہے۔ کسی بھی بائٹ کو منتخب کر کے دیکھیں کہ وہ کیا کرتی ہے، پھر فائل کاپی کریں، ڈاؤن لوڈ کریں، ہاٹ لنک کریں یا اپنے کوڈ سے سرو کریں۔

ہر بائٹ کیا کرتی ہے
GIF بلاکس کا ایک سلسلہ ہوتی ہے۔ اس فائل میں سات بلاک ہیں، اور اس صفحے کا ہر رنگ ان میں سے کسی ایک سے تعلق رکھتا ہے۔ پڑھنے کے لیے کوئی بائٹ یا بلاک منتخب کریں۔ اعداد little-endian ترتیب میں محفوظ ہوتے ہیں: کم تر بائٹ پہلے آتی ہے، اس لیے 01 00 کا مطلب 1 ہے۔
| بائٹس | فیلڈ | مطلب |
|---|---|---|
| ہیڈر ڈیکوڈر کو بتاتا ہے کہ یہ GIF ہے اور فارمیٹ کا کون سا ورژن متوقع ہے۔ | ||
| 47 49 46 | دستخط | ASCII حروف “GIF”۔ ہر GIF فائل انہی سے شروع ہوتی ہے۔ |
| 38 39 61 | ورژن | “89a”۔ شفافیت کے لیے 89a ضروری ہے؛ 87a میں گرافک کنٹرول ایکسٹینشن نہیں ہوتا۔ |
| لاجیکل اسکرین ڈسکرپٹر کینوس کا سائز اور اس کے کلر ٹیبل کی ترتیب۔ | ||
| 01 00 | کینوس کی چوڑائی | 1 px۔ |
| 01 00 | کینوس کی اونچائی | 1 px۔ |
| 80 | پیکڈ فلیگز | چار سیٹنگز ایک بائٹ میں سمائی ہوئی ہیں۔ سب سے اوپر والا بٹ بتاتا ہے کہ آگے گلوبل کلر ٹیبل ہے؛ آخری تین بٹس اس کا سائز بتاتے ہیں۔ |
| 00 | بیک گراؤنڈ کلر انڈیکس | پیلیٹ کی اینٹری 0۔ براؤزرز اسے نظرانداز کر کے وہی دکھاتے ہیں جو تصویر کے پیچھے ہے۔ |
| 00 | پکسل ایسپیکٹ ریشو | 0 کا مطلب مربع پکسلز ہے، بغیر کسی تصحیح کے۔ |
| گلوبل کلر ٹیبل پیلیٹ۔ پکسلز رنگ کے بجائے اس فہرست کا انڈیکس محفوظ کرتے ہیں۔ | ||
| FF FF FF | پیلیٹ اینٹری | سرخ، سبز اور نیلا، ہر ایک کے لیے ایک بائٹ: #ffffff۔ دو اینٹریز سب سے چھوٹا ٹیبل ہے جو GIF میں ہو سکتا ہے۔ |
| 00 00 00 | پیلیٹ اینٹری | سرخ، سبز اور نیلا، ہر ایک کے لیے ایک بائٹ: #000000۔ دو اینٹریز سب سے چھوٹا ٹیبل ہے جو GIF میں ہو سکتا ہے۔ |
| گرافک کنٹرول ایکسٹینشن اختیاری بلاک جو GIF89a میں شامل کیا گیا۔ یہاں یہ پیلیٹ کی اینٹری 0 کو شفاف بناتا ہے۔ | ||
| 21 | ایکسٹینشن انٹروڈیوسر | 0x21 (“!”) ایکسٹینشن بلاک کا اعلان کرتا ہے۔ |
| F9 | گرافک کنٹرول لیبل | 0xF9 بتاتا ہے کہ یہ ایکسٹینشن گرافک کنٹرول ایکسٹینشن ہے۔ |
| 04 | بلاک سائز | آگے سیٹنگز کی 4 بائٹس ہیں۔ |
| 01 | پیکڈ فلیگز | سب سے نچلا بٹ شفافیت کا فلیگ ہے۔ یہ آن ہے، اس لیے نیچے دیا گیا شفاف انڈیکس استعمال ہوتا ہے۔ |
| 00 00 | تاخیر | سیکنڈ کے 0 سوویں حصے۔ یہ صرف اینیمیشنز میں اہم ہے۔ |
| 00 | شفاف رنگ کا انڈیکس | پیلیٹ کی اینٹری 0 مکمل طور پر شفاف بنائی جاتی ہے۔ |
| 00 | بلاک ٹرمینیٹر | صفر لمبائی کا سب بلاک جو بلاک کو بند کرتا ہے۔ |
| امیج ڈسکرپٹر تصویر کینوس پر کہاں ہے اور کتنی بڑی ہے۔ | ||
| 2C | امیج سیپریٹر | 0x2C (“,”) تصویر شروع کرتا ہے۔ |
| 00 00 | بائیں | تصویر کینوس کے بائیں کنارے سے 0 px پر شروع ہوتی ہے۔ |
| 00 00 | اوپر | تصویر کینوس کے اوپری کنارے سے 0 px پر شروع ہوتی ہے۔ |
| 01 00 | تصویر کی چوڑائی | 1 px۔ |
| 01 00 | تصویر کی اونچائی | 1 px۔ |
| 00 | پیکڈ فلیگز | کوئی لوکل کلر ٹیبل نہیں، انٹرلیسڈ نہیں۔ تصویر گلوبل پیلیٹ استعمال کرتی ہے۔ |
| امیج ڈیٹا پکسلز، جو LZW سے کمپریس کر کے زیادہ سے زیادہ 255 بائٹ کے سب بلاکس میں تقسیم کیے گئے ہیں۔ | ||
| 02 | LZW کم از کم کوڈ سائز | 2، اس لیے کمپریسڈ کوڈز 3 بٹ چوڑے شروع ہوتے ہیں۔ |
| 02 | سب بلاک سائز | آگے کمپریسڈ ڈیٹا کی 2 بائٹس ہیں۔ |
| 44 01 | کمپریسڈ پکسلز | LZW کوڈز سب سے نچلے بٹ سے اوپر کی طرف پیک کیے گئے ہیں۔ نیچے دیکھیں کہ یہ کیسے ڈیکوڈ ہوتے ہیں۔ |
| 00 | بلاک ٹرمینیٹر | صفر لمبائی کا سب بلاک جو بلاک کو بند کرتا ہے۔ |
| ٹریلر ایک بائٹ جو فائل کے اختتام کی نشاندہی کرتی ہے۔ | ||
| 3B | ٹریلر | 0x3B (“;”) فائل ختم کرتا ہے۔ |
پیکڈ بائٹس کے اندر
تین بائٹس میں سے ہر ایک میں کئی چھوٹی سیٹنگز محفوظ ہیں۔ بٹ 7 سب سے بائیں والا ہے۔
0x800x010x00دو بائٹس میں ایک پکسل کیسے سماتا ہے
کم از کم کوڈ سائز 2 ہونے پر ڈیکوڈر 3 بٹ کے کوڈز پڑھتا ہے۔ کوڈ 4 ٹیبل صاف کرتا ہے، کوڈ 5 تصویر ختم کرتا ہے، اور کوڈز 0 سے 3 پیلیٹ کی اینٹریز ہیں۔ بائٹس 44 01 سب سے نچلے بٹ سے اوپر کی طرف پڑھی جاتی ہیں:
0x44 010001000x01 00000001
- 001100 = 4صفائی: نئے ٹیبل سے آغاز
- 000000 = 0پکسل: پیلیٹ کی اینٹری 0
- 101101 = 5تصویر کا اختتام
- 0000000 غیر استعمال شدہ پیڈنگ بٹس
بڑی تصاویر بھی یہی ترکیب استعمال کرتی ہیں: ہر نیا کوڈ پچھلے سے ایک پکسل لمبے سلسلے کی نمائندگی کرتا ہے، اس لیے 1000×1000 کی شفاف GIF صرف 1,743 بائٹس لیتی ہے۔
کیا یہ اور چھوٹی ہو سکتی ہے؟
ہاں، اگر آپ وہ حصے ہٹا دیں جن کے نہ ہونے کو ڈیکوڈرز برداشت کر لیتے ہیں۔ ہم نے ہر ورژن تین براؤزر انجنوں اور Pillow کو دیا اور جو کچھ انہوں نے بنایا وہ ریکارڈ کیا۔
| سائز | ورژن | Chromium | Firefox | WebKit | Pillow |
|---|---|---|---|---|---|
| 43 | اس صفحے کی معیاری فائل۔ | شفاف | شفاف | شفاف | شفاف |
| 42 | ٹریلر بائٹ نہیں۔ ڈیکوڈرز ویسے بھی ڈیٹا کے اختتام پر رک جاتے ہیں۔ | شفاف | شفاف | شفاف | شفاف |
| 37 | کوئی پیلیٹ ہی نہیں۔ پھر بھی درست: اسپیسیفکیشن ڈیکوڈرز کو اپنا پیلیٹ استعمال کرنے کی اجازت دیتی ہے، اور انڈیکس 0 ویسے بھی شفاف ہے۔ | شفاف | شفاف | شفاف | شفاف |
| 36 | نہ پیلیٹ، نہ ٹریلر۔ | شفاف | شفاف | شفاف | شفاف |
| 35 | شفافیت کا بلاک نہیں: پکسل پیلیٹ کے رنگ 0، یعنی سفید، میں بنتا ہے۔ | سفید | سفید | سفید | سفید |
| 35 | 1987 کا فارمیٹ۔ اس میں کسی رنگ کو شفاف قرار دینے کا کوئی طریقہ نہیں۔ | سفید | سفید | سفید | سفید |
| 34 | شفافیت کا بلاک موجود، مگر کمپریسڈ پکسلز نہیں۔ | شفاف | شفاف | شفاف | خرابی |
| 33 | یہی، مگر ٹریلر کے بغیر۔ | شفاف | شفاف | شفاف | خرابی |
| 29 | نہ پیلیٹ، نہ شفافیت۔ ہر انجن اپنا رنگ خود چنتا ہے۔ | سیاہ | سفید | شفاف | سیاہ |
| 26 | ایسی تصویر جس میں کوئی کمپریسڈ ڈیٹا ہی نہیں۔ | شفاف | شفاف | شفاف | خرابی |
| 14 | صرف ہیڈر، کینوس سائز اور ٹریلر۔ اس میں کوئی تصویر نہیں۔ | شفاف | خرابی | شفاف | خرابی |
جب ہر جگہ چلنا لازمی ہو تو 43 بائٹس استعمال کریں۔ 37 بائٹس بھی درست GIF ہے اور ہمارے آزمائے گئے ہر انجن میں شفاف تھی۔ اس سے کم پر آپ ڈیکوڈر کی نرمی پر انحصار کرتے ہیں، اور 29 بائٹ کی فائل دکھاتی ہے کہ انجن کس طرح مختلف نتائج دیتے ہیں۔
23 ستمبر، 2026 کو Chromium 153.0.8010.12, Firefox 155.0, WebKit 26.6, Pillow 12.2.0 پر جانچا گیا۔
کسی بھی سائز کی بنائیں
شفاف یا ٹھوس رنگ، 1×1 سے 65535×65535 تک۔ یہ آپ کے براؤزر میں بنتی ہے؛ کچھ بھی اپ لوڈ نہیں ہوتا۔
ہاٹ لنک کریں
کسی بھی سائٹ، ای میل یا ایپ سے ان فائلوں کو براہِ راست لنک کریں۔ یہ Cloudflare کے ایج سے طویل کیش مدت کے ساتھ سرو ہوتی ہیں، اور CORS سب کے لیے کھلا ہے۔
- 43 بائٹ کی فائل
https://emptygif.com/1x1.gif - کوئی بھی سائز، شفاف
https://emptygif.com/px/300x250.gif - کوئی بھی سائز، ٹھوس رنگ
https://emptygif.com/px/300x250/ff5a1f.gif - JSON API: سائز، base64 اور data URI
https://emptygif.com/api/gif?w=300&h=250 - تمام اسنیپٹس JSON میں
https://emptygif.com/snippets.json - AI ایجنٹس کے لیے خلاصہ
https://emptygif.com/llms.txt
رسپانس ہیڈرز
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: *مثال
<img src="https://emptygif.com/1x1.gif" width="1" height="1" alt="">
بنائے گئے سائز ہر سائیڈ پر 4096 px تک جاتے ہیں۔ اگر آپ کی ٹریفک زیادہ ہے تو براہِ کرم فائل ڈاؤن لوڈ کر کے خود ہوسٹ کریں۔
اپنے اسٹیک سے سرو کریں
173 اسنیپٹس جو چلانے کے لیے تیار ہیں۔ اپنا چنیں: ہر ایک آپ کے منتخب کردہ پاتھ پر image/gif رسپانس دیتا ہے۔ اگر آپ نے اوپر سائز یا رنگ بدلا ہے تو اسنیپٹس وہی GIF استعمال کرتے ہیں۔
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);
ہم نے یہ اسنیپٹ چلایا اور اس کی لوٹائی ہوئی بائٹس کا موازنہ کیا۔ صفحہ کھولیں
یہ کس کام آتی ہے
- ٹریکنگ پکسلز اور بیکنز: سرور درخواست لاگ کرتا ہے اور سب سے چھوٹی درست تصویر سے جواب دیتا ہے۔
- lazy-load ہونے والی تصاویر کے لیے پلیس ہولڈرز، تاکہ اصل سورس آنے سے پہلے بھی
imgٹیگ درست رہے۔ - HTML ای میل میں مقررہ سائز کے اسپیسرز، جہاں CSS کی سپورٹ ادھوری ہے۔
- ٹیسٹس اور mocks جنہیں تصویر کی فائل ساتھ رکھے بغیر اصلی تصویر درکار ہو۔
ٹریکنگ پکسلز اتنے قابلِ اعتماد نہیں جتنے لگتے ہیں
جب Mail Privacy Protection آن ہو تو Apple Mail ریموٹ تصاویر پراکسی کے ذریعے پہلے سے لوڈ کر لیتا ہے، اس لیے ممکن ہے کوئی “اوپن” کسی انسان نے کیا ہی نہ ہو۔ Gmail بھی تصاویر اپنی پراکسی سے لاتا اور کیش کرتا ہے۔ کئی کلائنٹس ریموٹ تصاویر ڈیفالٹ طور پر بلاک کرتے ہیں۔ صفحے کے اینالیٹکس کے لیے navigator.sendBeacon() یا 204 No Content رسپانس اکثر تصویر سے بہتر رہتا ہے۔
سوالات
- جب اس میں پکسل ہے تو اسے خالی کیوں کہتے ہیں؟
- GIF میں کم از کم ایک پکسل ہونا ضروری ہے۔ یہ فائل 1×1 کی ہے اور اس کا واحد رنگ شفاف قرار دیا گیا ہے، اس لیے کچھ نظر نہیں آتا۔
- کیا 43 بائٹ کی فائل درست ہے؟
- ہاں۔ یہ GIF89a اسپیسیفکیشن کی مکمل پیروی کرتی ہے، اور اوپر والے ٹیبل کا ہر انجن اسے شفاف دکھاتا ہے۔
- PNG یا WebP کے بجائے GIF کیوں؟
- یہ کم سے کم شفاف PNG سے بھی چھوٹی ہے، اور پچھلے 35 سال کا ہر براؤزر، ای میل کلائنٹ اور امیج لائبریری اسے پڑھ سکتی ہے۔
- data URI استعمال کروں یا فائل؟
- data URI ایک درخواست بچاتا ہے اور پلیس ہولڈرز اور CSS کے لیے موزوں ہے۔ جب درخواست بذاتِ خود مقصد ہو، جیسے ٹریکنگ پکسلز میں، تو فائل یا اینڈ پوائنٹ درکار ہوتا ہے۔
- کون سا Content-Type بھیجوں؟
image/gif۔ اگر ہر درخواست کا آپ کے سرور تک پہنچنا ضروری ہو توCache-Control: no-storeشامل کریں۔