Does compression remove the AI tag Merchant Cent...

Does compression remove the AI tag Merchant Center asks for? 10 tools, WordPress and Iminify tested

By SJ
8 min read
Ten squares: 4 filled for tools that kept the IPTC AI tag at their defaults, 6 hollow for tools that dropped it, beside the title Does compression remove the AI tag?
On this page

Google's Merchant Center help says: "Don't remove embedded metadata tags such as trainedAlgorithmicMedia from such images. All AI-generated images must contain the IPTC DigitalSourceType trainedAlgorithmicMedia tag." (Merchant Center's help page is dated February 2024; we read it on 26 October 2026.) So we put that tag on two AI images, a harbour scene from Nano Banana 2 (a JPEG) and a bakery illustration from the original Nano Banana (a PNG), ran them through 42 command-line runs and Iminify, added three larger JPEGs for a WordPress 7.1.3 site, and read the tag back with ExifTool each time.

Each tool's default decides whether the tag survives, and neither lossy nor lossless predicts it. Of the ten tools in our table, four keep the tag at their defaults and six drop it, and for nine of them we found an option that flips that. Iminify, which is our product, lost it at every level that compresses: it survived in 6 of 51 uploads, and those six came back byte for byte unchanged. One ExifTool command puts the tag back for 514 to 568 bytes and, on the nine files we checked, leaves every pixel alone.

Google asks for the tag, and the Gemini files we generated didn't have it

The tag is an XMP property. The IPTC Photo Metadata Standard defines Digital Source Type as Iptc4xmpExt:DigitalSourceType, and its value is a URI. For a picture a model made it is http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia, which IPTC names "Created using Generative AI". Google's image metadata page, last updated 10 December 2025, lists that value and three more it supports. Merchant Center's pages say what to keep, not what happens to a listing without the tag, and we didn't test that.

Our files come from the Nano Banana sample set we generated through the Gemini API on 23 September 2026 (post 15 measures 52 of its 67 files). None of the 67 has an XMP packet. Each carries a C2PA manifest, a different object that post 19 covers, and the manifest's actions name the same URI.

Google's image generation page, updated 9 October, lists Nano Banana 2.1 as the current model and calls Nano Banana 2 the previous generation. Two 1K files from 2.1, generated on 26 October, carry no XMP either.

So we added the tag with ExifTool 13.25 to the files we tested. That changes the file, and post 19 found that every file that differed from its source by even a byte failed verification, so we don't count on their manifests verifying. This post doesn't test their manifests or other generators.

Four of the ten tools keep the tag by default

We ran the harbour JPEG or the bakery PNG, whichever the tool reads, through each tool below, with its defaults and with the option that changes the result, and read every output back with exiftool -s3 -a -XMP-iptcExt:DigitalSourceType. jpegtran has two rows because libjpeg-turbo and mozjpeg each ship their own build.

Tool Drops the tag Keeps the tag
ImageMagick 7.1.1-43 with -strip by default
avifenc 1.2.1 with --ignore-xmp by default
pngquant 2.18.0 with --strip by default
optipng 0.7.8 with -strip all by default
jpegtran, libjpeg-turbo 2.1.5 by default, and with -copy none with -copy all
jpegtran, mozjpeg 4.1.5 by default, and with -copy none with -copy all
cwebp 1.5.0 by default, and with -metadata none with -metadata xmp or all
zopflipng 1.0.3 by default with --keepchunks=iTXt
Pillow 11.1.0 by default with xmp=im.info["xmp"] in save(), for JPEG and WebP
cjpegli, jpegli commit 031a0077 in all three runs no option tried

Lossy or lossless doesn't decide it. jpegtran's lossless repack dropped the tag, and ImageMagick's lossy WebP kept it. zopflipng's option names iTXt, the chunk where a PNG keeps XMP. A JPEG keeps it in an APP1 segment and a WebP in an XMP chunk.

Add the option in the right-hand column and run the ExifTool command below last. A later optimizer, a CDN or a plugin can still drop the tag.

Iminify drops it at every level that compresses

On this test Iminify loses. We uploaded six tagged files through its API on 26 October 2026: the harbour JPEG, the bakery PNG, the WebP that cwebp made from the harbour JPEG, and three of Iminify's own outputs tagged again. That made 51 uploads at its four levels (None, Lossless, Smart and Ultra), with Keep EXIF on and off, and the output set to the upload's own format, WebP, AVIF, JPG or Auto.

