Boneyard Tools

GIF Frame Counter and Animation Analyzer

Drop in a GIF to see how it animates: the number of frames, the canvas size, how long one full play takes, how many times it loops, and the delay on each individual frame. The file is read entirely in your browser, so even private or unfinished GIFs never leave your device.

How to count frames in a GIF

  1. Drag a GIF onto the box, or click browse to pick one.
  2. Read the frame count, dimensions, and animated badge that appear instantly.
  3. Scroll the per-frame delay list to see the timing of each frame.

Examples

A short looping animation

spinner.gif (a 12-frame animated GIF)
320 x 240, 12 frames, animated, 1.2 s total, loops forever

A static GIF

logo.gif (a single-image GIF)
512 x 512, 1 frame, not animated, 0 ms duration

Frequently asked questions

Is my GIF uploaded anywhere?

No. The GIF is read and parsed entirely in your browser using JavaScript. Nothing is sent to a server, so private or work-in-progress files stay on your device.

How does it count frames?

It walks the GIF block structure and counts every Image Descriptor block, which is one rendered frame. It also reads each frame's Graphic Control Extension to get the delay, so the counts and timings match what your browser plays.

What does the loop count mean?

Animated GIFs can store a loop count in a NETSCAPE2.0 extension. A value of 0 means the GIF loops forever; a positive number is how many times it repeats. If no loop block is present, the tool reports none.

Why does the total duration look slightly off?

GIF delays are stored in hundredths of a second, so the smallest step is 10 ms. Many viewers also clamp very short delays (under about 20 ms) to a minimum, so real playback can run a little slower than the raw sum.

Does a single image count as animated?

No. A GIF is only flagged as animated when it has more than one frame. A single-frame GIF is reported as one frame with no animation.

Which GIF versions are supported?

Both GIF87a and GIF89a. Animation features like per-frame delays and loop counts come from GIF89a, but static GIF87a files are read correctly too.

Related tools