User Rating 0.0 β˜…β˜…β˜…β˜…β˜…
Total Usage 0 times
Drop a GIF here or click to upload Max 20 MB
Is this tool helpful?

Your feedback helps us improve.

β˜… β˜… β˜… β˜… β˜…

About

Animated GIFs with hard frame cuts produce a jarring, flickering appearance. Cross-fading inserts interpolated transition frames between each original frame pair, blending pixel values by a factor t that sweeps from 0 to 1 across the overlap window. The result is a smoother animation at the cost of increased frame count and file size. This tool performs real binary GIF decoding (LZW decompression), per-pixel alpha blending on the raw RGBA raster, and re-encoding with median-cut color quantization back to a valid GIF89a file. No server upload occurs. All processing runs locally in a Web Worker.

Choosing too many overlap frames relative to your source frame count will collapse distinct keyframes into a continuous morph, losing the original animation's pacing. A good starting point is 2 - 4 overlap frames at 15 - 20 fps. The easing curve controls whether the blend accelerates at the start (ease-in), decelerates at the end (ease-out), or remains uniform (linear). This tool approximates cubic BΓ©zier easing; results may differ slightly from CSS-based easing curves.

gif crossfade animation frames transition blend image editor

Formulas

The cross-fade blend for each pixel at interpolation step k out of n overlap frames between source frame A and frame B:

t = ease(kn + 1)
pixelout = Argba β‹… (1 βˆ’ t) + Brgba β‹… t

Where k ranges from 1 to n. The easing function maps the linear ratio to a curved value:

{
linear: tease-in: t2ease-out: 1 βˆ’ (1 βˆ’ t)2ease-in-out: 3t2 βˆ’ 2t3

Total output frame count Fout for Fsrc source frames with n overlap frames per transition:

Fout = Fsrc + n β‹… (Fsrc βˆ’ 1)

Where Argba = source pixel RGBA from frame A, Brgba = source pixel RGBA from frame B, n = number of cross-fade frames inserted per transition, t = normalized blend factor after easing in range [0, 1].

Reference Data

Easing TypeBehaviorBest ForFormula Approximation
LinearConstant blend rateTechnical / uniform transitionst = t
Ease-InStarts slow, acceleratesDramatic revealst2
Ease-OutStarts fast, deceleratesSettling / landing effects1 βˆ’ (1 βˆ’ t)2
Ease-In-OutSlow start & endMost natural-looking fadesSmoothstep: 3t2 βˆ’ 2t3
Source FramesOverlapOutput FramesFile Size Impact
101191.9Γ—
102282.8Γ—
103373.7Γ—
104464.6Γ—
105555.5Γ—
202582.9Γ—
204964.8Γ—
3031173.9Γ—
5021483.0Γ—
52132.6Γ—
GIF Spec FieldBytesDescription
Signature6GIF89a magic bytes
Logical Screen Descriptor7Width, height, color table flags
Global Color Table3 Γ— 2N+1RGB palette entries
Graphic Control Extension8Disposal, delay, transparency index
Image Descriptor10Position, size, interlace, local table flag
LZW Minimum Code Size1Initial code bit width
Image Data Sub-blocksVariableLZW-compressed pixel indices
Trailer10x3B end marker

Frequently Asked Questions

For each pair of adjacent source frames, the tool inserts exactly n interpolated blend frames. With Fsrc source frames, there are Fsrc βˆ’ 1 transitions, giving a total of Fsrc + n β‹… (Fsrc βˆ’ 1) output frames. A 10-frame GIF with overlap 3 produces 37 frames. Higher overlap means smoother transitions but larger file sizes.
GIF is limited to 256 colors per frame. The encoder uses median-cut color quantization to select the optimal 256-color palette. Cross-faded frames contain gradient blends that may exceed 256 unique colors, forcing quantization artifacts. For photographic content, this is inherent to the GIF format. Reducing overlap slightly can help because fewer intermediate gradient shades need to be represented.
Ease-in-out (smoothstep: 3t2 βˆ’ 2t3) is generally the most perceptually pleasing because it avoids abrupt changes at both the start and end of the transition. Linear blending can appear mechanical, while ease-in or ease-out alone create asymmetric transitions that feel unbalanced.
Yes. The tool composites each frame onto a full RGBA canvas respecting the GIF disposal method and transparency index before blending. The alpha channel is interpolated alongside RGB. However, the output GIF uses a single transparency index per frame (binary transparency), so semi-transparent intermediate values are rounded to fully opaque or fully transparent at the quantization stage.
The tool accepts GIFs up to 20 MB with a maximum of 500 total output frames. Processing occurs in a Web Worker so the browser tab remains responsive. Very large GIFs (e.g., 300 source frames at 1920Γ—1080) may take 30+ seconds due to per-pixel blending and LZW re-compression.
Before blending, each frame is fully rendered onto a persistent canvas following GIF89a disposal semantics: "Do not dispose" retains previous pixels, "Restore to background" clears the frame area, and "Restore to previous" reverts to the prior state. This ensures the cross-fade operates on the correct composite image rather than raw partial frame data.