
Claude Gif Optimize
- 2 installs
- 22 repo stars
- Updated April 10, 2026
- agricidaniel/claude-gif
claude-gif-optimize is a Claude Code sub-skill that reduces GIF file size to fit platform limits using a multi-strategy optimization chain.
About
claude-gif-optimize is a Claude Code sub-skill that reduces GIF file size while preserving visual quality. It applies a multi-strategy chain of gifsicle lossless and lossy compression, color reduction, dimension reduction, frame-rate reduction, and dithering changes, iterating until a target size is met. Developers use it to fit a GIF within platform limits like Discord, Slack, Twitter, or a custom byte budget.
- Multi-strategy GIF size optimization
- Auto-fits Discord (256KB), Slack (500KB), Twitter (15MB), web (2MB)
- Iterative chain: lossless, lossy, color, dimension, frame-rate reduction
Claude Gif Optimize by the numbers
- 2 all-time installs (skills.sh)
- Ranked #1,166 of 1,335 Generative Media skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
claude-gif-optimize capabilities & compatibility
- Capabilities
- gif optimize · gif compress · color reduction · platform sizing
- Use cases
- image generation
What claude-gif-optimize says it does
Optimize GIF file size and quality. Multi-strategy optimization: gifsicle lossy compression, color reduction, dimension reduction, frame rate reduction, dithering changes.
Platform auto-fit for Discord (256KB), Slack (500KB), Twitter (15MB), web (2MB).
npx skills add https://github.com/agricidaniel/claude-gif --skill claude-gif-optimizeAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2 |
|---|---|
| repo stars | ★ 22 |
| Last updated | April 10, 2026 |
| Repository | agricidaniel/claude-gif ↗ |
What it does
Shrink a GIF to fit a platform size limit or byte budget using an iterative multi-strategy optimizer.
Who is it for?
Fitting a GIF under a platform size limit or a custom byte budget.
Skip if: Creating or converting GIFs from other sources.
When should I use this skill?
You say optimize gif, reduce gif size, compress gif, or gif too large.
What you get
A GIF compressed to the target size while preserving as much visual quality as possible.
- optimized GIF within the target size
By the numbers
- Discord 256KB, Slack 500KB, Twitter 15MB, web 2MB targets
- lossy compression saves 10-40%
Files
claude-gif-optimize -- GIF Size Optimization
Multi-strategy GIF optimizer that iteratively reduces file size while preserving visual quality. Targets specific platform size limits or custom byte budgets.
Pipeline Overview
Analyze GIF --> Choose Strategy --> Apply --> Check Size --> Iterate if Needed --> ReportStep-by-Step Procedure
1. Read Reference
Before optimizing:
Read ~/.claude/skills/claude-gif/references/gif-optimization.md
Read ~/.claude/skills/claude-gif/references/platform-specs.md2. Analyze Current GIF
# File size
stat -c%s INPUT.gif
# Frame count, dimensions, duration
ffprobe -v error -show_entries stream=width,height,nb_frames,r_frame_rate,duration \
-show_entries format=duration,size -of json INPUT.gif
# Detailed frame info
gifsicle --info INPUT.gif | head -20Record baseline: file size, dimensions (WxH), frame count, duration, FPS.
3. Determine Target
Platform auto-detection (from user's words):
| User Says | Target Size | Preset |
|---|---|---|
| "for Discord", "Discord" | 256 KB | discord |
| "Discord Nitro" | 50 MB | (custom) |
| "for Slack" | 500 KB | slack |
| "for Twitter", "for X" | 15 MB | |
| "for Reddit" | 20 MB | (custom) |
| "for GitHub", "README gif" | 10 MB | (custom) |
| "for email" | 1 MB | (custom) |
| "for web", "website" | 2 MB | web |
| "small as possible" | minimize | aggressive |
| Specific number (e.g., "under 1MB") | parse number | custom |
4. Optimization Chain
Apply strategies in order from least to most destructive. Stop when target size is reached.
Strategy 1: Gifsicle Lossless Optimization
gifsicle -O3 --no-comments --no-names INPUT.gif -o OPTIMIZED.gifTypical savings: 5-15%. Always apply first.
Strategy 2: Gifsicle Lossy Compression
gifsicle -O3 --lossy=30 INPUT.gif -o OPTIMIZED.gif # Light (barely visible)
gifsicle -O3 --lossy=80 INPUT.gif -o OPTIMIZED.gif # Medium (some artifacts)
gifsicle -O3 --lossy=150 INPUT.gif -o OPTIMIZED.gif # Heavy (visible artifacts)
gifsicle -O3 --lossy=200 INPUT.gif -o OPTIMIZED.gif # Maximum (significant artifacts)Start with --lossy=30, increase by 30 until target is met. Typical savings: 10-40% depending on level.
Strategy 3: Color Reduction
gifsicle --colors 192 -O3 INPUT.gif -o OPTIMIZED.gif # Slight reduction
gifsicle --colors 128 -O3 INPUT.gif -o OPTIMIZED.gif # Moderate
gifsicle --colors 64 -O3 INPUT.gif -o OPTIMIZED.gif # Significant
gifsicle --colors 32 -O3 INPUT.gif -o OPTIMIZED.gif # Heavy (posterization)Typical savings: 10-30%. Works best on GIFs with many similar colors.
Strategy 4: Dimension Reduction
Re-encode at smaller dimensions via FFmpeg two-pass:
bash ~/.claude/skills/claude-gif/scripts/gif_convert.sh \
--input INPUT.gif \
--width NEW_WIDTH \
--fps ORIGINAL_FPS \
--output OPTIMIZED.gif \
-yDimension scaling guide:
- Current 640px --> 480px (43% fewer pixels)
- Current 480px --> 320px (56% fewer pixels)
- Current 320px --> 240px (44% fewer pixels)
- Each step roughly halves file size.
Strategy 5: Frame Rate Reduction
Re-encode with lower FPS:
bash ~/.claude/skills/claude-gif/scripts/gif_convert.sh \
--input INPUT.gif \
--fps NEW_FPS \
--width CURRENT_WIDTH \
--output OPTIMIZED.gif \
-yFrame rate reduction guide:
- 20fps --> 15fps (25% fewer frames)
- 15fps --> 10fps (33% fewer frames)
- 10fps --> 8fps (20% fewer frames)
- Below 8fps looks noticeably choppy.
Strategy 6: Frame Dropping (gifsicle)
Remove every Nth frame:
# Keep only even-numbered frames (drops 50%)
gifsicle INPUT.gif --unoptimize $(seq -f '#%g' 0 2 $(gifsicle --info INPUT.gif | grep -oP '\d+ images' | grep -oP '\d+')) -O3 -o OPTIMIZED.gifUse sparingly -- creates uneven timing.
Strategy 7: Dither Change (Re-encode)
Switch dithering algorithm for smaller output:
bash ~/.claude/skills/claude-gif/scripts/gif_convert.sh \
--input INPUT.gif \
--dither "bayer:bayer_scale=3" \
--stats-mode diff \
--width CURRENT_WIDTH \
--fps CURRENT_FPS \
--output OPTIMIZED.gif \
-ybayer + diff mode often produces smaller files than floyd_steinberg + full.
5. Automated Optimization Script
For automated multi-strategy optimization:
~/.video-skill/bin/python3 ~/.claude/skills/claude-gif/scripts/gif_optimize.py \
--input INPUT.gif \
--target-size 256 \
--output ~/Documents/gif_output/optimized.gifThe script applies strategies in order, checking size after each step.
6. Before/After Report
Always report results:
Optimization Report
-------------------
Original: 1,245 KB (640x360, 60 frames, 20fps, 3.0s)
Optimized: 248 KB (320x180, 40 frames, 13fps, 3.0s)
Reduction: 80.1%
Applied strategies:
1. Gifsicle -O3 --lossy=30 --> 1,058 KB (-15%)
2. Colors 128 --> 892 KB (-16%)
3. Dimensions 640->320 --> 312 KB (-65%)
4. Gifsicle --lossy=80 --> 248 KB (-21%)
Target: Discord (256 KB) -- PASSPlatform Auto-Fit Algorithm
When targeting a specific platform:
1. Apply gifsicle -O3 --lossy=30
2. If still over target:
a. Reduce colors to 128
3. If still over target:
b. Reduce width by one step (640->480->320->240)
4. If still over target:
c. Increase lossy to 80
5. If still over target:
d. Reduce FPS by one step (20->15->10->8)
6. If still over target:
e. Increase lossy to 150, colors to 64
7. If still over target:
f. Reduce width by another step
8. If still over target after all steps:
Report failure, suggest shorter duration or different contentQuality Floor
Never go below these minimums (the GIF becomes unusable):
- Width: 160px
- FPS: 6
- Colors: 16
- Lossy: 200
If the target cannot be reached without going below quality floor, inform the user and suggest trimming the duration or splitting into multiple GIFs.
Error Handling
| Error | Cause | Fix |
|---|---|---|
| gifsicle: no such file | gifsicle not installed | sudo apt install gifsicle |
| Output larger than input | Re-encoding added overhead | Use gifsicle-only optimization (no FFmpeg) |
| Visible banding | Too few colors | Increase colors, switch to floyd_steinberg dither |
| Flickering frames | lossy too aggressive | Reduce lossy value |
| Still too large | Content inherently complex | Suggest shorter duration, smaller dimensions, or video format instead |
Related skills
FAQ
What platforms does it target?
It auto-fits Discord (256KB), Slack (500KB), Twitter/X (15MB), web (2MB), and custom byte budgets.
How does it compress?
It applies strategies from least to most destructive: gifsicle lossless, lossy compression, color reduction, dimension reduction, and frame-rate reduction.