The tag survived in 6 of the 51. All six were level None with Keep EXIF on and no resize or format change, and each came back already-optimized, byte for byte: the harbour JPEG three times, the bakery PNG twice and the WebP once. Nothing was compressed. The other 45 lost it: at Lossless and Ultra in the upload's own format, at Smart in every output we tried, each with Keep EXIF on or off, and at level None as soon as the upload was resized, converted or run with Keep EXIF off. At Smart the harbour JPEG went from 1,040,441 to 296,954 bytes, and the result had no tag.

Keep EXIF keeps EXIF only, and a Smart upload with it on returned the same bytes as one with it off. Post 19 saw level None return a JPEG unchanged in September, as a guest on the website. Through the API on 26 October that happened only with Keep EXIF on. With it off, the upload came back completed without the tag.

Auto picked AVIF for the bakery PNG, at 13,637 bytes. Merchant Center's image_link page lists JPEG, WebP, PNG, GIF, BMP and TIFF and no AVIF (read 26 October), so choose the format yourself when the file is for a feed, for example WebP at Smart.

Put the tag back with one command

ExifTool comes as a Windows executable and as a Perl script, and it can write the property into JPEG, PNG, WebP and AVIF files. Run it after your last optimizer, in a folder of finished AI-made images (for Iminify results, the unzipped download). It edits the files in place:

exiftool -api Compact=NoPadding -XMP-iptcExt:DigitalSourceType=http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia -overwrite_original *.webp

Swap *.webp for *.jpg, *.png or *.avif. To read the tag back from one file:

$ exiftool -XMP-iptcExt:DigitalSourceType bakery.webp
Digital Source Type             : http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia

We ran it on nine Iminify outputs that had no tag. From the harbour JPEG: the Smart JPG, WebP and AVIF and the Lossless JPG. From the bakery PNG: the Smart PNG, WebP, AVIF and JPG and the Lossless PNG. The tag read back on all nine, and ImageMagick decoded the same pixels before and after. ExifTool 13.25 and 13.59, the current release on exiftool.org, gave the same byte counts. We ran the Perl release, not the Windows executable.

Without -api Compact=NoPadding, ExifTool pads the XMP block: the tag cost 2,938 bytes in a WebP, 2,944 in a JPEG and 2,992 in an AVIF. With it, 514, 520 and 568 bytes, under 0.2 percent of the harbour JPEG's 296,954-byte Smart JPG. A PNG costs 521 either way. The bakery PNG's 13,637-byte Smart AVIF became 14,205 bytes with -api Compact=NoPadding and 16,629 without.

Use the value that matches how the image was made. Merchant Center's AI-generated content page lists trainedAlgorithmicMedia for a model-made image, compositeSynthetic for a composite with synthetic elements and algorithmicMedia for one made purely by an algorithm. Don't put any of them on a photograph no AI made.

A C2PA manifest can't be put back this way. It has to be signed again, which post 19 walks through.

WordPress keeps the upload, and its copies depend on the image library

We uploaded five tagged files to WordPress 7.1.3 through its REST API, so the server made the sizes: the harbour JPEG and the bakery PNG, a 2,048 px and a 5,504 px Nano Banana 2 JPEG, and a 3,000 px JPEG we made by enlarging the 2,048 px one. They went through ImageMagick, which WordPress chose in our PHP 8.3 container, and then through GD, which we forced.

WordPress stored all ten uploads byte for byte, tag included. The copies differ:

Copies WordPress made Tag kept
ImageMagick, JPEG 22 of 22
ImageMagick, PNG 0 of 3
GD, JPEG and PNG 0 of 25

ImageMagick kept the tag in every JPEG copy, the -scaled file WordPress makes above 2,560 px included, and lost it in every PNG copy. GD lost it in every copy. For the two uploads over 2,560 px, the address WordPress returned in the REST response was the -scaled file, so in our GD run the address for a large image had no tag while the stored original did. Which library a site uses is listed in Site Health, under Info and Media Handling, as "Active editor". We didn't test the browser-side resizing that WordPress 7.1 can use in the block editor. Post 10 tested that path with a JPEG carrying GPS coordinates: the browser's copies kept none of them, and the server's copies kept them.

