---
title: "PDF & AI Image Metadata Remover, No Upload"
canonical: https://wavect.io/tools/pdf-image-metadata-cleaner/
language: en
description: "Remove PDF author and XMP data, JPEG EXIF/GPS, and PNG or WebP AI prompt metadata locally. Batch cleaning, verified copies and ZIP downloads. Free, no upload."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

LOCAL PDF & AI IMAGE METADATA REMOVER

# PDF & Image Metadata Cleaner

Inspect and remove supported PDF and image metadata before sharing. PDF, JPEG, PNG and WebP, in one private workbench. No account, no upload, no AI model reading your files.

## Inspect, clean, verify, download.

Starting the isolated local tool…

Retry loading the local tool

WHAT THIS TOOL DOES

Remove supported AI metadata from PDF, JPEG, PNG and WebP locally, without an upload. The cleaner removes stored prompts, workflows, generator fields, standard XMP and supported C2PA containers, then rechecks each output. PDF Content Credentials attachments are distinguished from ordinary attachments. Metadata markers are not proof of AI authorship, and this does not remove invisible watermarks.

## Remove AI metadata from PDFs and images, without uploading them

AI-related fields are included in the normal cleaning pass. Detection helps explain the result; it never decides whether a supported metadata container is removed.

### Prompts, parameters and workflows

PNG tEXt, iTXt and zTXt chunks are removed in full, including compressed fields. This covers stored ComfyUI workflows and Stable Diffusion generation parameters in those chunks. Supported EXIF comments and XMP fields are removed too.

### Generator names and AI disclosure

PDF Info and standard XMP, image XMP/IPTC and supported EXIF containers can hold generator names, IPTC AI Prompt Information, AI System Used and DigitalSourceType values. The local report identifies recognized markers and warns when its bounded scan is incomplete.

### Content Credentials, separately reported

PNG caBX, JPEG APP11/JUMBF and WebP C2PA containers are removed. For PDFs, typed C2PA attachments and their standard links are removed, while other attachments remain. C2PA also describes non-AI content; the report does not treat it as an AI verdict.

EXACT SCOPE

## What gets removed in each format

| Format | Targeted metadata | What is preserved |
| --- | --- | --- |
| PDF | Full document Info, trailer IDs, standard Metadata/XMP links and typed C2PA embedded-file metadata. Document/object AF associations, EmbeddedFiles name-tree entries and C2PA attachment annotations are cleaned; unreachable objects are discarded in a full rewrite. | Page streams, text, links and layout remain. C2PA attachment icons can disappear. Other annotations, forms, attachments, custom data and metadata inside encoded images are not sanitized. |
| JPEG / JPG | Original EXIF including GPS, XMP, IPTC-bearing APP segments, comments, thumbnails and other non-rendering APP data. Trailing bytes are removed. | Encoded image data is not re-encoded. A minimal EXIF orientation tag is retained when needed. ICC profiles are kept by default. |
| PNG / APNG | Text chunks including tEXt, iTXt and zTXt, original EXIF, non-rendering ancillary chunks and trailing bytes. Stored prompt, workflow and software text is removed. | Image data, transparency, animation chunks and rendering information are retained. Minimal orientation and optional ICC profile may remain. |
| WebP | Top-level XMP, original EXIF, unsupported non-image chunks and trailing bytes. The RIFF size and metadata flags are rebuilt. | Encoded image and supported animation data are retained. Minimal orientation and optional ICC profile may remain. |

## METHOD & PRIMARY REFERENCES

The implementation follows the format-specific scope above. These primary references explain the containers and isolation model; they do not certify this tool.

Technical review: 5 October 2026

