Le plus petit GIF transparent fait 43 octets.
Le voici en entier. Choisissez un octet pour voir son rôle, puis copiez le fichier, téléchargez-le, faites-y un lien direct ou servez-le depuis votre propre code.

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==
Le rôle de chaque octet
Un GIF est une suite de blocs. Celui-ci en compte sept, et chaque couleur de cette page correspond à l’un d’eux. Sélectionnez un octet ou un bloc pour lire sa description. Les nombres sont stockés en little-endian : l’octet de poids faible vient en premier, donc 01 00 signifie 1.
| Octets | Champ | Signification |
|---|---|---|
| En-tête Indique au décodeur qu’il s’agit d’un GIF et quelle version du format attendre. | ||
| 47 49 46 | Signature | Les lettres ASCII « GIF ». Tout fichier GIF commence par elles. |
| 38 39 61 | Version | « 89a ». La version 89a est nécessaire pour la transparence ; 87a n’a pas d’extension de contrôle graphique. |
| Descripteur d’écran logique La taille du canevas et la configuration de sa table des couleurs. | ||
| 01 00 | Largeur du canevas | 1 px. |
| 01 00 | Hauteur du canevas | 1 px. |
| 80 | Indicateurs groupés | Quatre réglages tassés dans un seul octet. Le bit de poids fort indique qu’une table des couleurs globale suit ; les trois derniers bits donnent sa taille. |
| 00 | Index de la couleur de fond | Entrée 0 de la palette. Les navigateurs l’ignorent et affichent ce qui se trouve derrière l’image. |
| 00 | Rapport d’aspect des pixels | 0 signifie des pixels carrés, sans correction. |
| Table des couleurs globale La palette. Les pixels stockent un index dans cette liste plutôt qu’une couleur. | ||
| FF FF FF | Entrée de palette | Rouge, vert et bleu, un octet chacun : #ffffff. Deux entrées, c’est la plus petite table qu’un GIF puisse avoir. |
| 00 00 00 | Entrée de palette | Rouge, vert et bleu, un octet chacun : #000000. Deux entrées, c’est la plus petite table qu’un GIF puisse avoir. |
| Extension de contrôle graphique Bloc facultatif ajouté dans GIF89a. Ici, il rend transparente l’entrée 0 de la palette. | ||
| 21 | Introducteur d’extension | 0x21 (« ! ») annonce un bloc d’extension. |
| F9 | Étiquette de contrôle graphique | 0xF9 indique que cette extension est une extension de contrôle graphique. |
| 04 | Taille du bloc | Suivent 4 octets de réglages. |
| 01 | Indicateurs groupés | Le bit de poids faible est l’indicateur de transparence. Il est activé, donc l’index transparent ci-dessous est utilisé. |
| 00 00 | Délai | 0 centièmes de seconde. Ne compte que pour les animations. |
| 00 | Index de la couleur transparente | L’entrée 0 de la palette est rendue entièrement transparente. |
| 00 | Terminateur de bloc | Un sous-bloc de longueur nulle qui ferme le bloc. |
| Descripteur d’image La position de l’image sur le canevas et sa taille. | ||
| 2C | Séparateur d’image | 0x2C (« , ») commence une image. |
| 00 00 | Gauche | L’image commence à 0 px du bord gauche du canevas. |
| 00 00 | Haut | L’image commence à 0 px du bord supérieur du canevas. |
| 01 00 | Largeur de l’image | 1 px. |
| 01 00 | Hauteur de l’image | 1 px. |
| 00 | Indicateurs groupés | Pas de table des couleurs locale, pas d’entrelacement. L’image utilise la palette globale. |
| Données d’image Les pixels, compressés en LZW et découpés en sous-blocs de 255 octets au maximum. | ||
| 02 | Taille minimale de code LZW | 2, donc les codes compressés commencent sur 3 bits. |
| 02 | Taille du sous-bloc | Suivent 2 octets de données compressées. |
| 44 01 | Pixels compressés | Codes LZW empaquetés à partir du bit de poids faible. Voyez plus bas comment ils se décodent. |
| 00 | Terminateur de bloc | Un sous-bloc de longueur nulle qui ferme le bloc. |
| Marqueur de fin Un octet qui marque la fin du fichier. | ||
| 3B | Marqueur de fin | 0x3B (« ; ») termine le fichier. |
À l’intérieur des octets groupés
Chacun de ces trois octets stocke plusieurs petits réglages. Le bit 7 est le plus à gauche.
0x800x010x00Comment deux octets contiennent un pixel
Avec une taille minimale de code de 2, le décodeur lit des codes de 3 bits. Le code 4 réinitialise la table, le code 5 termine l’image, et les codes 0 à 3 sont des entrées de la palette. Les octets 44 01 se lisent à partir du bit de poids faible :
0x44 010001000x01 00000001
- 001100 = 4Réinitialisation : repartir d’une table vierge
- 000000 = 0Pixel : entrée 0 de la palette
- 101101 = 5Fin de l’image
- 0000000 Bits de remplissage inutilisés
Les images plus grandes utilisent la même astuce : chaque nouveau code représente une suite plus longue d’un pixel que la précédente, si bien qu’un GIF transparent de 1000×1000 ne pèse que 1 743 octets.
Peut-il être plus petit ?
Oui, si vous supprimez des parties dont les décodeurs tolèrent l’absence. Nous avons soumis chaque variante à trois moteurs de navigateur et à Pillow, et noté ce qu’ils ont affiché.
| Taille | Variante | Chromium | Firefox | WebKit | Pillow |
|---|---|---|---|---|---|
| 43 | Le fichier standard de cette page. | Transparent | Transparent | Transparent | Transparent |
| 42 | Pas d’octet de fin. Les décodeurs s’arrêtent de toute façon à la fin des données. | Transparent | Transparent | Transparent | Transparent |
| 37 | Aucune palette. Toujours valide : la spécification autorise les décodeurs à utiliser leur propre palette, et l’index 0 est transparent de toute façon. | Transparent | Transparent | Transparent | Transparent |
| 36 | Ni palette ni octet de fin. | Transparent | Transparent | Transparent | Transparent |
| 35 | Pas de bloc de transparence : le pixel est dessiné avec la couleur 0 de la palette, du blanc. | Blanc | Blanc | Blanc | Blanc |
| 35 | Le format de 1987. Il ne permet pas de marquer une couleur comme transparente. | Blanc | Blanc | Blanc | Blanc |
| 34 | Bloc de transparence, mais aucun pixel compressé. | Transparent | Transparent | Transparent | Erreur |
| 33 | Pareil, sans l’octet de fin. | Transparent | Transparent | Transparent | Erreur |
| 29 | Ni palette ni transparence. Chaque moteur choisit sa propre couleur. | Noir | Blanc | Transparent | Noir |
| 26 | Une image sans aucune donnée compressée. | Transparent | Transparent | Transparent | Erreur |
| 14 | Seulement l’en-tête, la taille du canevas et l’octet de fin. Il ne contient aucune image. | Transparent | Erreur | Transparent | Erreur |
Utilisez 43 octets quand cela doit fonctionner partout. Le fichier de 37 octets reste un GIF valide et s’est affiché transparent dans tous les moteurs testés. En dessous, vous dépendez de la tolérance du décodeur, et le fichier de 29 octets montre à quel point les moteurs divergent.
Vérifié le 23 septembre 2026 avec Chromium 153.0.8010.12, Firefox 155.0, WebKit 26.6, Pillow 12.2.0.
Le même pixel dans d’autres formats
Le plus petit fichier transparent 1×1 que nous avons pu construire dans chaque format, soumis aux quatre mêmes moteurs. Ouvrez une ligne pour voir ses octets, colorés comme les blocs GIF qui jouent le même rôle.
| Taille | Fichier | Data URI | Chromium | Firefox | WebKit | Pillow |
|---|---|---|---|---|---|---|
| 28 | WebP Le même sans deux octets de bourrage. WebKit refuse les fichiers WebP de moins de 30 octets.52 49 46 46 14 00 00 00 57 45 42 50 56 50 38 4c 08 00 00 00 2f 00 00 00 10 88 88 08
| 63 | Transparent | Transparent | Erreur | Transparent |
| 30 | WebP VP8L sans perte. Chaque code préfixe ne contient qu’un seul symbole, les pixels ne coûtent donc aucun bit et le fichier garde cette taille jusqu’à 16384×16384.52 49 46 46 16 00 00 00 57 45 42 50 56 50 38 4c 0a 00 00 00 2f 00 00 00 10 88 88 08 00 00
| 63 | Transparent | Transparent | Transparent | Transparent |
| 43 | GIF Le GIF de 43 octets présenté en haut de cette page.47 49 46 38 39 61 01 00 01 00 80 00 00 ff ff ff 00 00 00 21 f9 04 01 00 00 00 00 2c 00 00 00 00 01 00 01 00 00 02 02 44 01 00 3b
| 82 | Transparent | Transparent | Transparent | Transparent |
| 58 | BMP L’en-tête classique de 40 octets n’a pas de masque alpha : le quatrième octet est ignoré et le pixel est noir partout.42 4d 3a 00 00 00 00 00 00 00 36 00 00 00 28 00 00 00 01 00 00 00 01 00 00 00 01 00 20 00 00 00 00 00 04 00 00 00 13 0b 00 00 13 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00
| 102 | Noir | Noir | Noir | Noir |
| 62 | SVG Un élément | 85 | Transparent | Transparent | Transparent | Erreur |
| 67 | PNG Couleurs vraies avec alpha. L’unique ligne de zéros est compressée à la main, un octet plus court que zlib à son meilleur réglage.89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 01 00 00 00 01 08 06 00 00 00 1f 15 c4 89 00 00 00 0a 49 44 41 54 78 01 63 00 01 00 00 05 00 01 36 d0 88 dd 00 00 00 00 49 45 4e 44 ae 42 60 82
| 114 | Transparent | Transparent | Transparent | Transparent |
| 70 | ICO Un favicon contenant un bitmap 32 bits et son masque AND de 1 bit.00 00 01 00 01 00 01 01 00 00 01 00 20 00 30 00 00 00 16 00 00 00 28 00 00 00 01 00 00 00 02 00 00 00 01 00 20 00 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
| 121 | Transparent | Transparent | Transparent | Transparent |
| 74 | BMP Un en-tête de 56 octets avec un masque alpha. WebKit ne le charge pas.42 4d 4a 00 00 00 00 00 00 00 46 00 00 00 38 00 00 00 01 00 00 00 01 00 00 00 01 00 20 00 03 00 00 00 04 00 00 00 13 0b 00 00 13 0b 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 00 ff 00 00 ff 00 00 00 00 00 00 ff 00 00 00 00
| 122 | Transparent | Transparent | Erreur | Transparent |
| 89 | ICO Un favicon contenant le PNG de 67 octets.00 00 01 00 01 00 01 01 00 00 01 00 20 00 43 00 00 00 16 00 00 00 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 01 00 00 00 01 08 06 00 00 00 1f 15 c4 89 00 00 00 0a 49 44 41 54 78 01 63 00 01 00 00 05 00 01 36 d0 88 dd 00 00 00 00 49 45 4e 44 ae 42 60 82
| 145 | Transparent | Transparent | Transparent | Transparent |
| 126 | BMP L’en-tête V4. WebKit ignore son masque alpha et affiche du noir.42 4d 7e 00 00 00 00 00 00 00 7a 00 00 00 6c 00 00 00 01 00 00 00 01 00 00 00 01 00 20 00 03 00 00 00 04 00 00 00 13 0b 00 00 13 0b 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 00 ff 00 00 ff 00 00 00 00 00 00 ff 42 47 52 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
| 190 | Transparent | Transparent | Noir | Transparent |
| 142 | BMP L’en-tête V5, avec le même résultat dans WebKit.42 4d 8e 00 00 00 00 00 00 00 8a 00 00 00 7c 00 00 00 01 00 00 00 01 00 00 00 01 00 20 00 03 00 00 00 04 00 00 00 13 0b 00 00 13 0b 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 00 ff 00 00 ff 00 00 00 00 00 00 ff 42 47 52 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
| 214 | Transparent | Transparent | Noir | Transparent |
| 437 | AVIF Le même avec un sous-échantillonnage 4:0:0, qui supprime les plans de couleur.00 00 00 1c 66 74 79 70 61 76 69 66 00 00 00 00 61 76 69 66 6d 69 66 31 6d 69 61 66 00 00 01 6a 6d 65 74 61 00 00 00 00 00 00 00 21 68 64 6c 72 00 00 00 00 00 00 00 00 70 69 63 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0e 70 69 74 6d 00 00 00 00 00 01 00 00 00 2c 69 6c 6f 63 00 00 00 00 44 00 00 02 00 01 00 00 00 01 00 00 01 a0 00 00 00 15 00 02 00 00 00 01 00 00 01 8e 00 00 00 12 00 00 00 42 69 69 6e 66 00 00 00 00 00 02 00 00 00 1a 69 6e 66 65 02 00 00 00 00 01 00 00 61 76 30 31 43 6f 6c 6f 72 00 00 00 00 1a 69 6e 66 65 02 00 00 00 00 02 00 00 61 76 30 31 41 6c 70 68 61 00 00 00 00 1a 69 72 65 66 00 00 00 00 00 00 00 0e 61 75 78 6c 00 02 00 01 00 01 00 00 00 a7 69 70 72 70 00 00 00 81 69 70 63 6f 00 00 00 14 69 73 70 65 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 0e 70 69 78 69 00 00 00 00 01 08 00 00 00 0c 61 76 31 43 81 00 1c 00 00 00 00 13 63 6f 6c 72 6e 63 6c 78 00 01 00 0d 00 06 80 00 00 00 38 61 75 78 43 00 00 00 00 75 72 6e 3a 6d 70 65 67 3a 6d 70 65 67 42 3a 63 69 63 70 3a 73 79 73 74 65 6d 73 3a 61 75 78 69 6c 69 61 72 79 3a 61 6c 70 68 61 00 00 00 00 1e 69 70 6d 61 00 00 00 00 00 00 00 02 00 01 04 01 02 83 04 00 02 04 01 02 83 05 00 00 00 2f 6d 64 61 74 12 00 0a 04 18 00 06 15 32 08 10 00 00 18 e1 42 72 10 12 00 0a 07 18 00 06 18 08 68 35 32 08 10 00 00 18 e1 42 72 10
| 607 | Transparent | Transparent | Transparent | Transparent |
| 471 | AVIF Ce qu’écrit libavif en qualité 100 : une image AV1 pour la couleur et une pour l’alpha, dans des boîtes ISO BMFF.00 00 00 20 66 74 79 70 61 76 69 66 00 00 00 00 61 76 69 66 6d 69 66 31 6d 69 61 66 4d 41 31 42 00 00 01 86 6d 65 74 61 00 00 00 00 00 00 00 21 68 64 6c 72 00 00 00 00 00 00 00 00 70 69 63 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0e 70 69 74 6d 00 00 00 00 00 01 00 00 00 2c 69 6c 6f 63 00 00 00 00 44 00 00 02 00 01 00 00 00 01 00 00 01 c0 00 00 00 17 00 02 00 00 00 01 00 00 01 ae 00 00 00 12 00 00 00 42 69 69 6e 66 00 00 00 00 00 02 00 00 00 1a 69 6e 66 65 02 00 00 00 00 01 00 00 61 76 30 31 43 6f 6c 6f 72 00 00 00 00 1a 69 6e 66 65 02 00 00 00 00 02 00 00 61 76 30 31 41 6c 70 68 61 00 00 00 00 1a 69 72 65 66 00 00 00 00 00 00 00 0e 61 75 78 6c 00 02 00 01 00 01 00 00 00 c3 69 70 72 70 00 00 00 9d 69 70 63 6f 00 00 00 14 69 73 70 65 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 10 70 69 78 69 00 00 00 00 03 08 08 08 00 00 00 0c 61 76 31 43 81 00 0c 00 00 00 00 13 63 6f 6c 72 6e 63 6c 78 00 01 00 0d 00 06 80 00 00 00 0e 70 69 78 69 00 00 00 00 01 08 00 00 00 0c 61 76 31 43 81 00 1c 00 00 00 00 38 61 75 78 43 00 00 00 00 75 72 6e 3a 6d 70 65 67 3a 6d 70 65 67 42 3a 63 69 63 70 3a 73 79 73 74 65 6d 73 3a 61 75 78 69 6c 69 61 72 79 3a 61 6c 70 68 61 00 00 00 00 1e 69 70 6d 61 00 00 00 00 00 00 00 02 00 01 04 01 02 83 04 00 02 04 01 05 86 07 00 00 00 31 6d 64 61 74 12 00 0a 04 18 00 06 15 32 08 10 00 00 18 e1 42 72 10 12 00 0a 08 18 00 06 08 08 68 34 20 32 09 10 00 00 00 07 c8 24 c6 62
| 651 | Transparent | Transparent | Transparent | Transparent |
- Signature
- Taille
- Palette
- Transparence
- Conteneur
- Pixels
- Fin
- Métadonnées
- Bourrage
Avec 30 octets, WebP est le plus petit fichier resté transparent dans les quatre moteurs : 13 octets de moins que le GIF.
Longueur de la data URI en caractères : SVG en texte encodé pour URL, les autres en base64. Vérifié le 24 septembre 2026 avec Chromium 153.0.8010.12, Firefox 155.0, WebKit 26.6, Pillow 12.2.0. AVIF écrit par libavif 1.4.1.
Générez-en un de n’importe quelle taille
Transparent ou d’une couleur unie, de 1×1 à 65535×65535. Il est généré dans votre navigateur ; rien n’est envoyé.
Lien direct
Faites un lien direct vers ces fichiers depuis n’importe quel site, e-mail ou application. Ils sont servis depuis l’edge de Cloudflare avec de longues durées de cache, et CORS est ouvert à tous.
- Le fichier de 43 octets
https://emptygif.com/1x1.gif - Toute taille, transparent
https://emptygif.com/px/300x250.gif - Toute taille, couleur unie
https://emptygif.com/px/300x250/ff5a1f.gif - Le même en PNG, WebP ou SVG
https://emptygif.com/px/300x250.webp - API JSON : taille, base64 et data URI
https://emptygif.com/api/gif?w=300&h=250 - Tous les extraits en JSON
https://emptygif.com/snippets.json - Résumé pour les agents IA
https://emptygif.com/llms.txt
En-têtes de réponse
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: *Exemple
<img src="https://emptygif.com/1x1.gif" width="1" height="1" alt="">
Les tailles générées vont jusqu’à 4096 px par côté. Si vous avez beaucoup de trafic, merci de télécharger le fichier et de l’héberger vous-même.
Servez-le depuis votre stack
191 extraits prêts à l’emploi. Choisissez le vôtre : chacun répond sur le chemin de votre choix avec une réponse image/gif. Si vous avez changé la taille ou la couleur plus haut, les extraits utilisent ce GIF.
JavaScript & TypeScript
- Next.js (App Router)
- Hono
- Bun.serve
- Elysia
- Deno.serve
- SvelteKit
- Nuxt (Nitro server route)
- Astro
- React Router (framework mode, ex-Remix)
- TanStack Start
- SolidStart
- Hono on Bun
- Hono on Deno
- srvx (universal fetch server)
- Qwik City
- RedwoodSDK
- Angular SSR (Express server.ts)
- Fresh
- Oak
- Encore.ts
- NestJS
- Fastify
- Express
- Node.js standard library (node:http)
- Koa
- hapi
- AdonisJS
Edge & serverless
- Cloudflare Workers
- Cloudflare Workers (Rust, workers-rs)
- Cloudflare Pages Functions
- Spin (Rust, WASI HTTP component)
- 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
Go
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);
Nous avons exécuté cet extrait et comparé les octets qu’il a renvoyés. Ouvrir la page
À quoi il sert
- Pixels de suivi et beacons : le serveur journalise la requête et répond avec la plus petite image valide.
- Espaces réservés pour les images en lazy loading, afin que la balise
imgsoit valide avant l’arrivée de la vraie source. - Espaceurs de taille fixe dans les e-mails HTML, où la prise en charge de CSS est inégale.
- Tests et mocks qui ont besoin d’une vraie image sans en embarquer une.
Les pixels de suivi sont moins fiables qu’il n’y paraît
Apple Mail précharge les images distantes via un proxy quand la Protection de la confidentialité dans Mail est activée : une « ouverture » n’a donc peut-être jamais été le fait d’une personne. Gmail récupère lui aussi les images via son propre proxy et les met en cache. De nombreux clients bloquent les images distantes par défaut. Pour l’analytique de pages, navigator.sendBeacon() ou une réponse 204 No Content conviennent souvent mieux qu’une image.
Questions fréquentes
- Pourquoi « vide » alors qu’il contient un pixel ?
- Un GIF doit contenir au moins un pixel. Celui-ci fait 1×1 et son unique couleur est marquée transparente, donc rien ne s’affiche.
- Le fichier de 43 octets est-il valide ?
- Oui. Il suit exactement la spécification GIF89a, et tous les moteurs du tableau ci-dessus l’affichent transparent.
- Pourquoi un GIF et pas un PNG ou un WebP ?
- Il est plus petit qu’un PNG transparent minimal, et tous les navigateurs, clients e-mail et bibliothèques d’images des 35 dernières années savent le lire.
- Faut-il utiliser une data URI ou un fichier ?
- Une data URI économise une requête et convient aux placeholders et au CSS. Un fichier ou un endpoint est nécessaire quand c’est la requête elle-même qui compte, comme pour les pixels de suivi.
- Quel Content-Type envoyer ?
image/gif. AjoutezCache-Control: no-storesi chaque requête doit atteindre votre serveur.