emptygif
Lingua: Italiano

La GIF trasparente più piccola pesa 43 byte.

Eccola tutta. Scegli un byte per vedere cosa fa, poi copia il file, scaricalo, usalo in hotlink o servilo dal tuo codice.

La GIF da 43 byte, ingrandita: un pixel trasparente
0000
0010
0020
Scarica 1×1.gif

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

Cosa fa ogni byte

Una GIF è una sequenza di blocchi. Questa ne ha sette, e ogni colore in questa pagina appartiene a uno di essi. Seleziona un byte o un blocco per leggerne la descrizione. I numeri sono memorizzati in little-endian: il byte meno significativo viene prima, quindi 01 00 significa 1.

ByteCampoSignificato
Intestazione Dice al decoder che si tratta di una GIF e quale versione del formato aspettarsi.
47 49 46FirmaLe lettere ASCII «GIF». Ogni file GIF inizia con queste.
38 39 61Versione«89a». Per la trasparenza serve 89a; 87a non ha l'estensione di controllo grafico.
Descrittore dello schermo logico Le dimensioni del canvas e come è impostata la sua tabella dei colori.
01 00Larghezza del canvas1 px.
01 00Altezza del canvas1 px.
80Flag compattatiQuattro impostazioni stipate in un byte. Il bit più alto indica che segue una tabella dei colori globale; gli ultimi tre bit ne indicano la dimensione.
00Indice del colore di sfondoVoce 0 della palette. I browser la ignorano e mostrano ciò che c'è dietro l'immagine.
00Proporzioni dei pixel0 indica pixel quadrati, senza correzione.
Tabella dei colori globale La palette. I pixel memorizzano un indice in questa lista invece di un colore.
FF FF FFVoce della paletteRosso, verde e blu, un byte ciascuno: #ffffff. Due voci sono la tabella più piccola che una GIF possa avere.
00 00 00Voce della paletteRosso, verde e blu, un byte ciascuno: #000000. Due voci sono la tabella più piccola che una GIF possa avere.
Estensione di controllo grafico Blocco opzionale aggiunto in GIF89a. Qui rende trasparente la voce 0 della palette.
21Introduttore di estensione0x21 («!») annuncia un blocco di estensione.
F9Etichetta di controllo grafico0xF9 indica che questa estensione è un'estensione di controllo grafico.
04Dimensione del bloccoSeguono 4 byte di impostazioni.
01Flag compattatiIl bit più basso è il flag di trasparenza. È attivo, quindi viene usato l'indice trasparente qui sotto.
00 00Ritardo0 centesimi di secondo. Conta solo per le animazioni.
00Indice del colore trasparenteLa voce 0 della palette viene disegnata completamente trasparente.
00Terminatore di bloccoUn sotto-blocco di lunghezza zero che chiude il blocco.
Descrittore dell'immagine Dove si trova l'immagine sul canvas e quanto è grande.
2CSeparatore d'immagine0x2C («,») inizia un'immagine.
00 00SinistraL'immagine inizia a 0 px dal bordo sinistro del canvas.
00 00AltoL'immagine inizia a 0 px dal bordo superiore del canvas.
01 00Larghezza dell'immagine1 px.
01 00Altezza dell'immagine1 px.
00Flag compattatiNessuna tabella dei colori locale, niente interlacciamento. L'immagine usa la palette globale.
Dati dell'immagine I pixel, compressi con LZW e divisi in sotto-blocchi di massimo 255 byte.
02Dimensione minima del codice LZW2, quindi i codici compressi partono da 3 bit di larghezza.
02Dimensione del sotto-bloccoSeguono 2 byte di dati compressi.
44 01Pixel compressiCodici LZW impacchettati a partire dal bit più basso. Qui sotto vedi come si decodificano.
00Terminatore di bloccoUn sotto-blocco di lunghezza zero che chiude il blocco.
Marcatore di fine Un byte che segna la fine del file.
3BMarcatore di fine0x3B («;») chiude il file.

Dentro i byte compattati

Tre byte memorizzano ciascuno diverse piccole impostazioni. Il bit 7 è quello più a sinistra.

Descrittore dello schermo logico 0x80
1Tabella dei colori globale presente
000Risoluzione del colore
0Palette ordinata per importanza
000Dimensione della tabella: 2^(n+1) voci
Estensione di controllo grafico 0x01
000Riservato
000Metodo di disposal
0Attendi input dell'utente
1Trasparenza attiva
Descrittore dell'immagine 0x00
0Tabella dei colori locale presente
0Interlacciata
0Palette ordinata per importanza
00Riservato
000Dimensione della tabella locale

Come due byte contengono un pixel

Con una dimensione minima del codice di 2, il decoder legge codici da 3 bit. Il codice 4 azzera la tabella, il codice 5 termina l'immagine e i codici da 0 a 3 sono voci della palette. I byte 44 01 si leggono a partire dal bit più basso:

