Photography guide
WebP is missing from one recorded list, and GIF is the only format with a separate animated case
This page reports what two first-party marketplace rule modules in this repository held on 2026-08-18, and what that means for a WebP or GIF export you already have. It is a record of our modules, not a statement about what either marketplace enforces today.
The two records differ in one direction only
Two first-party rule modules in this repository describe image formats for two channels. This page reads them as they stood on 2026-08-18. Everything below is a report on those modules; none of it is a claim about what a marketplace permits today, or about how a marketplace's own checker responds to a file.
Read side by side, they differ in one direction. The Etsy module carries a closed list of accepted formats, and WebP is not among them. The Shopify module carries a sentence that names WebP, and that names the animated form of it as well.
That difference changes the question rather than only the answer. Where the format is named, there is a static file and an animated file and the record speaks to both. Where the format is absent from the list, there is no static-versus-animated distinction to make, because neither one is in the list. The one format that carries both cases on the Etsy side is GIF.
One consequence is worth stating once: feed a WebP to the browser resizer on this site and what comes back is a JPEG (resize.ts:104, read 2026-08-18) — that is the resizer's own output rule, not a conversion this app performs on any marketplace's behalf.
What each module records
File and line references point at this repository, and each was read on 2026-08-18.
- The Etsy list is closed, and WebP is not in it.
- ETSY_ALLOWED_FORMATS = ['jpg','jpeg','gif','png','svg','heic'] (etsy.ts:115). Alongside it the module carries the evidence sentence "These are the only image file types Etsy supports" (etsy.ts:126).
- Six entries in that array, five formats.
- 'jpeg' is an alias, normalised to 'jpg' before evaluation (evaluate.ts:56). Counting it as a separate format would overstate the list by one.
- The Shopify record names WebP directly.
- "Shopify also accepts PSD, TIFF, BMP, GIF, SVG, HEIC, and WebP. Animated versions of GIF and WebP files are also supported." (shopify.ts:80). The sentence is reproduced as it stands in the module, and the formats it names are carried across by name.
- That Shopify rule is classified as informational in our module.
- It carries kind = 'informational' (shopify.ts:76). It is a note in the record. It is not a requirement, and nothing here turns it into a guarantee.
- The GIF exception applies to animation, not to the container.
- A static .gif is inside the accepted Etsy list (etsy.ts:115); only the animated form is refused. WebP has no matching split, because the format is not in that list.
Format by format, as recorded on 2026-08-18
The middle column is membership in the recorded Etsy array (etsy.ts:115). The right column says whether the recorded Shopify sentence (shopify.ts:80) names the format. A format that sentence does not name is not covered by that sentence, which is not the same as a refusal.
| Format | In the recorded Etsy list | Named in the recorded Shopify sentence |
|---|---|---|
| JPG (with 'jpeg' as an alias) | Yes | Not named |
| PNG | Yes | Not named |
| GIF, static | Yes | Yes |
| GIF, animated | No — the animated form is refused | Yes, named as animated |
| SVG | Yes | Yes |
| HEIC | Yes | Yes |
| WebP, static | No | Yes |
| WebP, animated | No — the format is absent, so no animation distinction forms | Yes, named as animated |
| PSD | No | Yes |
| TIFF | No | Yes |
| BMP | No | Yes |
GIF is the only format here with a separate animated case
For most format words in these records there is nothing to separate: the word is either in the recorded list or it is not. GIF is the exception, and the exception is narrow. The container is accepted — .gif is inside ETSY_ALLOWED_FORMATS (etsy.ts:115) — and only the animated form is refused.
So an animated file and a still file with the same extension are treated differently. If you have an animation you want to keep, the record does not ask you to give up the format; it identifies the animation as the part that is refused. A still frame exported from it stays inside the recorded list.
WebP is not handled the same way, and not because animation is judged differently. WebP is absent from the Etsy array, so no animation distinction arises on that side. On the Shopify side the recorded sentence names WebP, and names animated versions of GIF and WebP together (shopify.ts:80).
Before you convert anything
- Name the channel first. The two records are asymmetric, so a format decision made for one of them does not transfer to the other.
- Check the format word itself: 'webp' does not appear in the recorded Etsy array (etsy.ts:115), and the recorded Shopify sentence names it (shopify.ts:80).
- If the file is a GIF, decide whether it is animated. The container is inside the recorded Etsy list; the animated form is what is refused.
- Do not count 'jpeg' as a format of its own. It is an alias for 'jpg' and is normalised before evaluation (evaluate.ts:56).
- If the file is a HEIC, read the list before converting — 'heic' is inside the recorded Etsy array (etsy.ts:115).
- Treat the Shopify sentence as a note in our record, not as a requirement.
- Note the date on this record. It is what the repository held on 2026-08-18.
What this page does not settle
- What Etsy or Shopify permit today. This is a dated record of our own modules, not live marketplace policy.
- How a marketplace's own checker responds when it receives a file. Our modules record the rules we hold, not the evaluation performed at the marketplace.
- Which format loads faster, ranks better or converts better. Nothing in this record speaks to any of that, so nothing here says it.
- Which files this app itself accepts — JPEG, PNG and WebP, decided on your device before an upload begins — is settled on a separate page, linked below.
- Transparent PNGs on Etsy, and the order of work that avoids the problem a cutout creates, belong to the Etsy sellers page linked below.
- The two different minimums for a jewelry photo and a model photograph are settled on the base photo page linked below; no pixel figure is stated here.
- The output behaviour of the browser resizer beyond the single consequence stated above.
Questions
Can I upload a WebP or an animated GIF to Etsy and to Shopify?
In the record this repository held on 2026-08-18 the two answers differ. The Etsy accepted-format array does not contain webp (etsy.ts:115), so a WebP is outside that list whether it is static or animated. The Shopify module carries a sentence naming WebP, and naming animated versions of GIF and WebP (shopify.ts:80), recorded as an informational rule (shopify.ts:76). For GIF on the Etsy side the container is accepted and the animated form is refused. This describes our record, not current marketplace policy.
Is a static GIF treated the same as an animated one?
Not in the recorded Etsy list. The format itself is inside ETSY_ALLOWED_FORMATS (etsy.ts:115) and only the animated form is refused, so the exception applies to animation rather than to the container.
Does the recorded Etsy list accept HEIC?
'heic' is one of the entries in ETSY_ALLOWED_FORMATS (etsy.ts:115). The array has six entries in all, but 'jpeg' is an alias normalised to 'jpg' (evaluate.ts:56), so it stands for five distinct formats: JPG, GIF, PNG, SVG and HEIC.
Does this page tell me what the marketplaces allow today?
No. It reports what our first-party rule modules held on 2026-08-18, with the file and line for each statement. What a marketplace permits now, and how its own checker responds to a given file, is outside what this record can establish.