emptygif
语言: 简体中文

最小的透明 GIF 只有 43 字节。

这就是它的全部。点选任意字节查看它的作用,然后复制文件、下载、外链,或用你自己的代码来提供它。

放大后的 43 字节 GIF:一个透明像素
0000
0010
0020
下载 1×1.gif

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

检查你自己的 GIF

每个字节的作用

GIF 由一系列块组成。这个文件有七个块,本页的每种颜色都对应其中一个。选择一个字节或块即可查看说明。 数值以小端序存储:低字节在前,所以 01 00 表示 1。

字节字段含义
文件头 告诉解码器这是一个 GIF,以及应按哪个格式版本来解析。
47 49 46签名ASCII 字母“GIF”。每个 GIF 文件都以它们开头。
38 39 61版本“89a”。透明需要 89a;87a 没有图形控制扩展。
逻辑屏幕描述符 画布的尺寸,以及颜色表的设置方式。
01 00画布宽度1 像素。
01 00画布高度1 像素。
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 像素处开始。
00 00上偏移图像从距画布上边缘 0 像素处开始。
01 00图像宽度1 像素。
01 00图像高度1 像素。
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 字节的文件就展示了各引擎之间的分歧。

于 2026年9月23日 使用 Chromium 153.0.8010.12, Firefox 155.0, WebKit 26.6, Pillow 12.2.0 测试。

同一个像素,换成其他格式

我们为每种格式做出了能做到的最小透明 1×1 文件,并交给同样的四个引擎。展开一行即可查看它的字节,颜色与承担相同作用的 GIF 块一致。

大小文件data URIChromiumFirefoxWebKitPillow
28
WebP 同上,但去掉了两个填充字节。WebKit 会拒绝小于 30 字节的 WebP 文件。
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
  • RIFF … WEBP 容器 12
  • VP8L chunk 容器 8
  • 0x2F 签名 1
  • width, height, alpha 尺寸 4
  • prefix codes 像素 3
63透明透明错误透明
30
WebP 无损 VP8L。每个前缀码只含一个符号,所以像素不占任何位,文件大小在 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
  • RIFF … WEBP 容器 12
  • VP8L chunk 容器 8
  • 0x2F 签名 1
  • width, height, alpha 尺寸 4
  • prefix codes 像素 3
  • padding 填充 2
63透明透明透明透明
43
GIF 本页顶部的 43 字节 GIF。
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
  • 文件头 6
  • 逻辑屏幕描述符 7
  • 全局颜色表 6
  • 图形控制扩展 8
  • 图像描述符 10
  • 图像数据 5
  • 文件尾 1
82透明透明透明透明
58
BMP 经典的 40 字节文件头没有 alpha 掩码,所以第四个字节被忽略,像素在所有引擎中都是黑色。
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
  • BITMAPFILEHEADER 签名 14
  • BITMAPINFOHEADER 尺寸 40
  • BGRA 像素 4
102黑色黑色黑色黑色
62
SVG 只带宽度和高度的空 svg 元素。Pillow 不能读取 SVG。
<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"/>
  • <svg xmlns> 签名 39
  • width, height 尺寸 21
  • /> 结尾 2
85透明透明透明错误
67
PNG 带 alpha 的真彩色。唯一一条全零扫描线是手工压缩的,比 zlib 最高压缩设置还短 1 字节。
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
  • PNG signature 签名 8
  • IHDR 尺寸 25
  • IDAT 像素 22
  • IEND 结尾 12
114透明透明透明透明
70
ICO 包含一张 32 位位图及其 1 位 AND 掩码的网站图标。
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
  • ICONDIR 签名 6
  • ICONDIRENTRY 尺寸 16
  • BITMAPINFOHEADER 尺寸 40
  • BGRA 像素 4
  • AND mask 透明 4
