emptygif
Idioma: Español

El GIF transparente más pequeño ocupa 43 bytes.

Esto es todo. Elige cualquier byte para ver qué hace y luego copia el archivo, descárgalo, enlázalo directamente o sírvelo desde tu propio código.

El GIF de 43 bytes, ampliado: un píxel transparente
0000
0010
0020
Descargar 1×1.gif

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

Qué hace cada byte

Un GIF es una secuencia de bloques. Este tiene siete, y cada color de esta página corresponde a uno de ellos. Selecciona un byte o un bloque para leer su descripción. Los números se guardan en little-endian: el byte menos significativo va primero, así que 01 00 significa 1.

BytesCampoSignificado
Cabecera Indica al decodificador que es un GIF y qué versión del formato debe esperar.
47 49 46FirmaLas letras ASCII «GIF». Todo archivo GIF empieza con ellas.
38 39 61Versión«89a». La transparencia requiere 89a; 87a no tiene extensión de control gráfico.
Descriptor de pantalla lógica El tamaño del lienzo y cómo está configurada su tabla de colores.
01 00Ancho del lienzo1 px.
01 00Alto del lienzo1 px.
80Indicadores empaquetadosCuatro ajustes metidos en un solo byte. El bit más alto indica que sigue una tabla de colores global; los tres últimos bits dan su tamaño.
00Índice del color de fondoEntrada 0 de la paleta. Los navegadores la ignoran y muestran lo que hay detrás de la imagen.
00Relación de aspecto del píxel0 significa píxeles cuadrados, sin corrección.
Tabla de colores global La paleta. Los píxeles guardan un índice de esta lista en lugar de un color.
FF FF FFEntrada de la paletaRojo, verde y azul, un byte cada uno: #ffffff. Dos entradas es la tabla más pequeña que puede tener un GIF.
00 00 00Entrada de la paletaRojo, verde y azul, un byte cada uno: #000000. Dos entradas es la tabla más pequeña que puede tener un GIF.
Extensión de control gráfico Bloque opcional añadido en GIF89a. Aquí hace transparente la entrada 0 de la paleta.
21Introductor de extensión0x21 («!») anuncia un bloque de extensión.
F9Etiqueta de control gráfico0xF9 indica que esta extensión es una extensión de control gráfico.
04Tamaño del bloqueSiguen 4 bytes de ajustes.
01Indicadores empaquetadosEl bit más bajo es el indicador de transparencia. Está activado, así que se usa el índice transparente de abajo.
00 00Retardo0 centésimas de segundo. Solo importa en animaciones.
00Índice del color transparenteLa entrada 0 de la paleta se dibuja totalmente transparente.
00Terminador de bloqueUn subbloque de longitud cero que cierra el bloque.
Descriptor de imagen Dónde se sitúa la imagen en el lienzo y qué tamaño tiene.
2CSeparador de imagen0x2C («,») inicia una imagen.
00 00IzquierdaLa imagen empieza a 0 px del borde izquierdo del lienzo.
00 00ArribaLa imagen empieza a 0 px del borde superior del lienzo.
01 00Ancho de la imagen1 px.
01 00Alto de la imagen1 px.
00Indicadores empaquetadosSin tabla de colores local, sin entrelazado. La imagen usa la paleta global.
Datos de imagen Los píxeles, comprimidos con LZW y divididos en subbloques de hasta 255 bytes.
02Tamaño mínimo de código LZW2, así que los códigos comprimidos empiezan con 3 bits de ancho.
02Tamaño del subbloqueSiguen 2 bytes de datos comprimidos.
44 01Píxeles comprimidosCódigos LZW empaquetados desde el bit más bajo. Más abajo puedes ver cómo se decodifican.
00Terminador de bloqueUn subbloque de longitud cero que cierra el bloque.
Marca de fin Un byte que marca el final del archivo.
3BMarca de fin0x3B («;») termina el archivo.

Dentro de los bytes empaquetados

Cada uno de estos tres bytes guarda varios ajustes pequeños. El bit 7 es el de más a la izquierda.

Descriptor de pantalla lógica 0x80
1Hay tabla de colores global
000Resolución de color
0Paleta ordenada por importancia
000Tamaño de la tabla: 2^(n+1) entradas
Extensión de control gráfico 0x01
000Reservado
000Método de eliminación
0Esperar entrada del usuario
1Transparencia activada
Descriptor de imagen 0x00
0Hay tabla de colores local
0Entrelazado
0Paleta ordenada por importancia
00Reservado
000Tamaño de la tabla local

Cómo dos bytes contienen un píxel

Con un tamaño mínimo de código de 2, el decodificador lee códigos de 3 bits. El código 4 borra la tabla, el código 5 termina la imagen y los códigos 0 a 3 son entradas de la paleta. Los bytes 44 01 se leen desde el bit más bajo:

