Appearance
To embed rights metadata in a file, write a structured rights statement into the file's internal metadata block — for images that means the XMP dc:rights, xmpRights:WebStatement, xmpRights:UsageTerms and xmpRights:Marked properties, mirrored into IPTC for legacy compatibility — using ExifTool for repeatable, batch-safe writes. The goal is that the rights travel with the bytes, so a downloaded file still carries its licence. Below is the end-to-end workflow with real commands.
Which fields actually hold the rights?
For still images, the XMP Rights Management schema is the canonical home. Map your statement to these properties:
| Property | Purpose | Example |
|---|---|---|
dc:rights | Human-readable rights statement | "In Copyright. Contact [email protected]" |
xmpRights:Marked | Boolean: rights reserved? | True or False |
xmpRights:WebStatement | URL to the rights/licence page | http://rightsstatements.org/vocab/InC/1.0/ |
xmpRights:UsageTerms | Permitted uses, in prose | "Non-commercial use with attribution" |
cc:license | Machine-readable CC licence URI | https://creativecommons.org/licenses/by/4.0/ |
photoshop:Credit (IPTC) | Credit line for legacy tools | "Courtesy of X Archive" |
xmpRights:Marked = False is the explicit signal for public-domain/CC0 content; leaving it blank is not the same and confuses downstream tools.
How do I embed it with ExifTool?
ExifTool is the workhorse. To write a full rights block into a single TIFF:
bash
exiftool \
-XMP-dc:Rights="In Copyright. Contact [email protected]" \
-XMP-xmpRights:Marked=True \
-XMP-xmpRights:WebStatement="http://rightsstatements.org/vocab/InC/1.0/" \
-XMP-xmpRights:UsageTerms="Personal study only; contact us to license." \
-IPTC:CopyrightNotice="© 1962 Estate of A. Author" \
-overwrite_original \
scan_0142.tifFor Creative Commons content, swap in the licence URI and mark it unreserved:
bash
exiftool \
-XMP-xmpRights:Marked=False \
-XMP-cc:License="https://creativecommons.org/licenses/by/4.0/" \
-XMP-xmpRights:WebStatement="https://creativecommons.org/licenses/by/4.0/" \
-overwrite_original photo_8821.jpgHow do I do this for a whole collection?
Two scalable patterns. First, apply one statement across an entire folder of public-domain scans:
bash
exiftool -r \
-XMP-xmpRights:Marked=False \
-XMP-xmpRights:WebStatement="http://rightsstatements.org/vocab/NoC-US/1.0/" \
-overwrite_original -ext tif -ext jpg /collections/maps_pd/Second, drive per-item values from a CSV so each file gets its own rights statement:
bash
exiftool -csv=rights.csv -overwrite_original /collections/mixed/where rights.csv has a SourceFile column plus columns named exactly for the tags (XMP-dc:Rights, XMP-xmpRights:WebStatement, …). This is the cleanest way to push catalogue-managed rights into thousands of files reproducibly.
What about PDFs, audio and video?
- PDF: ExifTool writes XMP into the document metadata; many archives also stamp a rights line into the document's
Producer/Keywordsfor resilience. - Audio/Video: use format-native tags — ID3
TCOP(copyright) for MP3, or XMP for BWF/MXF where supported. Container support is patchier, so a sidecar is often safer. - Plain text / CSV / data: these cannot hold internal metadata, so use a sidecar (
README/LICENSEfile or*.xmp) and a manifest entry.
Embedded or sidecar — how do I choose?
text
Format supports internal metadata + you may alter the file -> embed
Preservation master that must stay byte-identical -> sidecar XMP
Format has no metadata block (CSV, TXT, GeoJSON) -> sidecar + manifest
Want rights to survive a download -> embed (plus catalogue)For the broader trade-offs, see embedded versus sidecar metadata.
Why isn't embedding enough on its own?
Embedded metadata is fragile: image editors, CMS uploads and almost every social platform strip or rewrite it on re-save. So treat embedding as one of three layers — (1) the authoritative catalogue record, (2) a visible rights statement on the access page, and (3) embedded metadata for portability. To verify what actually survived, read it back:
bash
exiftool -XMP-xmpRights:all -IPTC:CopyrightNotice -G1 scan_0142.tifRun that on a random sample after any pipeline step to catch silent stripping.
Key Takeaways
- Use the XMP Rights schema:
dc:rights,xmpRights:Marked,WebStatement,UsageTerms, pluscc:licensefor CC. xmpRights:Marked=Falseis the explicit "no rights reserved" signal — don't leave it blank.- ExifTool writes and batch-applies rights across images, PDFs and more; drive bulk jobs from a CSV.
- Prefer a sidecar for preservation masters and for formats with no metadata block.
- Embedding is fragile — pair it with a catalogue record and a visible access-page statement.
- Read metadata back after each pipeline step to detect stripping.
Frequently Asked Questions
Which metadata fields should I use to embed rights in an image?
Use the XMP rights block: dc:rights for the rights statement, xmpRights:WebStatement for a URL to the licence or RightsStatements.org page, xmpRights:Marked to flag whether rights are reserved, and xmpRights:UsageTerms for human-readable terms. IPTC's CopyrightNotice and Credit mirror these for older tools.
What tool embeds rights metadata across many file types?
ExifTool is the standard. It writes XMP, IPTC and EXIF into JPEG, TIFF, PNG, PDF and more from the command line, supports batch operations over folders, and can copy a sidecar XMP into thousands of files in one pass.
Does embedded metadata survive when an image is edited or re-saved?
Not reliably. Many editors and most social platforms strip or rewrite metadata on export. That is why embedding is a complement to, not a replacement for, a catalogue record and a visible rights statement on the access page.
Embedded versus sidecar metadata — which should I use?
Embed when the file format supports it and you want the rights to travel with the file. Use a sidecar XMP for formats that cannot hold metadata internally, or when you must not alter the original bytes for preservation reasons.
Can I embed a RightsStatements.org or Creative Commons URI?
Yes, and you should. Put the URI in xmpRights:WebStatement and, for Creative Commons, in the cc:license property so machines can read the licence. The URI makes the rights machine-actionable for IIIF viewers and aggregators.