emptygif
భాష: తెలుగు

అతి చిన్న ట్రాన్స్‌పరెంట్ GIF 43 బైట్‌లు మాత్రమే.

ఫైల్ మొత్తం ఇంతే. ఏ బైట్‌నైనా ఎంచుకుని అది ఏం చేస్తుందో చూడండి, తర్వాత ఫైల్‌ను కాపీ చేయండి, డౌన్‌లోడ్ చేయండి, హాట్‌లింక్ చేయండి, లేదా మీ సొంత కోడ్ నుంచి సర్వ్ చేయండి.

43 బైట్‌ల GIF, పెద్దదిగా చూపించింది: ఒక ట్రాన్స్‌పరెంట్ పిక్సెల్
0000
0010
0020
1×1.gif డౌన్‌లోడ్ చేయండి

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

ప్రతి బైట్ ఏం చేస్తుంది

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 బైట్‌ల సబ్-బ్లాక్‌లుగా విభజించినవి.
02LZW మినిమమ్ కోడ్ సైజ్2, కాబట్టి కంప్రెస్డ్ కోడ్‌లు 3 బిట్‌ల వెడల్పుతో మొదలవుతాయి.
02సబ్-బ్లాక్ సైజ్తర్వాత 2 బైట్‌ల కంప్రెస్డ్ డేటా ఉంది.
44 01కంప్రెస్డ్ పిక్సెల్‌లుఅతి కింది బిట్ నుంచి పైకి ప్యాక్ చేసిన LZW కోడ్‌లు. అవి ఎలా డీకోడ్ అవుతాయో కింద చూడండి.
00బ్లాక్ టెర్మినేటర్బ్లాక్‌ను మూసివేసే సున్నా పొడవు సబ్-బ్లాక్.
ట్రెయిలర్ ఫైల్ ముగింపును సూచించే ఒక బైట్.
3Bట్రెయిలర్0x3B (“;”) ఫైల్‌ను ముగిస్తుంది.

ప్యాక్డ్ బైట్‌ల లోపల

మూడు బైట్‌లలో ఒక్కోదానిలో కొన్ని చిన్న సెట్టింగ్‌లు ఉంటాయి. బిట్ 7 అన్నిటికంటే ఎడమవైపు ఉంటుంది.

లాజికల్ స్క్రీన్ డిస్క్రిప్టర్ 0x80
1గ్లోబల్ కలర్ టేబుల్ ఉంది
000కలర్ రిజల్యూషన్
0ప్యాలెట్ ప్రాముఖ్యత క్రమంలో సార్ట్ అయింది
000టేబుల్ సైజ్: 2^(n+1) ఎంట్రీలు
గ్రాఫిక్ కంట్రోల్ ఎక్స్‌టెన్షన్ 0x01
000రిజర్వ్డ్
000డిస్పోజల్ మెథడ్
0యూజర్ ఇన్‌పుట్ కోసం వేచి ఉండు
1ట్రాన్స్‌పరెన్సీ ఆన్
ఇమేజ్ డిస్క్రిప్టర్ 0x00
0లోకల్ కలర్ టేబుల్ ఉంది
0ఇంటర్‌లేస్డ్
0ప్యాలెట్ ప్రాముఖ్యత క్రమంలో సార్ట్ అయింది
00రిజర్వ్డ్
000లోకల్ టేబుల్ సైజ్

రెండు బైట్‌లలో ఒక పిక్సెల్ ఎలా ఇముడుతుంది

మినిమమ్ కోడ్ సైజ్ 2 అయినప్పుడు డీకోడర్ 3-బిట్ కోడ్‌లను చదువుతుంది. కోడ్ 4 టేబుల్‌ను క్లియర్ చేస్తుంది, కోడ్ 5 ఇమేజ్‌ను ముగిస్తుంది, 0 నుంచి 3 వరకు ఉన్న కోడ్‌లు ప్యాలెట్ ఎంట్రీలు. 44 01 బైట్‌లను అతి కింది బిట్ నుంచి పైకి చదువుతారు:

0x44 010001000x01 00000001

  1. 001100 = 4క్లియర్: కొత్త టేబుల్‌తో ప్రారంభం
  2. 000000 = 0పిక్సెల్: ప్యాలెట్ ఎంట్రీ 0
  3. 101101 = 5ఇమేజ్ ముగింపు
  4. 0000000 వాడని ప్యాడింగ్ బిట్‌లు

