Does removing metadata delete your AI training opt-out?

Every other page on this site treats the tag block as a liability: something written without your consent that describes where you stood, what you were holding and when. This page is about the one case where a field in that same block is something you put there on purpose, addressed not to a human reader but to an automated one. Photo metadata standards now define a machine-readable declaration that says whether your image may be mined or used to train a model. It sits in the same XMP packet as the camera serial number, and a clean sweep does not know the difference.

MetadataWipe rebuilds one JPEG or PNG at a time from decoded pixels, in your browser — no account and no server transfer, and the file never leaves this device.

Open MetadataWipe tool

The audience for this page is different from the usual one. Most privacy advice here is for someone sharing a photo of their life and wanting to share less. This is for someone publishing their own work and wanting to assert more: a photographer, an illustrator, a small studio, anyone whose images go onto a public page where crawlers will find them. For that person, the question is not how do I empty the header. It is which parts of the header am I removing and which parts am I throwing away by accident.

Two signals that share one container

It helps to separate them explicitly, because the word "metadata" flattens the distinction.

Exposure metadata describes you. Coordinates, timestamps, a body serial number, the name of the phone, the editing software, sometimes a person's name in a face tag. This is the material the rest of the site exists to remove. Its value to you after publication is usually zero and its risk is not.

Rights metadata describes your terms. A creator identifier, a copyright notice, a licence URL — and, more recently, a structured statement about automated use. This material is only useful if it stays attached. It is the one part of the block whose whole purpose is to be read by someone else later. The cost of deleting it is covered in general terms on what you lose when you strip photo metadata, which walks through chronology, colour fidelity and your credit line. The data mining declaration is a newer and sharper case, because unlike a credit line it is not merely nice to have — it is the entire mechanism by which an opt-out is expressed at the file level.

Both live in the same physical place. In a JPEG, both the GPS block and the XMP packet are application segments near the front of the file. A tool that empties the header does not consult your intentions.

What a do-not-mine declaration actually is

Two routes exist, they are independent of one another, and they fail in different ways.

A single XMP property. The IPTC Photo Metadata Standard carries a property called Data Mining at section 11.11, defined simply as "Data mining prohibition or permission, optionally with constraints." Its implementation note records it as "a PLUS version 2.0.1 property included in the IPTC Extension schema," with the requirement that "the value must be one of the URIs listed in the Controlled Vocabulary section of the PLUS specification." Its history note says it was added by IPTC version 2023.1 — which is why you will not find it in older guidance. In XMP it appears as plus:DataMining, with a cardinality of 0..1, meaning one value per asset.

The PLUS specification publishes the permitted values, and reading the list is the fastest way to understand what the field can and cannot say:

The carve-out value is worth quoting in full, because it is routinely misread as a general permission for large technology companies. IPTC states that the prohibition "Prohibited except for search engine indexing" "only permits data mining by search engines available to the public to identify the URL for an asset and its associated data (for the purpose of assisting the public in navigating to the URL for the asset), and prohibits all other uses, such as AI/ML training."

An assertion inside a provenance manifest. The second route is not a tag at all. It lives in a signed C2PA manifest, the structure described on what C2PA Content Credentials are and whether removing metadata strips them too. The declaration itself is specified by the Creator Assertions Working Group, whose training and data mining specification states that the assertion "SHALL have a label of cawg.training-mining" and expresses its content "through a map of one or more training-mining-entries," where "each entry describes whether its use is allowed, notAllowed, or constrained."

There are four predefined entries, and the granularity is the interesting part:

The specification explains why the last two are separate: "generative AI training enables new assets to be created from training assets, while other types, such as object detection, do not." It also sets a default reading for the middle value that catches people out: "In the absence of additional information, constrained shall be treated as equivalent to notAllowed." If you mark something constrained, the optional constraint_info string is where the nuance has to go, or a consumer is entitled to treat you as having said no.

One piece of recent history matters if you set this up a while ago. The change log of the C2PA technical specification version 2.1 lists, among its removals, "Removed the 'Training & Data Mining' assertion" — the declaration moved out of the core specification. CAWG's own document explains the consequence: the earlier version of the assertion "used labels with the prefix c2pa. for the assertion itself and for the pre-defined training-mining-map entries," and "this specification is not a product of the C2PA itself, so it can not use the c2pa. prefix." A file written by older software may therefore carry the old labels, and a checker expecting one naming scheme may report nothing while the other is present.

Why a browser rebuild takes all of it

Being precise about this tool matters more here than usual, because the whole point of the page is that a good strip can destroy something you wanted.

