Add an IPTC/PLUS Data Mining value and your usage terms to new copies of delivered JPEGs, review existing rights metadata, and export a ZIP with delivery notes and a per-file receipt. Everything runs in a browser tab on your computer.
.jpg or .jpeg) — copies you intend to deliver. VarSeal never edits the files you choose.VarSeal-1.0.1.zip to a folder you control, for example Documents/VarSeal.VarSeal.html, or drag it into a Chrome window. Keep the app folder next to it.
In a narrow window (tested at 390 px wide) the panels stack vertically and the file table scrolls sideways inside its own box.




Select a file name to see its fields before and after. For H_0008.jpg, the original says Data mining Allowed; the copy will say Prohibited for AI/ML training, because Replace was chosen. With the default Add where missing, the existing value would be kept and flagged instead.


| Practice file | What it shows | Expected |
|---|---|---|
| H_0001.jpg | Attribute-style XMP like many editors write, matching IPTC and EXIF copyright | Ready |
| H_0002.jpg | Progressive JPEG with existing usage terms | Review (usage terms replaced) |
| H_0003.jpg | EXIF copyright only, no XMP | Ready (XMP added) |
| H_0004.jpg | No metadata at all | Ready (copyright filled) |
| H_0005.jpg | XMP and IPTC-IIM copyright disagree | Review (IIM kept, difference reported) |
| H_0006.jpg | Incomplete file | Blocked |
| H_0007.jpg | CMYK JPEG | Ready |
| H_0008.jpg | Existing Data mining = Allowed | Review (replaced) |
| H_0009.jpg | Content Credentials-style APP11 data | Blocked |
| notes.txt | Not a photo | Skipped (not opened; the receipt lists it without a SHA-256) |
practice folder if you want to try this step with known files.Templates: Save template downloads varseal-template.json with your notice and delivery details. Load template restores it next time. Every export ZIP also contains the template it used.
| Field | Written to | Notes |
|---|---|---|
| Data mining (required) | plus:DataMining | A PLUS vocabulary URI such as http://ns.useplus.org/ldf/vocab/DMI-PROHIBITED-AIMLTRAINING. The labels in the list are the PLUS vocabulary definitions. |
| Other constraints | plus:OtherConstraints (language alternative, x-default) | Required when you choose “Prohibited, see Other Constraints property”. |
| Rights usage terms | xmpRights:UsageTerms (x-default) | What this client may do with the photos. |
| Copyright info URL | xmpRights:WebStatement | Must start with http:// or https://. |
| Copyright notice | dc:rights (x-default) | IPTC-IIM and EXIF copies are never changed; differences are reported. |
Modes. Keep existing writes nothing for that field. Fill where missing writes only when the photo has no value. Replace overwrites the value (other language versions are kept and reported). A blank field never erases anything: Replace or Fill with empty text is refused. For the copyright notice, Fill where missing also refuses to write when IPTC-IIM or EXIF already holds a different notice.
.jpg/.jpeg file (VarSeal does not open it), or a file named .jpg whose content is not JPEG.photos/ — the new JPEG copies. Names are kept; unsafe characters are replaced and duplicate names get “ (2)”. The table shows any new name before export.VarSeal-delivery-notes.html — a printable summary for your client: studio, client, project, date, the Data mining label and URI, your terms, and each file with its SHA-256.VarSeal-receipt.json and VarSeal-receipt.csv — your record: one row per listed file with its status, size (input_bytes), every field before and after, review and block notes, verification results and SHA-256 values (see below).varseal-template.json — the notice used for this delivery.
SHA-256 values in the receipt. output_sha256 is the SHA-256 of each copy in photos/. input_sha256 is the SHA-256 of each original file VarSeal read. VarSeal does not open files that are not .jpg/.jpeg or that are larger than 32 MiB; their rows say input_read: false (CSV: no), give the size and the reason, and have no input SHA-256.
Before each copy is added to the ZIP, VarSeal re-reads it and checks that every non-XMP segment and all image data are byte-identical to the original and that each written value reads back exactly.
VarSeal-delivery-notes.html from the unzipped folder in any browser.exiftool -XMP-plus:DataMining -XMP-xmpRights:UsageTerms photos/H_0001.jpg..xmp sidecars, Extended XMP.| Problem | What to do |
|---|---|
| Page is unstyled or buttons do nothing | Keep VarSeal.html and the app folder together; unzip the whole archive first instead of opening it inside the ZIP viewer. |
| “Create delivery ZIP” is disabled | Read the red notes under Export: choose a Data mining value, enter text for fields set to Fill/Replace, or fix the URL. |
| A file is Blocked | Open its detail panel for the reason. Re-export it from your editor (for example without Content Credentials) and add it again. |
| Files were not added | The batch limits are 100 files and 256 MiB; split large deliveries into several batches. |
| Download does not start | Check Chrome's download bar or settings; the ZIP is created in memory and saved by Chrome. |
| Metadata missing after upload to a website | Many sites remove metadata. VarSeal cannot change that; deliver the files directly where possible. |
Photos are read only inside the browser tab. VarSeal makes no network requests (its page policy blocks connections), has no account, and stores nothing between sessions; closing the tab discards the list. Templates are saved only when you click Save template.
Delete the unzipped VarSeal folder. Nothing else is installed. Downloaded ZIPs and templates stay where Chrome saved them until you delete them.
VarSeal 1.0.1 · Perunlight · see LICENSE.txt.