Resize GIF
Open Resize GIF on Happytails.ai. This view has the same page content and links, with explicit tool capabilities. Read the processing notes before using a tool.
Tool capabilities
{
"id": "resize-gif",
"category": "image-tools",
"built": true,
"requirements": "Runs locally in your browser. Choose one animation up to 20 MiB, 120 frames, 1920 pixels per side and 16 million decoded frame pixels. Processing stops after 120 seconds. Every frame is retained. GIF timing and playback count are preserved; APNG timing rounds cumulatively to 10 milliseconds and playback count is mapped to GIF repeats. GIF supports only binary transparency: the selected alpha threshold is applied after resizing. Palette and dither settings change color quality. Output may be larger; compare before and after bytes. Unsafe delta-frame optimization falls back to full-canvas frames and is reported. Files stay on your device.",
"implementation": {
"fields": [
{
"key": "width",
"label": "Width (pixels)",
"value": 480,
"type": "number",
"min": 16,
"max": 1920,
"step": 1
},
{
"key": "keepAspect",
"label": "Keep aspect ratio",
"value": "true",
"type": "select",
"values": [
"true",
"false"
]
},
{
"key": "height",
"label": "Height (pixels, when aspect ratio is unlocked)",
"value": 480,
"type": "number",
"min": 16,
"max": 1920,
"step": 1
},
{
"key": "colors",
"label": "Palette colors",
"value": "256",
"type": "select",
"values": [
"32",
"64",
"128",
"256"
]
},
{
"key": "dither",
"label": "Dithering",
"value": "sierra2_4a",
"type": "select",
"values": [
"none",
"bayer",
"sierra2_4a"
]
},
{
"key": "alphaThreshold",
"label": "Alpha threshold (1 to 255)",
"value": 128,
"type": "number",
"min": 1,
"max": 255,
"step": 1
},
{
"key": "optimizeFrames",
"label": "Optimize frame rectangles",
"value": "true",
"type": "select",
"values": [
"true",
"false"
]
}
],
"registrationFamily": "gif-repair",
"presentation": "metrics",
"files": true,
"multiple": false,
"input": false,
"accept": ".gif,image/gif",
"maxFileBytes": 20971520,
"note": "Runs locally in your browser. Choose one animation up to 20 MiB, 120 frames, 1920 pixels per side and 16 million decoded frame pixels. Processing stops after 120 seconds. Every frame is retained. GIF timing and playback count are preserved; APNG timing rounds cumulatively to 10 milliseconds and playback count is mapped to GIF repeats. GIF supports only binary transparency: the selected alpha threshold is applied after resizing. Palette and dither settings change color quality. Output may be larger; compare before and after bytes. Unsafe delta-frame optimization falls back to full-canvas frames and is reported. Files stay on your device.",
"experience": {
"automatic": false,
"single": false,
"inputMaxLength": 1000000,
"inputMode": "text",
"label": "Your text",
"placeholder": "Type or paste your input…",
"help": "Up to 1,000,000 characters. Review the settings before running.",
"helpParts": [
"Up to 1,000,000 characters.",
"Review the settings before running."
],
"action": "Resize GIF"
},
"mode": "explicit",
"interactive": false
},
"execution": "POST /api/v1/tools/resize-gif/run",
"api": {
"id": "resize-gif",
"name": "Resize GIF",
"category": "image-tools",
"description": "Resize every frame of a GIF with optional aspect-ratio locking while preserving frame count, delay values and playback count.",
"notes": "Processed by the local, self-hosted engine. No third-party conversion service is used. ",
"human_path": "/en/image-tools/resize-gif/",
"method": "POST",
"endpoint": "/api/v1/tools/resize-gif/run",
"schema_url": "/api/v1/tools/resize-gif",
"input_schema": {
"type": "object",
"additionalProperties": false,
"properties": {
"input": {
"type": "string",
"maxLength": 1000000,
"default": "",
"description": "Plain text input. File tools use files instead unless otherwise documented."
},
"options": {
"type": "object",
"additionalProperties": false,
"properties": {
"width": {
"type": "number",
"description": "Width (pixels)",
"default": 480.0,
"minimum": 16,
"maximum": 1920,
"multipleOf": 1
}
}
},
"files": {
"type": "array",
"maxItems": 1,
"items": {
"type": "object",
"required": [
"name",
"base64"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Filename only, no path."
},
"mime": {
"type": "string",
"maxLength": 150
},
"bytes": {
"type": "integer",
"minimum": 0,
"description": "Optional decoded byte count; must match content if supplied."
},
"base64": {
"type": "string",
"contentEncoding": "base64",
"description": "File bytes as padded base64. Use the tool-specific limits.files_bytes value for the total decoded input size."
}
}
}
}
}
},
"output_schema": {
"type": "object",
"required": [
"tool",
"result"
],
"properties": {
"tool": {
"type": "string"
},
"result": {
"type": "object",
"required": [
"text",
"files"
],
"properties": {
"text": {
"type": [
"string",
"null"
]
},
"data": {
"description": "Parsed JSON when the textual result is JSON."
},
"name": {
"type": "string"
},
"mime": {
"type": "string"
},
"files": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"mime",
"bytes",
"base64"
],
"properties": {
"name": {
"type": "string"
},
"mime": {
"type": "string"
},
"bytes": {
"type": "integer"
},
"base64": {
"type": "string",
"contentEncoding": "base64"
}
}
}
}
}
}
}
},
"processing": "Server; self-hosted native engine, no external conversion service",
"limits": {
"request_bytes": 31457280,
"input_characters": 1000000,
"files_bytes": 20971520,
"max_files": 1,
"timeout_seconds": 90
}
},
"agent_processing": "Server; self-hosted native engine, no external conversion service",
"browser_agent": {
"supported": true,
"name": "run_current_tool",
"discovery": "WebMCP on the human page in a supporting browser",
"verification": "See audit/API-AUDIT.md; availability is not verification"
}
}Page guide
Resize every frame of a GIF with optional aspect-ratio locking while preserving frame count, delay values and playback count.
How to use Resize GIF
- Choose one GIF, enter a width and choose whether to keep the aspect ratio.
- If the aspect ratio is unlocked, enter the height; then choose palette, dithering and transparency settings.
- Compare both animations and the actual dimensions, then download the resized GIF and JSON report.
Useful next steps
Choose dimensions within the resource limits
Width is 16 to 1920 pixels. Keeping the aspect ratio derives height from the original image; unlocking it allows a height of 16 to 1920 pixels and may stretch the image. The result must remain within 1920 pixels per side and 16 million decoded frame pixels.
Resampling can change edge colors and alpha
Lanczos scaling resamples each fully composited frame. GIF output uses a palette and binary transparency, so soft edges can change with the alpha threshold and dithering. All frames, source GIF delay values, playback count and pixel-aspect metadata are retained.