Read the script and the mechanism is plain. It accepts JPEG and PNG only, one file at a time. It decodes your image into a bitmap, creates a canvas at that bitmap's own width and height, draws the pixels onto it, and asks the browser to encode a new JPEG at quality 0.92 or a new PNG. Every byte of the output was produced by your browser's encoder from a pixel buffer. Nothing from the original container is copied forward.

That is a strong guarantee in the usual direction: there is no code path by which an XMP packet survives, which is why the tool is reliable for exposure. It is also the reason it cannot be selective. An XMP packet is not parsed, examined or filtered — it simply is not present in a file assembled from pixels. A plus:DataMining property and a cawg.training-mining assertion are destroyed by the same indifference that destroys the GPS block. There is no preference to tick.

The built-in check will not warn you either, and its exact shape explains why. For a JPEG it scans roughly the first quarter-megabyte for an application segment beginning with the characters Exif, and separately tests that same opening stretch for the letters GPS. For a PNG it walks the chunk list looking for eXIf and for text and profile chunks. Its entire vocabulary is "possible EXIF metadata," "possible GPS/location metadata," "PNG metadata chunks" and "no obvious metadata detected." None of those names a rights declaration. A declaration in a PNG might at best register as a generic text chunk; in a JPEG it would usually not register at all. So the reassuring empty panel on your cleaned copy is silent about whether your opt-out is still there, and the answer is that it is not.

A workflow that keeps both

  1. Decide which copy you are making before you touch anything. The private copy you send to a friend and the public copy you publish have opposite requirements. Trying to satisfy both with one file is the actual mistake underneath most of this confusion. Make two.
  2. Keep personal fields out at capture rather than deleting them later. A field that was never written needs no removal and no later rebuild, which means the declaration you add at the end is the only thing that had to be written at all.
  3. Use a rebuild for the private copy. Decoding to pixels and re-encoding is the simplest reliable way to be sure nothing from the original header rode along. That is what the tool on this page does, and for a photo you are sending rather than publishing it is the right answer.
  4. Use a field-editing utility for the public copy. If you need the file to keep a declaration, you need a tool that edits the container instead of rebuilding it — a command-line utility that can clear specific groups and then write specific properties. The PLUS properties are documented as their own tag family in ExifTool's tag listings, which is what makes plus:DataMining both writable and checkable.
  5. Write the declaration last. Whatever touches the file last decides what the file contains. A resize, a format conversion or an export can discard or rewrite the packet you just set, so put the strip and the resize first and the declaration at the end.
  6. Verify by reading the file, not by trusting the report. Ask a reader to print the PLUS group and the manifest, and confirm the value is the URI you intended rather than a blank or a default.
  7. Put the same position somewhere outside the image. This is the step that survives re-encoding, because it is not in the image at all. The W3C Text and Data Mining Reservation Protocol defines a tdm-reservation value with an optional tdm-policy, and specifies "a JSON file named tdmrep.json, which MUST be hosted in the /.well-known repository of a Web server," alongside expressions in HTML content and in EPUB files. Notably it defines no embedded-in-the-image form — which is precisely why stripping an image cannot erase it.
  8. Archive the untouched original offline. If a declaration turns out to have been dropped three steps ago, the original is the only place the evidence of your intent still exists.

Common mistakes and misconceptions

"Stripping metadata protects my work from being trained on." This has it backwards. Training consumes pixels; the header is not what a model learns from. Stripping removes the record of who made the image and, if you had set one, the statement that you object. An emptied file is a more anonymous file, not a more protected one.

"I never gave permission, so no declaration is needed." Legally that may be your position, but as a signal it is not a position at all. PLUS documents the default value as "Unspecified — no prohibition defined," and IPTC states that "the absence of a prohibition does not indicate that the asset owner grants permission for data mining or any other use of an asset." Both halves matter: silence is not consent, and silence is also not a machine-readable objection anyone can act on.

"Content Credentials include a do-not-train flag, so adding them covers it." Not automatically. The declaration was removed from the core C2PA technical specification at version 2.1 and is now defined as a separate CAWG assertion that happens to ride in a C2PA manifest. Whether any particular application writes it, and under which label, is a property of that application rather than of Content Credentials as such — so check the output instead of assuming.

"Digital Source Type is my opt-out." Different field, different job. Digital Source Type describes how an asset came to exist; the Data Mining property describes what you permit. Setting one says nothing about the other.

"'Constrained' is the safe middle setting." It is stricter than it sounds. CAWG states that in the absence of additional information, constrained "shall be treated as equivalent to notAllowed," and a consumer that wishes to use the asset "may wish to contact the actor which is the rights holder, author, or signer." If you want a conditional answer rather than a refusal, you have to supply the condition.

