# GIF 圧縮（無料・登録不要）

> GIF圧縮ツールは、すべてのフレーム、フレームの遅延時間、ループ回数を保ったまま、ピクセルサイズを変えずにGIFを小さくする無料のオンラインツールです。

GIF 圧縮は、GIFファイルのピクセルサイズを変えずに容量を小さくする作業です。このツールなら、アニメーションGIFもすべてのフレーム、遅延時間、ループ回数を保ったまま圧縮できます。無料で使え、アカウント登録は不要です。アカウントなしで使う場合はセキュリティ確認が必要で、結果のサイズは画像によって変わります。

## 主な仕様

- 入力は、GIF（PNG、JPG、WebP、AVIF、BMP、TIFFも可）で、無料ツールでは5 MBまで、ログインしている場合は10 MBまで、フレームごとに16 MP (4096 x 4096)までです。ファイルの種類は内容から判定し、GIFとWebPのアニメーションのみ保持します。
- 出力は既定でGIFで、幅、高さ、フレーム、フレームの遅延時間、ループ回数は同じです。色数は256、16、4、2、ディザリングは0～100%、フレームロスは0～32（非可逆）、または目標サイズ（KB）を最大4回の試行エンコードで探します。WebP（アニメーション）と元の形式も選べます。Losslessは再最適化のみで、大きくなることがあります。
- アニメーションの制限は、ログインしている場合は300フレーム、合計64 MPまで（幅×高さ×フレーム数）、アカウントなしでは100フレーム、16 MPまでです。制限を超えるとジョブは失敗し、最初のフレームだけを使うよう案内が表示されます。
- テストでは、生成した320 x 240 px、20フレームのクリップが、712 KBのGIFから既定の設定で453 KB（36%小さく）、16色で289 KB、アニメーションWebPで71 KBになりました。テストクリップはスクリプトで生成したもので、結果は変わります。
- アップロードしたファイルはジョブ終了時に削除され、結果は10分後に削除されます。ログインしているユーザーは、画像ごとに1クレジットに加えて、最初の10MPを超えるフレームについて、開始した10MPごとに1クレジットを使います。
- アカウント登録なしの無料利用では、訪問者ごとに毎分10件、毎日50件まで変換でき、透かしは入りません。ログインしているユーザーは、レンダリングごとに1クレジットを使用します。毎月100無料クレジットが付与されます。
- ファイルは自動的に削除されます。アカウント登録なしの場合は変換後10分、無料アカウントの場合は1日で削除されます。
- 開発者は、APIキーを付けてPOST https://api.aiipworld.com/v1/renderを送信すると、同じレンダリングを実行できます。詳しくはAPIドキュメントページをご覧ください。

## 使い方

1. GIF Compressorを開き、GIFをアップロードします。ツールが形式、サイズ、ピクセル数を確認してからプレビューを表示します。アニメーションGIFの場合は、「Animated GIF: N frames」と表示されます。
2. 「出力形式」はGIFのままにし、「アニメーションを残す」をオンにしておきます。
3. 初期値は色数256、ディザリング100%、フレームロス20です。小さくしたい場合は、この値を変えてください。
4. 「GIFを圧縮」をクリックして圧縮を開始します。結果パネルで、元のサイズと結果のサイズ、削減率、フレーム数、ループを確認します。
5. 結果をダウンロードします。ダウンロードリンクは有効期間が短いため、準備ができたら保存してください。

## GIF 圧縮の使い方

GIFを圧縮するには、GIF Compressorにファイルをアップロードします。アップロード前に、ブラウザが形式、サイズ、ピクセル数を確認し、プレビューを表示します。

アニメーションGIFの場合は、フレーム数を数えて「Animated GIF: N frames」と表示します。「出力形式」はGIFのまま、「アニメーションを残す」をオンにしておきます。

初期値は色数256、ディザリング100%、フレームロス20です。この初期値は、多くのGIFファイルで使える出発点です。

- 小さいファイルが必要な場合は、色数やフレームロスを変えてから、もう一度実行します。
- このツールは一度に1つの画像を処理します。

## GIF 圧縮ツールの役割

このツールは、Compress JPGやCompress PNGのページと同じ圧縮ツールを、GIFを選んで開いたものです。すべてのフレームを再エンコードして、GIFを小さくします。

共有するには大きすぎるアニメーションを小さくしたいときに使えます。「ロスレス」にチェックを入れない限り、圧縮は非可逆です。非可逆の圧縮では、色数を減らし、ディザリングとフレームロスを使います。すべてのフレーム、フレームの遅延時間、ループ回数は保たれます。

