LinkToLooks · Guides · Creator Desk
Creator Desk
The photo you need before you can link a product
Nearly every listing ships an image. Fetching 200 of them shows how many load, how big they really are, and how one retailer answers ‘no’ with a valid JPEG.
Part of: For creators
Almost every affiliate listing ships an image — 5,016 of 5,040 in this pull, 99.5%. Fetching 200 of them found 89.0% still resolve, a median width of 800 pixels, and only 34.8% large enough to fill an Instagram post without upscaling.
And the size you are given is not always the size that exists. On one retailer’s CDN the dimensions are written into the URL, and asking for a bigger one sometimes works, sometimes returns a smaller master, and sometimes returns a grey No Image Available graphic — at HTTP 200, as a valid JPEG, indistinguishable from success to anything that checks status codes.
Nearly every listing has one
5,016 of 5,040 rows carried an image URL. Across 61 distinct image hosts, the field is one of the most reliably populated in the whole feed — more reliable than the barcode (41.9%) and more reliable than a sale price (35.8%).
Eighty of them, 1.6%, are served over plain http rather than https. We tested seventeen of those across all three hosts and every one answered over https too, so this is a feed that has not been updated rather than a host that cannot do it. If you are embedding a feed image on your own site, rewrite the scheme: a mixed-content image is a broken image in a modern browser.
One in nine does not load
We fetched 200 image URLs, sampled up to four per advertiser so that one large retailer could not decide the answer. 178 returned a decodable image. The 22 failures were 13 connection or DNS errors, 8 HTTP errors and one URL the library refused to parse at all.
Failures cluster by host, exactly like every other defect we have measured in these feeds: three from one manufacturer’s own site, two each from four others. This is consistent with a separate study of ours that re-requested twelve named hosts and found seven still failing.
One warning from our own run: a host that fails from a script is not necessarily down. We hit repeated getaddrinfo failures on one host that returned HTTP 200 to curl in the same seconds. Retry, and retry with a different client, before you tell an audience a retailer is broken.

How big they actually are
| Measure | Value |
|---|---|
| Median width | 800 px |
| 10th percentile width | 368 px |
| 90th percentile width | 1,650 px |
| Largest | 4,500 px |
| Smallest | 180 px |
| Square images | 130 of 178 (73.0%) |
| Under 500 px on a side | 63 (35.4%) |
| Under 300 px on a side | 14 (7.9%) |
| At least 1,080 px on both sides | 62 (34.8%) |
178 images that resolved, of 200 fetched, 7 September 2026.
1,080 pixels is the number that matters if you are making a post rather than a web page, and only a third of these clear it. A 400-pixel packshot upscaled to fill a phone screen looks exactly like what it is.
| Content type served | Images |
|---|---|
| image/jpeg | 85 |
| image/webp | 70 |
| image/avif | 11 |
| image/png | 4 |
| binary/octet-stream | 4 |
| image/jpg (not a real type) | 3 |
| image/gif | 1 |
The four served as binary/octet-stream are real images with the wrong label, and the three image/jpg are a spelling that does not exist in the standard. Both decode fine and both break tools that trust the header. AVIF and WebP together are 45% of the sample, which is worth knowing if your editor is older than your feed.
Image size is a retailer property
The median width is not a property of products. It is a property of who is selling them, and the range between retailers is more than eighteenfold.
| Retailer | Images measured | Median width |
|---|---|---|
| goop | 3 | 180 px |
| Knetbooks.com | 3 | 187 px |
| Belk | 4 | 282 px |
| Wayfair North America, Perigold, AllModern, Joss & Main | 3–4 each | 400 px |
| Woot! | 4 | 588 px |
| Blain Farm & Fleet | 4 | 600 px |
| Macy’s | 4 | 1,200 px |
| TikTok Shop US – Marketplaces | 4 | 1,461 px |
| Temu | 4 | 2,000 px |
| Desigual | 3 | 3,392 px |
Advertisers with at least three images measured.
Four storefronts landing on exactly 400 pixels is not a coincidence about photography. It is one image pipeline with one default, and that default is the thing standing between you and a usable picture.
The size in the URL is negotiable, up to a point
Those 400-pixel URLs carry the dimensions in the path, in the form resize-h400-w400. So we changed one thing and re-fetched.
| Asked for | Kettle | Standing desk | Area rug | Coffee table |
|---|---|---|---|---|
| 400 | 400×400 | 400×400 | 400×400 | 400×400 |
| 800 | 800×800 | 800×800 | 800×800 | 800×800 |
| 900 | placeholder | placeholder | placeholder | 900×900 |
| 1000 | placeholder | 1000×1000 | placeholder | placeholder |
| 1200 | 1200×1200 | 1000×1000 | 1200×1200 | 1200×1200 |
| 1400 | placeholder | placeholder | placeholder | placeholder |
Four products, one host, one variable changed. Each cell re-tested four times two seconds apart; every result was stable, so this is not a rendering race.
So the parameter is real: 400, 800 and 1200 returned genuine, distinct images for all four products, which is three times the resolution the feed hands you. But 900 worked for one product and not three, and 1000 worked for one and not three. There is no single ceiling; each image has its own available sizes.
And the failure is invisible. Every “placeholder” cell above is HTTP 200, image/jpeg, 37,317 bytes, a perfectly valid file — and byte-for-byte identical across six different products, which is how we caught it. It is this:

