emptygif
言語: 日本語

最小の透明 GIF は 43 バイトです。

これで全部です。バイトを選ぶとその役割が表示されます。ファイルをコピー、ダウンロード、直リンクしたり、自分のコードから配信したりできます。

43 バイトの GIF を拡大表示:透明なピクセルが 1 つ
0000
0010
0020
1×1.gif をダウンロード

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

自分の GIF を解析する

各バイトの役割

GIF はブロックの並びでできています。このファイルには 7 つのブロックがあり、このページの色はそれぞれどれかのブロックに対応しています。バイトやブロックを選ぶと説明が表示されます。 数値はリトルエンディアンで格納されます。下位バイトが先に来るので、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パックフラグ4 つの設定を 1 バイトに詰め込んでいます。最上位ビットはグローバルカラーテーブルが続くことを示し、下位 3 ビットがそのサイズを表します。
00背景色インデックスパレットの 0 番。ブラウザーはこれを無視し、画像の背後にあるものを表示します。
00ピクセルアスペクト比0 は正方形のピクセルで、補正なしを意味します。
グローバルカラーテーブル パレットです。ピクセルは色そのものではなく、このリストへのインデックスを持ちます。
FF FF FFパレットエントリ赤・緑・青が 1 バイトずつ:#ffffff。GIF のテーブルは最小でも 2 エントリです。
00 00 00パレットエントリ赤・緑・青が 1 バイトずつ:#000000。GIF のテーブルは最小でも 2 エントリです。
グラフィック制御拡張 GIF89a で追加された任意のブロック。ここではパレットの 0 番を透明にしています。
21拡張導入子0x21(「!」)は拡張ブロックの開始を示します。
F9グラフィック制御ラベル0xF9 は、この拡張がグラフィック制御拡張であることを示します。
04ブロックサイズこの後に 4 バイトの設定が続きます。
01パックフラグ最下位ビットが透明フラグです。オンなので、下の透明色インデックスが使われます。
00 00遅延時間0 × 1/100 秒。アニメーションでのみ意味があります。
00透明色インデックスパレットの 0 番は完全に透明として描画されます。
00ブロック終端子ブロックを閉じる長さ 0 のサブブロック。
イメージ記述子 キャンバス上の画像の位置とサイズ。
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ブロック終端子ブロックを閉じる長さ 0 のサブブロック。
トレーラー ファイルの終わりを示す 1 バイト。
3Bトレーラー0x3B(「;」)でファイルが終わります。

パックされたバイトの中身

3 つのバイトには、それぞれ小さな設定が複数入っています。ビット 7 が一番左です。

論理画面記述子 0x80
1グローバルカラーテーブルあり
000色解像度
0パレットを重要度順にソート
000テーブルサイズ:2^(n+1) エントリ
グラフィック制御拡張 0x01
000予約
000破棄方法
0ユーザー入力を待つ
1透明を有効化
イメージ記述子 0x00
0ローカルカラーテーブルあり
0インターレース
0パレットを重要度順にソート
00予約
000ローカルテーブルサイズ

2 バイトで 1 ピクセルを表す仕組み

最小コードサイズが 2 の場合、デコーダーは 3 ビットのコードを読みます。コード 4 はテーブルをクリアし、コード 5 は画像を終了し、コード 0〜3 はパレットのエントリです。バイト 44 01 は最下位ビットから順に読みます:

0x44 010001000x01 00000001

  1. 001100 = 4クリア:新しいテーブルで開始
  2. 000000 = 0ピクセル:パレットの 0 番
  3. 101101 = 5画像の終わり
  4. 0000000 未使用のパディングビット

大きな画像も同じ仕組みです。新しいコードはそれぞれ直前より 1 ピクセル長い連続を表すので、1000×1000 の透明 GIF でもわずか 1,743 バイトで済みます。

もっと小さくできる?

できます。デコーダーがなくても許容する部分を削れば小さくなります。各バリアントを 3 つのブラウザーエンジンと 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 ファイルを、同じ 4 つのエンジンに読み込ませました。行を開くとバイト列が表示され、同じ役割を持つ GIF ブロックと同じ色で塗り分けられています。

サイズファイルdata URIChromiumFirefoxWebKitPillow
28
WebP 上と同じで、パディングの 2 バイトを除いたもの。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。すべてのプレフィックス符号が 1 つのシンボルしか持たないため、ピクセルは 0 ビットで済み、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 バイトのヘッダーにはアルファマスクがないため、4 バイト目は無視され、どこでもピクセルは黒になります。
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 アルファ付きトゥルーカラー。ゼロだけの 1 本のスキャンラインを手作業で圧縮しており、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 アルファマスク付きの 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 はアルファマスクを無視して黒で描画します。
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 で書き出すもの:色用とアルファ用の 2 つの 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透明透明透明透明

4 つのエンジンすべてで透明になった最小のファイルは 30 バイトの WebP で、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 タグを有効な状態にできます。
  • CSS のサポートがまちまちな HTML メールでの、固定サイズのスペーサー。
  • 画像ファイルを同梱せずに本物の画像が必要なテストやモック。

トラッキングピクセルは見た目ほど当てになりません

Apple Mail は「メールプライバシー保護」がオンのとき、リモート画像をプロキシ経由で先読みするため、「開封」が人によるものとは限りません。Gmail も独自のプロキシ経由で画像を取得してキャッシュします。多くのクライアントはデフォルトでリモート画像をブロックします。ページのアナリティクスには、画像よりも navigator.sendBeacon() や 204 No Content レスポンスのほうが適していることがよくあります。

よくある質問

ピクセルがあるのに、なぜ「空」なのですか?
GIF には最低 1 ピクセルが必要です。このファイルは 1×1 で、唯一の色が透明に指定されているため、何も表示されません。
43 バイトのファイルは仕様上正しいですか?
はい。GIF89a 仕様に厳密に従っており、上の表のすべてのエンジンで透明に描画されます。
PNG や WebP ではなく、なぜ GIF なのですか?
最小の透明 PNG よりも小さく、過去 35 年のあらゆるブラウザー、メールクライアント、画像ライブラリで読めるからです。
data URI とファイル、どちらを使うべきですか?
data URI はリクエストを 1 回減らせるので、プレースホルダーや CSS に向いています。トラッキングピクセルのようにリクエストそのものが目的の場合は、ファイルかエンドポイントが必要です。
Content-Type は何を送ればよいですか?
image/gif です。すべてのリクエストをサーバーに届かせる必要がある場合は Cache-Control: no-store も付けてください。