0x44 010001000x01 00000001

  1. 001100 = 4Borrado: empezar con una tabla nueva
  2. 000000 = 0Píxel: entrada 0 de la paleta
  3. 101101 = 5Fin de la imagen
  4. 0000000 Bits de relleno sin usar

Las imágenes más grandes usan el mismo truco: cada código nuevo representa una racha un píxel más larga que la anterior, así que un GIF transparente de 1000×1000 ocupa solo 1743 bytes.

¿Puede ser más pequeño?

Sí, si quitas partes cuya ausencia toleran los decodificadores. Pasamos cada variante por tres motores de navegador y por Pillow, y anotamos lo que dibujaron.

TamañoVarianteChromiumFirefoxWebKitPillow
43El archivo estándar de esta página.TransparenteTransparenteTransparenteTransparente
42Sin byte final. De todos modos, los decodificadores se detienen al final de los datos.TransparenteTransparenteTransparenteTransparente
37Sin paleta. Sigue siendo válido: la especificación permite que los decodificadores usen su propia paleta, y el índice 0 es transparente de todos modos.TransparenteTransparenteTransparenteTransparente
36Sin paleta ni byte final.TransparenteTransparenteTransparenteTransparente
35Sin bloque de transparencia: el píxel se dibuja con el color 0 de la paleta, blanco.BlancoBlancoBlancoBlanco
35El formato de 1987. No tiene forma de marcar un color como transparente.BlancoBlancoBlancoBlanco
34Bloque de transparencia, pero sin píxeles comprimidos.TransparenteTransparenteTransparenteError
33Lo mismo, sin el byte final.TransparenteTransparenteTransparenteError
29Sin paleta y sin transparencia. Cada motor elige su propio color.NegroBlancoTransparenteNegro
26Una imagen sin ningún dato comprimido.TransparenteTransparenteTransparenteError
14Solo cabecera, tamaño del lienzo y byte final. No contiene ninguna imagen.TransparenteErrorTransparenteError

Usa 43 bytes cuando tenga que funcionar en todas partes. 37 bytes sigue siendo un GIF válido y fue transparente en todos los motores que probamos. Por debajo de eso dependes de la tolerancia del decodificador, y el archivo de 29 bytes muestra cómo discrepan los motores.

Comprobado el 23 de septiembre de 2026 con Chromium 153.0.8010.12, Firefox 155.0, WebKit 26.6, Pillow 12.2.0.

Crea uno de cualquier tamaño

Transparente o de un color sólido, desde 1×1 hasta 65535×65535. Se genera en tu navegador; no se sube nada.

Relleno
Tamaños habituales

1×1 · 43 bytes

Descargar GIF

Sírvelo desde tu stack

173 fragmentos listos para ejecutar. Elige el tuyo: cada uno responde en la ruta que elijas con una respuesta image/gif. Si cambiaste el tamaño o el color arriba, los fragmentos usan ese GIF.

Elixir, Erlang & Gleam

Express JavaScript

Instalar
npm i express
Archivo
server.mjs
Ejecutar
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);

Ejecutamos este fragmento y comparamos los bytes que devolvió. Abrir página

Para qué se usa

  • Píxeles de seguimiento y beacons: el servidor registra la petición y responde con la imagen válida más pequeña.
  • Marcadores de posición para imágenes con carga diferida, para que la etiqueta img sea válida antes de que llegue la fuente real.
  • Espaciadores de tamaño fijo en correos HTML, donde el soporte de CSS es irregular.
  • Tests y mocks que necesitan una imagen real sin tener que incluir una.

Los píxeles de seguimiento son menos fiables de lo que parecen

Apple Mail precarga las imágenes remotas a través de un proxy cuando la Protección de privacidad de Mail está activada, así que una «apertura» puede no haber sido nunca una persona. Gmail también descarga las imágenes a través de su propio proxy y las guarda en caché. Muchos clientes bloquean las imágenes remotas por defecto. Para analítica de páginas, navigator.sendBeacon() o una respuesta 204 No Content suelen encajar mejor que una imagen.

Preguntas frecuentes

¿Por qué se llama vacío si tiene un píxel?
Un GIF debe tener al menos un píxel. Este es de 1×1 y su único color está marcado como transparente, así que no se ve nada.
¿Es válido el archivo de 43 bytes?
Sí. Sigue exactamente la especificación GIF89a, y todos los motores de la tabla de arriba lo dibujan transparente.
¿Por qué un GIF y no un PNG o un WebP?
Es más pequeño que un PNG transparente mínimo, y cualquier navegador, cliente de correo o biblioteca de imágenes de los últimos 35 años puede leerlo.
¿Uso un data URI o un archivo?
Un data URI ahorra una petición y va bien para placeholders y CSS. Hace falta un archivo o un endpoint cuando lo que importa es la propia petición, como en los píxeles de seguimiento.
¿Qué Content-Type debo enviar?
image/gif. Añade Cache-Control: no-store si cada petición tiene que llegar a tu servidor.