Our own first pass reported “the parameter is live” on the strength of twelve URLs that all came back 513×321. Twelve different products do not share a master image size to the pixel; hashing the bytes showed one file answering all twelve. If you automate this, compare hashes, not status codes.
Keep checking
Having the file is not having the right
Every image in this study is the retailer’s, served from the retailer’s own host. Being able to fetch one tells you nothing about whether you may republish it.
We are not lawyers and this is not advice. What we can tell you is what we do on this site, and why: we display the retailer’s image from the retailer’s own URL, with a visible credit naming the retailer, and we do not re-host, crop or edit it. Many affiliate programmes explicitly permit product imagery for promoting their products — and the permission lives in the programme terms you accepted, which is the document to read before you put a packshot in a post.
What we have never done, and will not: imply we photographed something we did not, or that we have handled a product we have only priced.
What to check before you use one
- Fetch it. One in nine did not load in this sample. A broken image in a post is worse than no image.
- Read its real dimensions, not the ones the feed claims. They are frequently different, and the feed field is the one that is wrong.
- If the URL carries a size, try a bigger one — then confirm you got a different picture and not a placeholder.
- Rewrite
httptohttps. All seventeen we tested answered on both. - Check the aspect ratio against where it is going. 73% are square, which is fine for a grid and wrong for a story.
- Credit the retailer visibly and keep the link to the listing next to it.
- Re-check before a big push. Image hosts rot; we have measured hosts that stayed broken across weeks.
What we did not measure
- Whether the picture shows the product. We measured files, not subjects. A wrong-variant photograph passes every test here.
- Whether the image is a packshot or a lifestyle shot. Not machine-readable from the feed, and we did not classify them.
- Licensing. Nothing in this data speaks to usage rights, and we did not read any programme’s terms for this piece.
- Whether the size parameter behaves the same for other hosts. Only one of the four hosts we examined carries a size token in its URLs at all.
Method
Scope, so this can be repeated rather than believed: root shoppingProducts on the CJ product API, filtered on keywords and advertiserCountries: ["US"], four pages of 100 rows per seed, deduplicated on advertiser plus title plus destination link, then post-filtered on each row’s own targetCountry. Asking price is salePrice where a row carries one and price otherwise; peer-to-peer asks of $500 or more and repdigit asks are dropped as seller placeholders. 5,040 US rows, 81 advertisers, 7 September 2026.
The eighteen seeds, published so the pull can be re-run: electric kettle, air fryer, office chair, standing desk, mechanical keyboard, backpack, sunglasses, leather boots, wool coat, area rug, duvet cover, coffee table, humidifier, robot vacuum, cordless drill, sleeping bag, electric toothbrush, espresso machine.
200 image URLs were sampled with a fixed random seed, at most four per advertiser, and fetched with a browser user agent. Dimensions were read from the fetched bytes with Pillow; nothing was taken from the feed. Failures were retried three times and then retried through curl before being counted. The scripts are scratch/aft_imgs_0907.py and scratch/aft_imgparam3_0907.py in our repository.
More on what a feed gives you
Frequently asked
Do affiliate listings include product images?
Almost always. 5,016 of 5,040 listings in this pull carried an image URL, across 61 distinct hosts.
How many affiliate product images actually load?
178 of 200 fetched, or 89.0%. The failures were 13 connection or DNS errors, 8 HTTP errors and one unparseable URL, and they cluster by host rather than being spread evenly.
Are feed images big enough to post?
Often not. The median width was 800 pixels and only 34.8% were at least 1,080 pixels on both sides, which is the size a full Instagram post wants.
Can you request a larger version of a product image?
Sometimes. On one retailer's CDN the size is written into the URL and 400, 800 and 1200 all returned genuine images. But other sizes return a No Image Available placeholder as a valid JPEG at HTTP 200.
Can a creator use a retailer's product photo in a post?
That is a question for the affiliate programme's terms, not for this data. We display retailer images from the retailer's own URL with a visible credit and do not re-host or edit them.
Last verified 7 September 2026 against 200 product images fetched and measured, from 5,016 image URLs across 61 hosts.
How this page was made. Drafted with AI (Claude); not yet independently re-checked. How we work