0x44 010001000x01 00000001

  1. 001100 = 4Clear: si riparte da una tabella nuova
  2. 000000 = 0Pixel: voce 0 della palette
  3. 101101 = 5Fine dell'immagine
  4. 0000000 Bit di riempimento inutilizzati

Le immagini più grandi usano lo stesso trucco: ogni nuovo codice rappresenta una sequenza più lunga di un pixel rispetto alla precedente, quindi una GIF trasparente 1000×1000 occupa solo 1743 byte.

Può essere più piccola?

Sì, se togli parti di cui i decoder tollerano l'assenza. Abbiamo dato ogni variante in pasto a tre motori di browser e a Pillow, e registrato cosa hanno disegnato.

DimensioneVarianteChromiumFirefoxWebKitPillow
43Il file standard di questa pagina.TrasparenteTrasparenteTrasparenteTrasparente
42Nessun byte finale. I decoder si fermano comunque alla fine dei dati.TrasparenteTrasparenteTrasparenteTrasparente
37Nessuna palette. Ancora valida: la specifica consente ai decoder di usare una propria palette, e l'indice 0 è comunque trasparente.TrasparenteTrasparenteTrasparenteTrasparente
36Niente palette e niente byte finale.TrasparenteTrasparenteTrasparenteTrasparente
35Nessun blocco di trasparenza: il pixel viene disegnato con il colore 0 della palette, il bianco.BiancoBiancoBiancoBianco
35Il formato del 1987. Non ha modo di rendere trasparente un colore.BiancoBiancoBiancoBianco
34Blocco di trasparenza, ma nessun pixel compresso.TrasparenteTrasparenteTrasparenteErrore
33Lo stesso, senza byte finale.TrasparenteTrasparenteTrasparenteErrore
29Niente palette e niente trasparenza. Ogni motore sceglie il proprio colore.NeroBiancoTrasparenteNero
26Un'immagine senza alcun dato compresso.TrasparenteTrasparenteTrasparenteErrore
14Solo intestazione, dimensioni del canvas e byte finale. Non contiene alcuna immagine.TrasparenteErroreTrasparenteErrore

Usa i 43 byte quando deve funzionare ovunque. Quella da 37 byte è ancora una GIF valida ed è risultata trasparente in tutti i motori che abbiamo testato. Sotto quella soglia dipendi dalla tolleranza del decoder, e il file da 29 byte mostra quanto i motori siano in disaccordo.

Verificato il 23 settembre 2026 con Chromium 153.0.8010.12, Firefox 155.0, WebKit 26.6, Pillow 12.2.0.

Creane una di qualsiasi dimensione

Trasparente o a tinta unita, da 1×1 fino a 65535×65535. Viene generata nel tuo browser; non viene caricato nulla.

Riempimento
Dimensioni comuni

1×1 · 43 byte

Scarica GIF

Servila dal tuo stack

173 snippet pronti all'uso. Scegli il tuo: ognuno risponde sul percorso che scegli con una risposta image/gif. Se sopra hai cambiato dimensione o colore, gli snippet usano quella GIF.

Elixir, Erlang & Gleam

Express JavaScript

Installa
npm i express
File
server.mjs
Esegui
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);

Abbiamo eseguito questo snippet e confrontato i byte che ha restituito. Apri pagina

A cosa serve

  • Pixel di tracciamento e beacon: il server registra la richiesta e risponde con la più piccola immagine valida.
  • Segnaposto per immagini in lazy loading, così il tag img è valido prima che arrivi la sorgente reale.
  • Spaziatori di dimensione fissa nelle email HTML, dove il supporto CSS è frammentario.
  • Test e mock che hanno bisogno di un'immagine reale senza doverne includere una.

I pixel di tracciamento sono meno affidabili di quanto sembri

Apple Mail precarica le immagini remote tramite un proxy quando è attiva la Protezione della privacy di Mail, quindi un'«apertura» potrebbe non essere mai stata una persona. Anche Gmail recupera le immagini tramite un proprio proxy e le mette in cache. Molti client bloccano le immagini remote per impostazione predefinita. Per l'analisi delle pagine, navigator.sendBeacon() o una risposta 204 No Content sono spesso più adatti di un'immagine.

Domande frequenti

Perché si chiama vuota se ha un pixel?
Una GIF deve avere almeno un pixel. Questa è 1×1 e il suo unico colore è marcato come trasparente, quindi non si vede nulla.
Il file da 43 byte è valido?
Sì. Segue esattamente la specifica GIF89a, e tutti i motori nella tabella qui sopra lo disegnano trasparente.
Perché una GIF e non un PNG o un WebP?
È più piccola di un PNG trasparente minimo, e qualsiasi browser, client email o libreria di immagini degli ultimi 35 anni è in grado di leggerla.
Meglio un data URI o un file?
Un data URI risparmia una richiesta ed è adatto a segnaposto e CSS. Serve un file o un endpoint quando lo scopo è proprio la richiesta, come per i pixel di tracciamento.
Quale Content-Type devo inviare?
image/gif. Aggiungi Cache-Control: no-store se ogni richiesta deve arrivare al tuo server.