Skip to content

GIF Tools

Resize, optimize, change speed, reverse, extract frames, and rotate animated GIFs. Provides multiple operation modes in a single tool.

API Endpoint

POST /api/v1/tools/gif-tools

Parameters

Common Parameters

ParameterTypeRequiredDefaultDescription
modestringNo"resize"Operation mode: resize, optimize, speed, reverse, extract, rotate
loopnumberNo0Loop count for output GIF (0 = infinite, 1-100 = finite loops)

Resize Mode Parameters

ParameterTypeRequiredDefaultDescription
widthintegerNo-Target width in pixels (1 to 16384)
heightintegerNo-Target height in pixels (1 to 16384)
percentagenumberNo-Scale by percentage (1 to 500). Overrides width/height if set.

Optimize Mode Parameters

ParameterTypeRequiredDefaultDescription
colorsnumberNo256Maximum number of colors in palette (2 to 256)
dithernumberNo1.0Dithering strength (0 to 1, where 0 disables dithering)
effortnumberNo7Optimization effort level (1 to 10, higher = slower but smaller)

Speed Mode Parameters

ParameterTypeRequiredDefaultDescription
speedFactornumberNo1.0Speed multiplier (0.1 to 10). Values > 1 speed up, < 1 slow down.

Extract Mode Parameters

ParameterTypeRequiredDefaultDescription
extractModestringNo"single"Extraction mode: single, range, all
frameNumbernumberNo0Frame index to extract in single mode (0-based)
frameStartnumberNo0Start frame index for range mode (0-based)
frameEndnumberNo-End frame index for range mode (0-based, inclusive)
extractFormatstringNo"png"Format for extracted frames: png, webp

Rotate Mode Parameters

ParameterTypeRequiredDefaultDescription
anglenumberNo-Rotation angle: 90, 180, or 270 degrees
flipHbooleanNofalseFlip horizontally
flipVbooleanNofalseFlip vertically

Example Requests

Resize

bash
curl -X POST http://localhost:13490/api/v1/tools/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"resize","percentage":50}'

Optimize

bash
curl -X POST http://localhost:13490/api/v1/tools/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"optimize","colors":128,"effort":9}'

Speed Up

bash
curl -X POST http://localhost:13490/api/v1/tools/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"speed","speedFactor":2.0}'

Extract Single Frame

bash
curl -X POST http://localhost:13490/api/v1/tools/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"extract","extractMode":"single","frameNumber":5,"extractFormat":"png"}'

Example Response

json
{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/animation.gif",
  "originalSize": 2345678,
  "processedSize": 1234567
}

Info Sub-Route

POST /api/v1/tools/gif-tools/info

Returns metadata about an animated GIF without processing it.

Info Request

bash
curl -X POST http://localhost:13490/api/v1/tools/gif-tools/info \
  -F "[email protected]"

Info Response

json
{
  "width": 480,
  "height": 320,
  "pages": 24,
  "delay": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
  "loop": 0,
  "fileSize": 2345678,
  "duration": 2400
}

Notes

  • Uses the standard createToolRoute factory for the main processing endpoint.
  • The info endpoint only requires a file upload (no settings needed).
  • In resize mode, if percentage is provided it takes priority over width/height. The resize uses fit: inside to maintain aspect ratio.
  • In speed mode, frame delays are divided by the speed factor. Minimum delay per frame is 20ms (GIF spec limitation).
  • In reverse mode, the speedFactor parameter is also available to simultaneously adjust speed while reversing.
  • In extract mode with range or all, the output is a ZIP file containing individual frames.
  • In rotate mode, each frame is processed individually and reassembled into an animation.
  • The loop parameter controls how many times the output GIF loops. Use 0 for infinite looping.
  • The duration field in the info response is the total animation duration in milliseconds.