結果パネルには、結果が小さくならない場合や、目標サイズに届かなかった場合に警告が表示されます。

## 色数、ディザリング、フレームロスの調整

GIF圧縮は、3つの設定のバランスで決まります。GIFのパレットは最大256色で、色数は256、16、4、2から選べます。

色数が少ないほどファイルは小さくなりますが、絵は粗くなりがちです。ディザリングは、パレットにない色を点の散らばりで表現する設定で、範囲は0～100%、初期値は100です。テストクリップでは、ディザリング0で448 KB、ディザリング100で453 KBでした。サイズはほとんど変わりませんでした。

フレームロスは、フレーム間でほとんど変わらないピクセルを再利用する設定です。範囲は0から32で、初期値は20です。大きくするとファイルは小さくなりますが、薄い残像が出ることがあります。

テストアニメーション（生成したもの）では、16色、フレームロス20で289 KBになり、712 KBより59%小さくなりました。結果は画像によって変わります。

## 目標サイズ（KB）を指定して圧縮

ファイルを指定サイズ以下にするには、「目標のファイルサイズを指定する」を選び、目標をKBで入力します。目標の範囲は1～20480KBです。

ツールは、色数とフレームロスの組み合わせを、高画質側から小さい側へ8段階探します。試行エンコードは最大4回です。収まる段階のうち最もよい結果を返します。ファイルを目標サイズまで水増しすることはありません。

テストでは、200 KBの目標で190 KBになり、300 KBの目標でも190 KBになりました。100 KBの目標には届かず、最小の結果は117 KBでした。5 KBの目標でも117 KBになり、目標には届きませんでした。どの段階も収まらない場合は、最小の結果を返し、パネルに目標に届かなかったと表示します。

- 目標サイズはKBで、1 KBは1024バイトです。
- 目標は、ツールが目指す値であり、保証ではありません。

## GIFが小さくならない場合

圧縮後の結果が元より大きくなることがあります。その場合は、結果パネルに警告が表示されます。テストでは、フレームロス0で737 KBになり、元より約4%大きくなりました。「ロスレス」でも737 KBでした。

すでに小さいGIFは、圧縮すると大きくなることがあります。同じクリップを、16色、ディザリングなし、フレームロス32で圧縮すると102 KBでした。既定の設定では128 KBで、25%大きくなりました。

すでに強く圧縮したGIFを、さらに圧縮すると大きくなることがあります。フレームごとに画像が大きく変わる場合も難しいケースです。テストでは、写真の上をパンするクリップを使い、すべてのピクセルが変わりました。結果は画像によって変わります。

- 色数を減らすか、フレームロスを大きくしてみてください。
- パネルに結果が小さくならないと表示されたら、元のファイルを残してください。

## GIFとアニメーションWebPの選び方

出力形式には、GIF、WebP、「元の形式のまま」があります。「元の形式のまま」を選ぶと、GIFはGIFのまま保存されます。

WebPを選ぶと、アニメーションGIFからアニメーションWebPを作れます。WebPの出力には、非可逆の品質スライダーがあります。テストでは、20フレームのクリップを品質75のアニメーションWebPにすると71 KBになり、712 KBより90%小さくなりました。20フレームすべてが残りました。既定のGIF設定では453 KBでした。

ファイルをGIFのまま使う必要があるならGIFを選びます。受け取り先がWebPに対応していて、より小さいファイルが欲しい場合はWebPを選びます。

## フレーム、タイミング、ループの維持

「アニメーションを残す」は初期値でオンです。オンのままなら、すべてのフレームが残ります。各フレームの遅延時間もそのまま保たれます。

GIFの遅延時間は10ミリ秒の倍数です。遅延時間が0または1/100秒のフレームは変わりません。ブラウザでは、この遅延を100msと表示します。

ループ回数も保たれます。1回だけ再生するGIFはループ1のままです。無限にループするGIFは、その設定を保ちます。結果パネルには「Animation: N frames, X s, loops forever」または「N回再生」が表示されます。

アニメーションには、EXIFの回転は適用されません。カメラや位置情報のタグは、結果にコピーされません。「アニメーションを残す」をオフにすると、最初のフレームだけが残り、パネルには「Nフレーム中、最初の1フレームだけを使いました」と表示されます。テストでは、1フレームのGIFが36 KBでした。

## フレーム数と合計ピクセル数の制限

アニメーションには、フレーム数の制限と合計ピクセル数の制限があります。合計ピクセル数は、幅×高さ×フレーム数で計算します。

ログインしている場合は、300フレーム、合計64 MPまで使えます。アカウントなしでは、100フレーム、合計16 MPまでです。フレームごとの上限は16 MP (4096 x 4096)です。