[PNG specification: text, EXIF and color chunks](https://www.w3.org/TR/png-3/) [WebP RIFF container specification](https://developers.google.com/speed/webp/docs/riff_container) [pdf-lib: PDFDocument API](https://pdf-lib.js.org/docs/api/classes/pdfdocument) [C2PA explainer: provenance and soft bindings](https://spec.c2pa.org/specifications/specifications/2.4/explainer/Explainer.html) [MDN: iframe sandbox](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/iframe) [C2PA specification: JPEG, PNG, WebP and PDF embedding](https://spec.c2pa.org/specifications/specifications/2.4/specs/C2PA_Specification.html) [IPTC: AI prompt, AI system and digital source fields](https://iptc.org/std/photometadata/specification/IPTC-PhotoMetadata-2025.1.html)

**Related tools and reading** [PDF inspection and OCR routing](/blog/pdf-inspector-ocr-routing/) [Check your site’s machine readability](/tools/agent-readability-checker/)

THREE STEPS

## Remove metadata without uploading your files.

Original files are never overwritten. Every download is a separate copy.

1. 01 - **Inspect locally** - Choose files or drop a batch into the workbench. Review detected metadata containers, limited text previews and file-specific warnings.
2. 02 - **Choose and clean** - Keep ICC color profiles for appearance, or remove them deliberately. Neutral output names are enabled by default. Clean the batch; signed or encrypted PDFs are not bypassed.
3. 03 - **Verify and download** - Each output is parsed again. Download verified copies individually or in one ZIP. The optional JSON report excludes original filenames and metadata values.

PRIVACY BY DESIGN

## Local means the file is not sent to a server.

The surrounding website may load normal page assets and analytics. The cleaner itself is a separate sandbox with no network access.

### Isolated from page scripts

The workbench uses an opaque-origin iframe and a restrictive Content Security Policy. It does not send filenames, bytes, metadata or results to the surrounding page.

### No model, no cloud, no storage API

Parsing happens in bundled local Web Workers. There is no CDN dependency at runtime, upload API, browser database or analytics inside the cleaner. Once this page is fully loaded, processing works offline.

### A check you can understand

Verification means the targeted metadata containers were not found on reinspection. It is not a guarantee that all sensitive information has disappeared. Clear the workbench to release references; that is not secure memory erasure.

BEFORE YOU SHARE

## Metadata cleaning has a specific job.

- Visible text, faces, watermarks, hidden pixel signals and AI-origin detection are outside scope. Removing metadata cannot guarantee removal of platform AI labels or invisible watermarks.
- Removing provenance or copyright-related metadata can discard useful attribution. Only process files you are entitled to modify; keep the original when authenticity matters.
- Signed PDFs and signature fields are blocked; protected PDFs are rejected. Only typed C2PA metadata attachments are removed, not ordinary attachments. This is not redaction, malware scanning or a conformance validator.
- ICC color profiles and minimal orientation can remain intentionally. ICC profiles may contain descriptive strings. Disabling profile retention may change appearance; check the downloaded image.
- Supported inputs are PDF, JPEG, PNG/APNG and WebP. HEIC, AVIF, GIF, TIFF, SVG, video and multipicture JPEG/MPO are not supported. Malformed or overly complex files fail closed.
- Maximum 20 files, 25 MiB each and 100 MiB input per batch; retained outputs are also capped at 100 MiB. PDFs are limited to 1,000 pages. A worker is stopped after 45 seconds. Some files can grow after rewriting.

## PDF, EXIF and AI prompt metadata: common questions

### How do I remove PDF author, creator and producer without an upload?

Select the PDF here, inspect it and choose Clean. The cleaner removes the entire document Info dictionary, including author, creator, producer, title, keywords and dates when stored there. It also removes standard XMP metadata links and document IDs. It does not delete those names if they appear in page text or annotations.

### Can I remove ComfyUI or Stable Diffusion prompts from a PNG?

Yes, when the prompt, parameters or workflow is stored in PNG text chunks. This cleaner removes tEXt, iTXt and zTXt containers rather than guessing a list of generator names. It does not infer which model created an image, inspect hidden pixels or promise to remove every possible provenance signal.

### Does removing JPEG EXIF reduce image quality?

This tool changes container metadata without decoding and re-encoding the JPEG image data. It retains only minimal orientation when needed and keeps ICC profiles by default. Removing a color profile deliberately can change how the image looks in a viewer.

### Does it remove C2PA Content Credentials or AI watermarks?

Yes, for supported metadata containers: PNG caBX, JPEG APP11/JUMBF, WebP C2PA and typed PDF C2PA attachments. Ordinary PDF attachments are retained. Removing credentials is not AI detection or signature validation. Invisible watermarks, remote credentials and platform labels can remain.

### Are files uploaded, stored or sent to an AI model?

No. File processing happens inside the isolated browser workbench with network connections blocked. The surrounding website can load ordinary assets and analytics, but selected files and metadata are not passed to it. No model is used. Keep this loaded tab open to continue processing offline.

### Why can a cleaned file still show metadata?

Rendering data, dimensions, optional ICC profiles and minimal orientation intentionally remain. Device file timestamps are separate from embedded metadata. Normal PDF annotations, forms, non-C2PA attachments and metadata inside encoded images remain outside scope.

### Can I clean a batch and keep original filenames private?

Yes. You can process up to 20 supported files within the size limits and download successful results in a ZIP. Neutral filenames are on by default. The downloadable JSON verification report excludes original filenames, private metadata values and file contents.

FREE · NO ACCOUNT · NO UPLOAD

## Share a cleaner copy, not your editing history.

Start with the demo, inspect the result and then choose the files you actually need to share.

[Back to the cleaner](#tool-app)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/tools/pdf-image-metadata-cleaner/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-10-05",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-10-05",
      "url": "https://wavect.io/tools/pdf-image-metadata-cleaner/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "applicationCategory": "UtilitiesApplication",
  "browserRequirements": "JavaScript, Web Workers, Blob URLs; modern Chromium, Firefox or Safari",
  "citation": [
    "https://www.w3.org/TR/png-3/",
    "https://developers.google.com/speed/webp/docs/riff_container",
    "https://pdf-lib.js.org/docs/api/classes/pdfdocument",
    "https://spec.c2pa.org/specifications/specifications/2.4/explainer/Explainer.html",
    "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/iframe",
    "https://spec.c2pa.org/specifications/specifications/2.4/specs/C2PA_Specification.html",
    "https://iptc.org/std/photometadata/specification/IPTC-PhotoMetadata-2025.1.html"
  ],
  "dateModified": "2026-10-05",
  "datePublished": "2026-10-05",
  "description": "Remove PDF author and XMP data, JPEG EXIF/GPS, and PNG or WebP AI prompt metadata locally. Batch cleaning, verified copies and ZIP downloads. Free, no upload.",
  "featureList": [
    "Inspect locally",
    "Choose and clean",
    "Verify and download",
    "No upload · Batch + verification",
    "AI-metadata before/after report",
    "Typed PDF C2PA attachment removal"
  ],
  "inLanguage": "en",
  "isAccessibleForFree": true,
  "name": "PDF & Image Metadata Cleaner",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "EUR"
  },
  "operatingSystem": "Web browser",
  "softwareVersion": "1.2.0",
  "url": "https://wavect.io/tools/pdf-image-metadata-cleaner/"
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/",
      "name": "Home",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/tools/",
      "name": "Tools",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/tools/pdf-image-metadata-cleaner/",
      "name": "PDF & Image Metadata Cleaner",
      "position": 3
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Select the PDF here, inspect it and choose Clean. The cleaner removes the entire document Info dictionary, including author, creator, producer, title, keywords and dates when stored there. It also removes standard XMP metadata links and document IDs. It does not delete those names if they appear in page text or annotations."
      },
      "name": "How do I remove PDF author, creator and producer without an upload?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, when the prompt, parameters or workflow is stored in PNG text chunks. This cleaner removes tEXt, iTXt and zTXt containers rather than guessing a list of generator names. It does not infer which model created an image, inspect hidden pixels or promise to remove every possible provenance signal."
      },
      "name": "Can I remove ComfyUI or Stable Diffusion prompts from a PNG?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "This tool changes container metadata without decoding and re-encoding the JPEG image data. It retains only minimal orientation when needed and keeps ICC profiles by default. Removing a color profile deliberately can change how the image looks in a viewer."
      },
      "name": "Does removing JPEG EXIF reduce image quality?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, for supported metadata containers: PNG caBX, JPEG APP11/JUMBF, WebP C2PA and typed PDF C2PA attachments. Ordinary PDF attachments are retained. Removing credentials is not AI detection or signature validation. Invisible watermarks, remote credentials and platform labels can remain."
      },
      "name": "Does it remove C2PA Content Credentials or AI watermarks?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. File processing happens inside the isolated browser workbench with network connections blocked. The surrounding website can load ordinary assets and analytics, but selected files and metadata are not passed to it. No model is used. Keep this loaded tab open to continue processing offline."
      },
      "name": "Are files uploaded, stored or sent to an AI model?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Rendering data, dimensions, optional ICC profiles and minimal orientation intentionally remain. Device file timestamps are separate from embedded metadata. Normal PDF annotations, forms, non-C2PA attachments and metadata inside encoded images remain outside scope."
      },
      "name": "Why can a cleaned file still show metadata?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. You can process up to 20 supported files within the size limits and download successful results in a ZIP. Neutral filenames are on by default. The downloadable JSON verification report excludes original filenames, private metadata values and file contents."
      },
      "name": "Can I clean a batch and keep original filenames private?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
