# Photo to Animated GIF > Turn an ordered set of photos into a looping animated GIF. Upload a ZIP of photos, choose frame dimensions, timing and fit, and download an animated GIF. A shared deterministic encoder uses a fixed 256-color palette, with no external service. Part of usefulweb.app (https://usefulweb.app/). Results are deterministic calculations from the inputs and the listed assumptions; the API returns exactly what the web page shows. ## Use it - Human interface: https://luminagifmaker.usefulweb.app/ (interactive tool at https://luminagifmaker.usefulweb.app/tool) - JSON API: POST https://luminagifmaker.usefulweb.app/api/v1/calculate with a JSON object of inputs (schema: https://luminagifmaker.usefulweb.app/api/v1/tool) - OpenAPI: https://luminagifmaker.usefulweb.app/openapi.json - MCP (Streamable HTTP): https://luminagifmaker.usefulweb.app/mcp - tool `lumina_gif_maker` ## Inputs - images (file, required): Photo or ZIP of photos - Up to 24 PNG, JPEG, WebP or GIF images (first frame). ZIP order is preserved. Decoded total: 32 MP; each photo: 16 MP. - width (integer): Frame width (px) - height (integer): Frame height (px) - delay (integer): Milliseconds per frame - loop (boolean): Repeat forever - fit (select): Photo fit - background (text): Background (#RRGGBB) ## Method - Archive entry order is playback order. Each image is auto-oriented, centered, resized and flattened on the chosen background. - Frame duration is rounded to the GIF time unit of 10 milliseconds. The limit is 24 frames and 12 million total frame pixels. - GIF uses a fixed RGB332 palette (256 colors), no transparency and no adaptive photographic quantization. File sizes may be larger than optimized GIF encoders.