制限を超えるアニメーションは、フレームを展開する前にファイルのヘッダーで確認し、すぐに拒否されます。ジョブは「animation_too_large」で失敗し、最初のフレームだけを使うよう案内が表示されます。「アニメーションを残す」をオフにするか、APIでanimate=falseを指定すると、最初のフレームだけを使います。失敗したときは、クレジットが返却されます。

- クレジット：基本は1画像あたり1クレジットで、最初の10MPを超えるデコード済みフレームについては、開始した10MPごとに1クレジットが加算されます。
- GIFが終端マーカーの前で切れている場合は、未対応の画像として拒否されます。

## チャットアプリの上限に合わせたGIF圧縮

Discordなどのチャットアプリ向けにGIFを小さくする方法を探す方もいます。チャットアプリは、GIFのアップロード上限を独自に設定しています。

上限は、アプリが表示する値で確認してください。その値をKBで目標サイズとして入力します。「目標のファイルサイズを指定する」を選び、目標を入力すると、ツールは収まる最もよい段階を返します。

目標に届かない場合は、パネルにその旨が表示されます。その場合は、色数を減らすかフレームロスを増やしてください。「アニメーションを残す」をオンのままにすると、動きが残ります。送る前に、結果パネルで最終サイズを確認してください。

## 透過GIFの扱い

GIFのピクセルは、完全に透明か完全に不透明のどちらかです。半透明のピクセルは持てません。「透過を保持」は初期値でオンです。オンのままなら、透明部分は透明のまま残ります。

「透過を保持」をオフにすると、透明部分は背景色で塗りつぶされます。背景色の初期値は白（#ffffff）で、変更できます。

ぼかしたエッジはGIFに引き継がれません。ぼかしのあるPNGやWebPをGIFにすると、エッジがざらつきます。これはGIF形式の制限です。

## 対応するファイル形式と制限

対応形式は、PNG、JPG（.jpegと.jfifも含む）、WebP、AVIF、GIF、BMP、TIFFです。SVG、PDF、HEIC/HEIF、BigTIFF、カメラのRAWは受け付けません。アニメーションとして残るのは、GIFとWebPのアニメーションだけです。

ファイル形式は、ファイル名ではなくファイルの内容から判定します。名前を変えたファイルは、実際の形式で読み込まれます。テキストファイルの拡張子を画像に変えた場合は、「unsupported image」のメッセージで拒否されます。

無料のWebツールでは、1画像につき5 MBまで使えます。アカウントなしでは、1日に訪問者1人あたり30画像まで使えます。フレームごとの上限は16 MP (4096 x 4096)です。ログインしているユーザーは、1画像につき10 MBまで使えます。

ログインしているユーザーは、1画像につき1クレジットを使います。アニメーションの場合は、追加のクレジットもかかります。最初の5MBを超える結果は、5MBごとに1クレジットが加算されます。結果が20MBを超えると、ジョブは「output too large」で失敗し、途中で切れたファイルは返されません。サイズはKB（1024バイト）とMB（1024×1024バイト）で表示します。

## APIでGIF 圧縮を行う方法

APIでは、op=image_compressとformat=gifを指定します。リクエストは、JSONやマルチパートではなく、画像のバイト列をそのままリクエストボディに入れて送ります。Content-Typeにはimage/gifを指定します。image/webp、image/png、image/jpeg、image/avif、image/bmp、image/tiffも指定できます。

送信先はhttps://api.aiipworld.com/v1/image-jobsです。APIキーは、Authorization: Bearerまたはx-api-keyに入れます。設定はクエリ文字列に入れ、colours、dither、lossy、target_kb、lossless、animateを指定できます。未知の名前は拒否されます。

成功すると、202とjob_idが返ります。GET /v1/jobs/:idを、成功、失敗、またはタイムアウトになるまで問い合わせます。アニメーションでは、timeout_sec=60を指定します。60は最大値です。download_urlは、有効期間が短い署名付きリンクです。

ページの下には、cURL、Node、Pythonの例が表示されます。詳細は/docs/#image-compressをご覧ください。1リクエストで扱えるのは1画像です。一括処理用のエンドポイントはなく、webhookもまだありません。

- エラー：400 unsupported_image または invalid_params、413 file_too_large、402 insufficient_credits、429 rate limited（リクエストが多すぎます）

## アップロードされたファイルの扱い

画像はサーバーに送られ、ブラウザでは処理されません。サーバーは、一般的な画像処理に使うsharpを使い、その中でlibvipsライブラリを使います。sharpは人工知能を使ったものではありません。アップロードされた画像は、結果を作るためだけに使われます。

