<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sebastian Balog</title>
    <description>The latest articles on DEV Community by Sebastian Balog (@sebastian_balog_c88dc2913).</description>
    <link>https://dev.to/sebastian_balog_c88dc2913</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4144671%2Fa6b94a64-45bd-4305-b1d1-46483e984c60.png</url>
      <title>DEV Community: Sebastian Balog</title>
      <link>https://dev.to/sebastian_balog_c88dc2913</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sebastian_balog_c88dc2913"/>
    <language>en</language>
    <item>
      <title>Why Instagram labels your real photo "AI info" (and how to see the metadata behind it)</title>
      <dc:creator>Sebastian Balog</dc:creator>
      <pubDate>Sat, 26 Sep 2026 20:46:48 +0000</pubDate>
      <link>https://dev.to/sebastian_balog_c88dc2913/why-instagram-labels-your-real-photo-ai-info-and-how-to-see-the-metadata-behind-it-4j0f</link>
      <guid>https://dev.to/sebastian_balog_c88dc2913/why-instagram-labels-your-real-photo-ai-info-and-how-to-see-the-metadata-behind-it-4j0f</guid>
      <description>&lt;p&gt;You take a real photo, remove a stray object with a generative fill tool, post it, and Instagram adds &lt;strong&gt;"AI info"&lt;/strong&gt; under your name. The picture is 99% camera, but the label says otherwise.&lt;/p&gt;

&lt;p&gt;The label usually isn't about the pixels. It's about &lt;strong&gt;metadata&lt;/strong&gt; the editing tool wrote into the file. Once you know where it lives, you can see it in seconds, and remove it without touching the image.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the platforms read
&lt;/h2&gt;

&lt;p&gt;Meta has said it labels images using industry-standard signals in the file. Two of them do most of the work:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. C2PA Content Credentials.&lt;/strong&gt; A signed manifest embedded in the file (in a JPEG it sits in &lt;code&gt;APP11&lt;/code&gt; segments as JUMBF boxes). It records which app made or edited the image and what it did: &lt;code&gt;c2pa.opened&lt;/code&gt;, &lt;code&gt;c2pa.edited&lt;/code&gt;, and, for AI tools, a &lt;code&gt;digitalSourceType&lt;/code&gt; saying generative AI was involved. Photoshop, Firefly, ChatGPT's image generation and a growing list of phones and cameras write it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The IPTC digital source type.&lt;/strong&gt; A single XMP field, &lt;code&gt;Iptc4xmpExt:DigitalSourceType&lt;/code&gt;, whose value is a URL from the IPTC vocabulary. The two that matter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;trainedAlgorithmicMedia&lt;/code&gt;: made with generative AI&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;compositeWithTrainedAlgorithmicMedia&lt;/code&gt;: edited with generative AI (your generative-fill case)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Either one is enough to earn the label.&lt;/p&gt;

&lt;h2&gt;
  
  
  See it in your own files
&lt;/h2&gt;

&lt;p&gt;With &lt;a href="https://exiftool.org" rel="noopener noreferrer"&gt;ExifTool&lt;/a&gt; installed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# The IPTC AI tag&lt;/span&gt;
exiftool &lt;span class="nt"&gt;-XMP-iptcExt&lt;/span&gt;:DigitalSourceType photo.jpg
&lt;span class="c"&gt;# Digital Source Type : http://cv.iptc.org/newscodes/digitalsourcetype/compositeWithTrainedAlgorithmicMedia&lt;/span&gt;