"A declaration in the file is enough on its own." It is the most fragile place to put it. Platforms re-encode images, exporters rewrite packets, and this tool deletes them outright. That is the argument for the web-level signal as well as the embedded one, not instead of it.

"The field makes it enforceable." No file can prevent a program from reading it, and the standard says as much — IPTC's note warns that regional laws "may prohibit, constrain, or allow data mining for certain purposes (such as search indexing or research), and may overrule the value selected for this property." What the field gives you is clarity and a record, in a form an automated consumer can parse. What happens next is a question about law and about the operator, and this page is not in a position to tell you how either will behave in your jurisdiction.

Where this site's tool fits, and where it does not

Honestly stated: this tool is built for the exposure half of the problem and has no feature for the rights half. It takes JPEG and PNG, one at a time, and returns a browser-generated copy with nothing carried over. If your goal is to hand someone a photo that says as little about you as possible, that is exactly what you want. If your goal is to publish an image carrying a structured statement about automated use, run the strip here if you like — then add the declaration afterwards with a utility that writes fields, and verify the result by reading the finished file.

Related guides

See also:

Frequently asked questions

If I strip metadata from my photo, does my do-not-train declaration go with it?

If the declaration was embedded in the file and the strip was a rebuild, yes. A data mining prohibition is an XMP property, and a training and data mining assertion rides inside a signed manifest attached to the file. Neither is a special protected category. The tool on this page decodes your image to a bitmap, draws it onto a canvas at the same width and height, and asks the browser to encode a brand-new JPEG or PNG from those pixels, so nothing from the original byte stream is carried across. There is no setting that keeps one property and drops the rest, because the output is written from a pixel buffer rather than edited in place. The honest summary is that this is an all-or-nothing clean, and that is exactly the right behaviour when your goal is removing your own exposure and exactly the wrong behaviour when your goal is publishing a declaration. Those are two different copies of the photo, and you should make them separately.

What is the actual field, and where does it live in the file?

There are two main routes and they are independent. The first is a single property: the IPTC Photo Metadata Standard documents Data Mining at section 11.11, defined as data mining prohibition or permission, optionally with constraints, carried in XMP as plus:DataMining with a cardinality of 0..1. The standard records it as a PLUS version 2.0.1 property included in the IPTC Extension schema, added by IPTC version 2023.1, and the value must be one of the URIs listed in the controlled vocabulary of the PLUS specification. PLUS lists nine of them, including Prohibited for AI/ML training, Prohibited for Generative AI/ML training and Prohibited except for search engine indexing, with a default of Unspecified. The second route is an assertion inside a C2PA manifest rather than a tag: the Creator Assertions Working Group specification defines an assertion labelled cawg.training-mining holding a map of entries, each marked allowed, notAllowed or constrained.

Does a do-not-train field in the file actually stop anyone training on my photo?

Treat it as a declaration, not a lock. Nothing in an image file can prevent a program from reading pixels, and the standards themselves are careful about this. The IPTC note on the Data Mining property states that regional laws applying to an asset may prohibit, constrain, or allow data mining for certain purposes, such as search indexing or research, and may overrule the value selected for the property. The same note adds that the absence of a prohibition does not indicate that the asset owner grants permission for data mining or any other use. So the field's job is to make your position unambiguous and machine-readable for a consumer that chooses to look, and to remove any argument that your silence was consent. It is also fragile in transit: any step in the chain that re-encodes your image, including this tool, drops it. Whether a particular crawler honours it is not something a file can enforce and not something this page can promise.

I want no GPS and a usage prohibition on the same photo. How do I get both?

Stop treating it as one operation on one file. Remove the exposure first and write the declaration last, with a tool that edits fields rather than rebuilding pixels, because whatever writes the file last decides what the file contains. A practical order: keep location off at capture rather than deleting it afterwards; make a rebuilt copy for anything you are sending privately; for the copy you publish, use a header-editing utility to clear the personal fields and then set the declaration, verifying it afterwards by reading the file rather than trusting the tool's report. Then put the same position somewhere outside the image, because a signal that survives re-encoding is worth more than one that does not. The W3C Text and Data Mining Reservation Protocol defines exactly that: a tdm-reservation value with an optional tdm-policy, published in a tdmrep.json file that must be hosted in the .well-known directory of your web server, and expressible in HTML content as well.

Remove EXIF data, GPS location and common photo metadata from a JPEG or PNG in your browser.

Try MetadataWipe free