పెద్ద ఇమేజ్‌లు కూడా ఇదే ట్రిక్ వాడతాయి: ప్రతి కొత్త కోడ్ మునుపటి దానికంటే ఒక పిక్సెల్ పొడవైన రన్‌ను సూచిస్తుంది, కాబట్టి 1000×1000 ట్రాన్స్‌పరెంట్ GIF కేవలం 1,743 బైట్‌లే.

ఇంకా చిన్నదిగా చేయవచ్చా?

అవును, డీకోడర్‌లు లేకపోయినా సర్దుకుపోయే భాగాలను తీసేస్తే. మేము ప్రతి వేరియంట్‌ను మూడు బ్రౌజర్ ఇంజిన్‌లలో, Pillow లో ఓపెన్ చేసి, అవి ఏం డ్రా చేశాయో నమోదు చేశాం.

సైజ్వేరియంట్ChromiumFirefoxWebKitPillow
43ఈ పేజీలోని స్టాండర్డ్ ఫైల్.ట్రాన్స్‌పరెంట్ట్రాన్స్‌పరెంట్ట్రాన్స్‌పరెంట్ట్రాన్స్‌పరెంట్
42ట్రెయిలర్ బైట్ లేదు. డీకోడర్‌లు ఎలాగూ డేటా అయిపోగానే ఆగిపోతాయి.ట్రాన్స్‌పరెంట్ట్రాన్స్‌పరెంట్ట్రాన్స్‌పరెంట్ట్రాన్స్‌పరెంట్
37ప్యాలెట్ అసలే లేదు. అయినా చెల్లుబాటే: స్పెసిఫికేషన్ డీకోడర్‌లు తమ సొంత ప్యాలెట్‌ను వాడుకోవడానికి అనుమతిస్తుంది, ఇండెక్స్ 0 ఎలాగూ ట్రాన్స్‌పరెంట్.ట్రాన్స్‌పరెంట్ట్రాన్స్‌పరెంట్ట్రాన్స్‌పరెంట్ట్రాన్స్‌పరెంట్
36ప్యాలెట్ లేదు, ట్రెయిలర్ కూడా లేదు.ట్రాన్స్‌పరెంట్ట్రాన్స్‌పరెంట్ట్రాన్స్‌పరెంట్ట్రాన్స్‌పరెంట్
35ట్రాన్స్‌పరెన్సీ బ్లాక్ లేదు: పిక్సెల్ ప్యాలెట్ కలర్ 0, అంటే తెలుపు రంగులో డ్రా అవుతుంది.తెలుపుతెలుపుతెలుపుతెలుపు
351987 నాటి ఫార్మాట్. ఇందులో ఏ రంగునైనా ట్రాన్స్‌పరెంట్‌గా మార్క్ చేసే మార్గం లేదు.తెలుపుతెలుపుతెలుపుతెలుపు
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 వరకు. ఇది మీ బ్రౌజర్‌లోనే తయారవుతుంది; ఏదీ అప్‌లోడ్ కాదు.

ఫిల్
సాధారణ సైజ్‌లు

1×1 · 43 బైట్‌లు

GIF డౌన్‌లోడ్ చేయండి

మీ స్టాక్ నుంచి సర్వ్ చేయండి

రన్ చేయడానికి సిద్ధంగా ఉన్న 173 స్నిపెట్‌లు. మీది ఎంచుకోండి: ప్రతి స్నిపెట్ మీరు ఎంచుకున్న పాత్‌లో image/gif రెస్పాన్స్ ఇస్తుంది. మీరు పైన సైజ్ లేదా రంగు మార్చి ఉంటే, స్నిపెట్‌లు ఆ GIF నే వాడతాయి.

Elixir, Erlang & Gleam

Express JavaScript

ఇన్‌స్టాల్
npm i express
ఫైల్
server.mjs
రన్
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);

మేము ఈ స్నిపెట్‌ను రన్ చేసి, అది తిరిగి ఇచ్చిన బైట్‌లను పోల్చి చూశాం. పేజీ తెరవండి

దీన్ని దేనికి వాడతారు

  • ట్రాకింగ్ పిక్సెల్‌లు, బీకన్‌లు: సర్వర్ రిక్వెస్ట్‌ను లాగ్ చేసి, అతి చిన్న చెల్లుబాటయ్యే ఇమేజ్‌తో జవాబిస్తుంది.
  • 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 జోడించండి.