Check the file your feed sends

Whatever you do upstream, the file at your image_link address is the one that has to carry the tag. Download it from the live address and run exiftool -XMP-iptcExt:DigitalSourceType on it.

Three services say something about metadata, and we tested none of them. Shopify's developer forum has a May 2026 thread in which a merchant's AI image kept the tag in the download and lost it on Shopify's CDN. A staff member wrote on 4 September 2026, "it should be fixed now." Fastly's Image Optimizer "will remove all metadata embedded in an image" by default. Its copyright option names five rights fields, not the digital source type, and works only from JPEG to JPEG. ShortPixel removes EXIF, comments, IPTC and XMP by default and keeps all four with Remove EXIF turned off.

Questions this post answers

Share this post

Share on X
Share on Facebook
Share on LinkedIn
Share on Reddit
Share on Hacker News
Email
Copy link
Link copied
Two cards for the same photograph: the JPEG saved at quality 80, 449 KB, score 75.6, and the WebP made from it at quality 90, 531 KB, score 71.3.

Why is my WebP bigger than the JPG? Measured on 40 JPEGs and 4 PNGs

One photograph of our corpus, the Fjord, saved as a JPEG at quality 80 weighed 449,258 bytes. Converted to WebP at quality 90, it weighed 531,474, which is 18% more. Scored against the corpus master it came from (a JPEG saved at quality 92), the bigger file was also the worse picture: 71.3 on SSIMULACRA 2, a score where higher means closer to the master, against 75.6 for the JPEG. Google's WebP FAQ says a WebP can grow larger than its source and names three situations. We measured each on five photographs and four graphics. A WebP comes out bigger when its quality is set too high for the JPEG it came from, when it is lossless, or when a PNG already squeezed to 256 colours goes to lossy WebP. A fourth cause, which the FAQ doesn't list, is that WebP isn't always smaller than a good JPEG even at the same score. Whichever it is, keep the smaller file when the two look alike.

7 min read
Two cards under the title "Do AI images hurt SEO? The file can.": a Gemini 2K picture as delivered, 3.95 MB, largest paint 20.3 s; the same picture resized to 720 wide, 104 KB, 1.4 s, in Lighthouse's mobile test.

Do AI images hurt SEO? What Google's pages say, and what a 2K Gemini picture did to a page

We put Gemini pictures on a plain article page, one size at a time, and ran Lighthouse's mobile test on each. Straight from the generator, the 1K file (1.06 MB) took 6.2 seconds to become the page's largest paint (LCP), the 2K file (3.95 MB) took 20.3 seconds and the 4K file (10.51 MB) took 52.4 seconds. Google's target for that metric is 2.5 seconds. Do AI images hurt SEO? In the Google pages we read, nothing marks an image down for being AI-made. The file is another matter: the same 2K picture, resized and compressed to 104 KB, took 1.4 seconds. Iminify's compressor also drops the C2PA manifest that marks a Gemini file as AI-made, and Google's Merchant Center asks sellers to keep an IPTC tag that says the same.

8 min read
Two white cards on a blue gradient: WebP at quality 75, 35.1 KB, score 68.0, and AVIF at quality 47, 25.5 KB, score 68.8, beside the headline "A quality of 75 ships as WebP 75, or AVIF 47 if enabled".

What image quality does Next.js ship? WebP 75, AVIF 47 if you list it, and by default a 90 becomes 75

We built a Next.js 16.4.3 app with four images on one page, two of them declared with quality={90} and quality={100}. All 36 image addresses in the page's HTML said q=75. We also asked the image endpoint for q=90 directly, and it answered HTTP 400: "q" parameter (quality) of 90 is not allowed. That is Next 16's default: the list of allowed qualities is [75], and the component moves anything else to the nearest entry. This post follows the 75 to the encoder, in WebP and in AVIF if you switch it on, across 867 requests to a self-hosted /_next/image on nine source images. The default WebP puts one of our five photographs at 1080 px above 70, the "high quality" mark on SSIMULACRA 2, a perceptual score. AVIF at the same setting was 36.5 percent smaller across our 27 image and width combinations, and more than 3 points below WebP on score in 8 of them.

7 min read

Try it on your own images

Drop a photograph in, pick Smart, and compare the result with the original before you download. Free, no account needed.