Who runs this site
image-to-gif.com is an independent browser tool maintained by its operator. It is not affiliated with CompuServe, the authors of the GIF specification, or any image-format vendor. The site does not sell user data, run advertising networks, or require an account.
The code and copy were drafted with AI assistance and then checked against the test matrix below. The tests are the part that matters: a claim is kept only if the behavior can be reproduced, and a limitation is stated when it cannot.
What the engine test covers
scripts/engine-test.mjs drives the real page in Chromium,
Firefox, and WebKit. It produces GIFs through the same UI a visitor uses,
downloads the result, and decodes it with modern-gif. The
current suite asserts:
- a three-frame sample produces a GIF89a with three frames, 640×480, and looping on;
- a single JPEG produces a still GIF, with 256 colors and Floyd–Steinberg dithering;
- mixed JPEG, PNG, WebP, and SVG inputs produce the expected frame count;
- a transparent PNG keeps transparent pixels in the decoded GIF;
- ten frames at 320 px produce 320×213, and loop off omits the loop extension;
- 31 files are rejected with a clear error, and a text file is rejected as a non-image.
At the last run, all 24 checks passed across the three engines. A passing test is not a proof that every device will behave the same way; it is evidence that the core path works in the engines available here.
Formats and browsers
The input path was checked with JPEG, PNG, WebP, AVIF, BMP, GIF, SVG, and ICO. SVG and ICO use an image-element fallback because some browsers' bitmap decoders reject them. Animated GIF, WebP, and AVIF inputs use the first frame. HEIC depends on the browser and operating system; when it cannot be decoded, the converter says so and does not upload the file to try again.
EXIF orientation was checked with an orientation-6 JPEG: all three engines returned the rotated dimensions (1800×1200 from a 1200×1800 file). That matters because phone photos often rely on the orientation tag.
What the build checks cover
scripts/verify.mjs checks the static output: required pages,
one H1 per page, canonical host, meta title and description lengths, OG
tags, valid JSON-LD without invented ratings, FAQ schema matching visible
text, HowTo schema matching visible steps, AI crawler rules, sitemap
entries, llms files, dead internal links, image alt text, and the Umami
placeholder count.
scripts/qa-a11y.mjs runs axe-core at WCAG 2 A/AA on the tool,
guides, legal pages, and the result state at desktop and mobile widths.
The last run passed all 38 checks.
Benchmarks and numbers
Timing and file-size numbers on this site come from tests on a specific machine, with a specific photo and frame count. They are labeled as such and are not presented as universal performance claims. A phone, a different image, or a different encoder setting will produce different numbers.
The site does not claim a user count, a third-party award, a review score, or a ranking. Those claims would be unverifiable. If a number appears in a guide, it is either a format constant (for example, 256 colors per GIF frame) or a measured result with the test conditions stated.
What is deliberately not claimed
- That GIF is the best format for every image or animation.
- That a converted photo is visually identical to the source.
- That every browser can decode every input format.
- That a GIF will look the same in every chat app or social platform.
Corrections
If a page is wrong, a test is missing, or a browser behaves differently than described, send the details to the contact page. A useful report includes the browser and version, the operating system, the input format, the settings used, and what happened. Do not send private images unless they are necessary to reproduce the problem.
When a correction is verified, the page's updated date and the relevant test are changed together. The goal is not to look comprehensive; it is to keep the claims and the behavior in sync.