121透明透明透明透明
74
BMP 带 alpha 掩码的 56 字节文件头。WebKit 无法加载。
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
  • BITMAPFILEHEADER 签名 14
  • BITMAPV3INFOHEADER 尺寸 56
  • BGRA 像素 4
122透明透明错误透明
89
ICO 包含那张 67 字节 PNG 的网站图标。
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
  • ICONDIR 签名 6
  • ICONDIRENTRY 尺寸 16
  • PNG signature 签名 8
  • IHDR 尺寸 25
  • IDAT 像素 22
  • IEND 结尾 12
145透明透明透明透明
126
BMP V4 文件头。WebKit 忽略其 alpha 掩码并绘制为黑色。
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
  • BITMAPFILEHEADER 签名 14
  • BITMAPV4INFOHEADER 尺寸 108
  • BGRA 像素 4
190透明透明黑色透明
142
BMP V5 文件头,在 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
  • BITMAPFILEHEADER 签名 14
  • BITMAPV5INFOHEADER 尺寸 124
  • BGRA 像素 4
214透明透明黑色透明
437
AVIF 同上,但使用 4:0:0 色度抽样,去掉了颜色平面。
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
  • ftyp 签名 28
  • meta 元数据 362
  • mdat 像素 47
607透明透明透明透明
471
AVIF libavif 在 quality 100 下的输出:一张用于颜色、一张用于 alpha 的 AV1 图像,装在 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
  • ftyp 签名 32
  • meta 元数据 390
  • mdat 像素 49
651透明透明透明透明

在四个引擎中都显示为透明的最小文件是 WebP,大小 30 字节,比 GIF 少 13 字节。

data URI 的长度(字符数):SVG 为 URL 编码的文本,其余为 base64。 于 2026年9月24日 使用 Chromium 153.0.8010.12, Firefox 155.0, WebKit 26.6, Pillow 12.2.0 测试。AVIF 由 libavif 1.4.1 生成。

生成任意尺寸

透明或纯色,从 1×1 到 65535×65535。在你的浏览器中生成,不会上传任何内容。

填充
格式
常用尺寸

1×1 · 43 字节

下载 GIF

在你的技术栈中提供它

191 个可直接运行的代码片段。选一个适合你的:每个都会在你指定的路径返回 image/gif 响应。如果你在上面修改了尺寸或颜色,代码片段会使用那个 GIF。

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);

我们运行了此代码片段,并比对了它返回的字节。 打开页面

用途

  • 跟踪像素和信标:服务器记录请求,并以最小的合法图像作为响应。
  • 懒加载图片的占位图,让 img 标签在真实图片地址到位之前就是合法的。
  • HTML 邮件中的固定尺寸间隔图,因为邮件里的 CSS 支持参差不齐。
  • 需要真实图片、又不想附带图片文件的测试和 mock。

跟踪像素没有看起来那么可靠

开启“邮件隐私保护”后,Apple Mail 会通过代理预加载远程图片,所以一次“打开”可能根本不是真人。Gmail 也会通过自己的代理获取并缓存图片。许多客户端默认屏蔽远程图片。做页面分析时,navigator.sendBeacon() 或 204 No Content 响应通常比图片更合适。

常见问题

明明有一个像素,为什么叫“空”?
GIF 至少要有一个像素。这个是 1×1,唯一的颜色被标记为透明,所以什么都不显示。
这个 43 字节的文件合法吗?
合法。它完全遵循 GIF89a 规范,上表中的每个引擎都把它绘制为透明。
为什么用 GIF,而不是 PNG 或 WebP?
它比最小的透明 PNG 还小,而且过去 35 年里的所有浏览器、邮件客户端和图像库都能读取它。
应该用 data URI 还是文件?
data URI 能省掉一次请求,适合占位图和 CSS。如果请求本身才是目的(比如跟踪像素),就需要文件或接口。
应该发送哪个 Content-Type?
image/gif。如果每个请求都必须到达你的服务器,再加上 Cache-Control: no-store。