GIFアニメが遅い原因|0.01秒以下は0.1秒で再生される
GIFアニメが設定より遅く再生されるのは、0.01秒以下の待ち時間を主要なブラウザが0.1秒に直して再生するからです。60fpsの動画をGIFにすると1秒が2.8秒になる実測と、速く見せたいときの待ち時間の選び方をまとめました。
公開読了目安 約4分
この記事の要点
- GIFの待ち時間は0.01秒刻みで、ブラウザは0.01秒以下を0.1秒に直す
- 60fpsの動画をそのままGIFにすると、1秒の動きが約2.8秒かかる
- そのまま再生される最短は0.02秒で、1秒に50コマぶんにあたる
- 30fps相当は0.03秒と0.04秒を混ぜた形になる
- 遅いGIFは、コマごとの待ち時間を見れば原因の見当がつく
目次
GIFアニメが設定より遅く動く原因の多くは、0.01秒以下の待ち時間です。 Chrome・Edge・Firefox・Safari は、0.01秒以下と書かれたコマを0.1秒として再生します。
つまり速くしようとして待ち時間を詰めすぎると、かえって10倍遅くなります。 この記事では、仕組みと実測、速く見せたいときの値の選び方を順に説明します。
GIFの待ち時間は0.01秒刻みで書く
GIFアニメは、コマごとに「次のコマへ進むまでの待ち時間」を持っています。 GIF89a の仕様書では、この値は 1/100 秒単位の整数です。
そのため、書ける値は 0、0.01、0.02、0.03 秒…と 0.01 秒刻みになります。 動画のように「1秒に60コマ」をぴったり表すことはできません。
60コマなら 1 コマ 0.0166… 秒ですが、書けるのは 0.01 か 0.02 秒のどちらかです。 この端数の扱いが、遅く再生される原因につながります。
0.01秒以下を0.1秒に直すブラウザの決まり
主要なブラウザは、GIFの待ち時間が短すぎるときに長く直して再生します。 3 つの描画エンジンのソースで、同じ条件を確かめました(2026年10月時点)。
| 描画エンジン | 使っているブラウザ | 直す条件 | 直したあとの値 |
|---|---|---|---|
| Chromium | Chrome・Edge | 10ミリ秒以下 | 100ミリ秒 |
| Gecko | Firefox | 0〜10ミリ秒 | 100ミリ秒 |
| WebKit | Safari | 11ミリ秒未満 | 100ミリ秒 |
GIFの値は 0.01 秒刻みなので、どれも「0 秒と 0.01 秒が 0.1 秒になる」という同じ結果です。 0.02 秒以上は、書かれた値のまま扱われます。
Firefox のソースには、待ち時間を正しく書かないソフトへの対策だと説明があります。 極端に速い書き直しで電力を使いすぎないことも、理由に挙げられています。
60fpsの動画をGIFにすると約2.8倍遅くなる
動画を GIF に変えるとき、コマの数(フレームレート)を残したまま書き出すことがあります。 ffmpeg 6.1.1 で 1 秒の動画をフレームレートごとに GIF にし、書かれた待ち時間を数えました。
| 元の動画 | GIFのコマ数 | 書かれた待ち時間 | 書かれた合計 | ブラウザでの1周 |
|---|---|---|---|---|
| 10fps | 10 | 0.10秒 × 10 | 1.00秒 | 1.00秒 |
| 15fps | 15 | 0.06秒 × 5、0.07秒 × 10 | 1.00秒 | 1.00秒 |
| 24fps | 24 | 0.04秒 × 20、0.05秒 × 4 | 1.00秒 | 1.00秒 |
| 30fps | 30 | 0.03秒 × 20、0.04秒 × 10 | 1.00秒 | 1.00秒 |
| 50fps | 50 | 0.02秒 × 50 | 1.00秒 | 1.00秒 |
| 60fps | 60 | 0.01秒 × 20、0.02秒 × 40 | 1.00秒 | 2.80秒 |
ffmpeg は 1 秒の合計がずれないよう、0.01 秒と 0.02 秒を混ぜて書きます。 ところがブラウザは 0.01 秒の 20 コマを 0.1 秒ずつにするので、1 周が 2.8 秒になります。
50fps までは書かれた値がそのまま使われるので、遅くなりません。 遅くなるかどうかの境目は、0.01 秒のコマが出てくるかどうかです。
速く見せたいときの待ち時間の選び方
いちばん短く、そのまま再生される待ち時間は 0.02 秒です。 1 秒あたり 50 コマにあたり、これより速くは書けません。
| 待ち時間 | 1秒あたりのコマ数 | 向いている使い方 |
|---|---|---|
| 0.02秒 | 50 | とにかく滑らかにしたいとき |
| 0.03〜0.04秒 | 約25〜33 | 動画から作るとき(30fps前後) |
| 0.05〜0.07秒 | 約14〜20 | 容量を抑えたい操作の録画 |
| 0.10秒 | 10 | 図解やコマ送りの説明 |
60fps の動画から作るなら、先に 30fps か 50fps に落としてから GIF にします。 コマ数が減るので、容量も小さくしやすくなります。
逆に、全部のコマを 0 秒で書き出すソフトもあります。 その GIF は、主要なブラウザでは 1 コマ 0.1 秒、つまり 1 秒に 10 コマで動きます。
自分のGIFの待ち時間を確かめる
遅い GIF が手元にあるなら、まずコマごとの待ち時間を見ます。 GIF分解に入れると、書かれた合計と、ブラウザで 1 周にかかる時間が並んで出ます。
0.01 秒以下のコマには印が付き、何枚目かが一覧で分かります。 合計が食い違っていれば、原因は待ち時間の詰めすぎです。
1周の回数が思った数と違うとき
速さとは別に、「3 回で止めたいのに 2 回目で止まる」ような食い違いもあります。 繰り返しの回数を書く欄は GIF89a の仕様書には無く、慣習で使われている拡張です。
この欄の数え方は、書き出すソフトによって違います。 ImageMagick 6 で「3 回」と指定して作った GIF を調べると、欄には 2 と書かれていました。
指定した回数から 1 を引いた値が、欄に入っていたことになります。 回数が合わないときは、書き出したソフトの数え方を確かめてください。
関連記事
- GIFアニメを1コマずつ画像にする手順:分解して欠けないPNGで保存する操作の流れ
参考・出典
- Graphics Interchange Format Version 89a — W3C (2026-10-01 閲覧)
- deferred_image_decoder.cc(Chromium の待ち時間の扱い) — Chromium (2026-10-01 閲覧)
- FrameTimeout.h(Firefox の待ち時間の扱い) — Mozilla (2026-10-01 閲覧)
- ImageDecoderCG.cpp(WebKit の待ち時間の扱い) — WebKit (2026-10-01 閲覧)
本記事は上記の公的機関・公式情報源を参考にしています。最新の情報は各リンク先をご確認ください。
あわせて読みたい
同じテーマ・関連ツールの記事です。