&lt;span class="c"&gt;# Is there a C2PA manifest? (JUMBF boxes labelled c2pa)&lt;/span&gt;
exiftool &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="nt"&gt;-JUMDLabel&lt;/span&gt; photo.jpg
&lt;span class="c"&gt;# JUMD Label : c2pa&lt;/span&gt;
&lt;span class="c"&gt;# JUMD Label : urn:c2pa:060ce687-...&lt;/span&gt;
&lt;span class="c"&gt;# JUMD Label : c2pa.assertions&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the full, human-readable manifest (signer, actions, validation state), use the official &lt;a href="https://github.com/contentauth/c2pa-rs" rel="noopener noreferrer"&gt;c2patool&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;c2patool photo.jpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;While you're in there, check what else the file carries. Most phones add GPS once the camera has location access:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;exiftool &lt;span class="nt"&gt;-GPSPosition&lt;/span&gt; &lt;span class="nt"&gt;-Model&lt;/span&gt; &lt;span class="nt"&gt;-SerialNumber&lt;/span&gt; photo.jpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No command line handy? I built a free &lt;a href="https://metacleanai.com/exif-viewer/" rel="noopener noreferrer"&gt;in-browser EXIF and C2PA viewer&lt;/a&gt; that reads all of this, including the prompts Stable Diffusion and ComfyUI hide in PNGs. The file is read locally and never uploaded; switch off your Wi-Fi after the page loads and it still works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Removing it (and the gotcha that bites everyone)
&lt;/h2&gt;

&lt;p&gt;The classic one-liner does remove the C2PA manifest, the IPTC tag and your GPS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;exiftool &lt;span class="nt"&gt;-all&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; photo.jpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But run it on a photo from a phone and look closely:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Warning: ICC_Profile deleted. Image colors may be affected - photo.jpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;-all=&lt;/code&gt; also deletes the &lt;strong&gt;colour profile&lt;/strong&gt; and the &lt;strong&gt;orientation&lt;/strong&gt; flag. iPhone photos are usually Display P3, so they come out duller, and portrait shots can come out sideways. The fix is to copy those two back from the original in the same command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;exiftool &lt;span class="nt"&gt;-all&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nt"&gt;-tagsfromfile&lt;/span&gt; @ &lt;span class="nt"&gt;-icc_profile&lt;/span&gt; &lt;span class="nt"&gt;-orientation&lt;/span&gt; photo.jpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I tested both on a C2PA-signed, Display P3, rotated JPEG: the second command removed the manifest (&lt;code&gt;c2patool&lt;/code&gt; reports &lt;code&gt;No claim found&lt;/code&gt;), the IPTC tag and the GPS, kept the profile and rotation, and left the decoded pixels identical.&lt;/p&gt;

&lt;p&gt;Then check your result, because a clean-looking command isn't proof:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;exiftool &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="nt"&gt;-JUMDLabel&lt;/span&gt; &lt;span class="nt"&gt;-XMP-iptcExt&lt;/span&gt;:DigitalSourceType &lt;span class="nt"&gt;-GPSPosition&lt;/span&gt; photo.jpg   &lt;span class="c"&gt;# should print nothing&lt;/span&gt;
c2patool photo.jpg                                                             &lt;span class="c"&gt;# should say No claim found&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Doing this for a whole camera roll
&lt;/h2&gt;

&lt;p&gt;For one JPEG, the ExifTool commands above are all you need. For folders full of photos &lt;em&gt;and&lt;/em&gt; videos (where metadata lives in QuickTime atoms and its own C2PA box), I made &lt;a href="https://metacleanai.com/" rel="noopener noreferrer"&gt;MetaClean&lt;/a&gt;, a Mac and Windows app that does the whole thing offline. It bundles pinned versions of ExifTool, c2patool and FFmpeg, never re-encodes (video is remuxed with stream copy), keeps colour profiles and orientation, and re-inspects every output before saving it as &lt;code&gt;clean_&amp;lt;name&amp;gt;&lt;/code&gt;, leaving the original untouched. There's a 3-day free trial, then it's $5 once.&lt;/p&gt;

&lt;p&gt;Disclosure: I'm the developer of MetaClean and the viewer linked above.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;"AI info" on a real photo usually comes from &lt;strong&gt;C2PA Content Credentials&lt;/strong&gt; or the &lt;strong&gt;IPTC DigitalSourceType&lt;/strong&gt; tag, not from the pixels.&lt;/li&gt;
&lt;li&gt;See them: &lt;code&gt;exiftool -XMP-iptcExt:DigitalSourceType -a -JUMDLabel photo.jpg&lt;/code&gt;, or &lt;code&gt;c2patool photo.jpg&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Remove them without breaking the photo: &lt;code&gt;exiftool -all= -tagsfromfile @ -icc_profile -orientation photo.jpg&lt;/code&gt;, then verify.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>privacy</category>
      <category>photography</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
