అతి చిన్న ట్రాన్స్పరెంట్ 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 edge నుంచి ఎక్కువ కాలం కాష్ అయ్యేలా సర్వ్ అవుతాయి, 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 సపోర్ట్ అంతంత మాత్రమే.
- ఇమేజ్ ఫైల్ను వెంట పెట్టుకోకుండానే నిజమైన ఇమేజ్ అవసరమయ్యే టెస్ట్లు, మాక్లు.
ట్రాకింగ్ పిక్సెల్లు కనిపించినంత నమ్మదగినవి కావు
Mail Privacy Protection ఆన్లో ఉన్నప్పుడు Apple Mail రిమోట్ ఇమేజ్లను ప్రాక్సీ ద్వారా ముందే లోడ్ చేస్తుంది, కాబట్టి ఒక “open” ను అసలు ఏ వ్యక్తీ చేసి ఉండకపోవచ్చు. Gmail కూడా తన సొంత ప్రాక్సీ ద్వారా ఇమేజ్లను ఫెచ్ చేసి కాష్ చేస్తుంది. చాలా క్లయింట్లు డిఫాల్ట్గా రిమోట్ ఇమేజ్లను బ్లాక్ చేస్తాయి. పేజ్ అనలిటిక్స్ కోసం ఇమేజ్ కంటే తరచుగా navigator.sendBeacon() లేదా 204 No Content రెస్పాన్స్ బాగా సరిపోతుంది.
ప్రశ్నలు
- ఒక పిక్సెల్ ఉన్నా దీన్ని empty అని ఎందుకు అంటారు?
- GIF లో కనీసం ఒక పిక్సెల్ ఉండాలి. ఇది 1×1, దీని ఏకైక రంగు ట్రాన్స్పరెంట్గా మార్క్ చేయబడింది, అందుకే ఏమీ కనిపించదు.
- 43 బైట్ల ఫైల్ చెల్లుబాటవుతుందా?
- అవును. ఇది GIF89a స్పెసిఫికేషన్ను కచ్చితంగా పాటిస్తుంది, పై టేబుల్లోని ప్రతి ఇంజిన్ దీన్ని ట్రాన్స్పరెంట్గా డ్రా చేస్తుంది.
- PNG లేదా WebP కాకుండా GIF ఎందుకు?
- ఇది అతి చిన్న ట్రాన్స్పరెంట్ PNG కంటే కూడా చిన్నది, గత 35 ఏళ్లలోని ప్రతి బ్రౌజర్, ఈమెయిల్ క్లయింట్, ఇమేజ్ లైబ్రరీ దీన్ని చదవగలవు.
- data URI వాడాలా, ఫైల్ వాడాలా?
- data URI ఒక రిక్వెస్ట్ను ఆదా చేస్తుంది, ప్లేస్హోల్డర్లకు, CSS కు సరిపోతుంది. ట్రాకింగ్ పిక్సెల్లలో లాగా రిక్వెస్ట్ రావడమే అసలు ఉద్దేశం అయితే, ఫైల్ లేదా endpoint కావాలి.
- ఏ Content-Type పంపాలి?
image/gif. ప్రతి రిక్వెస్ట్ మీ సర్వర్కు చేరడం తప్పనిసరి అయితేCache-Control: no-storeజోడించండి.