アップロードしたファイルは、ジョブが成功しても失敗しても、終了した時点で削除されます。無料のWebツールでは、結果は10分後に削除されます。履歴は残りません。ダウンロードリンクは有効期間が短くなっています。

アップロードするファイルは、利用ポリシーに従い、使用する権利があるものにしてください。失敗したジョブとタイムアウトしたジョブは返金されます。

## よくある質問

### GIF 圧縮は無料でできますか？

はい、無料のWebツールならアカウントなしで使えます。アカウントなしで使うには、セキュリティ確認が必要です。利用は1日に訪問者1人あたり30画像までです。ログインしている場合は、クレジットを使います。

### 圧縮後もGIFは動きますか？

はい、「アニメーションを残す」がオンなら動きます。すべてのフレーム、フレームの遅延時間、ループ回数が残ります。

### GIFはどのくらい小さくなりますか？

画像によって変わるため、結果は一定ではありません。テストでは、生成した320 x 240 px、20フレームのアニメーションが既定の設定で36%小さくなりました。2色にすると87%小さくなりましたが、絵は粗くなりました。

### フレームロスとは何ですか？

フレーム間でほとんど変わらないピクセルを再利用する設定です。非可逆の圧縮に使われます。範囲は0から32で、初期値は20です。数値を大きくするとファイルは小さくなりますが、薄い残像が出ることがあります。

### 圧縮してもGIFが小さくならないのはなぜですか？

画像がすでに小さいか、強く圧縮されている可能性があります。結果が小さくならない場合は、結果パネルにその旨が表示されます。色数を減らすか、フレームロスを大きくしてみてください。テストでは、フレームロス0で4%大きくなり、小さいGIFは既定の設定で25%大きくなりました。

### GIFを指定したKB以下にできますか？

はい、「目標のファイルサイズを指定する」を選び、目標をKBで入力します。目標の範囲は1～20480KBです。ツールは収まる最もよい段階を返します。どの段階も収まらない場合は、最小の結果を返し、目標に届かなかったと表示します。

### 色数は何色から選べますか？

256、16、4、2の4つから選べます。選べるのは、この4つのサイズだけです。

### GIF 圧縮は非可逆ですか？

はい、「ロスレス」にチェックを入れない限り非可逆です。Losslessは256色とフレームロスなしで、ファイルを再最適化するだけです。そのため、結果が大きくなることがあります。

### アニメーションWebPにもできますか？

はい、出力をWebPにすると、アニメーションGIFからアニメーションWebPを作れます。テストでは、品質75で712 KBのクリップが71 KBになり、20フレームすべてが残りました。

### 透過GIFはどうなりますか？

「透過を保持」は初期値でオンなので、透明部分は透明のまま残ります。オフにすると、透明部分は背景色で塗りつぶされます。背景色の初期値は白です。

### フレーム数や合計ピクセル数の制限で拒否されるのはなぜですか？

アニメーションが上限を超えると、デコード前にファイルのヘッダーで確認して拒否されるためです。アカウントなしでは100フレーム、合計16 MPまでです。結果が20MBを超えると、「output too large」で失敗します。

### プログラムからGIFを圧縮できますか？

はい、APIでop=image_compressとformat=gifを指定して呼び出せます。画像のバイト列をhttps://api.aiipworld.com/v1/image-jobsに送ります。アニメーションではtimeout_sec=60を使います。ページには、cURL、Node、Pythonの例が表示されます。

## 関連ツール

- [GIF リサイズ｜アニメーションGIFを小さくする](https://aiipworld.com/ja/tools/resize-gif/index.md)
- [WebP GIF 変換ツール](https://aiipworld.com/ja/tools/webp-to-gif/index.md)
- [GIF JPG 変換](https://aiipworld.com/ja/tools/gif-to-jpg/index.md)
- [GIF PNG 変換：GIFを静止画のPNGに変換](https://aiipworld.com/ja/tools/gif-to-png/index.md)
- [JPG GIF 変換ツール](https://aiipworld.com/ja/tools/jpg-to-gif/index.md)
- [JPG 圧縮：ピクセルサイズはそのままで容量を小さく](https://aiipworld.com/ja/tools/compress-jpg/index.md)
- [PNG 圧縮：無料で画像を軽くする](https://aiipworld.com/ja/tools/compress-png/index.md)
- [PNGをWebPに変換](https://aiipworld.com/ja/tools/png-to-webp/index.md)
- [GIF トリミング（無料・オンライン）](https://aiipworld.com/ja/tools/gif-cropper/index.md)

ページ： https://aiipworld.com/ja/tools/compress-gif/
