Research prototype · JPEG Trust v0.1.0

Is this photo trustworthy?

Every photo has a story. JPEG Trust brings together information about its origin, history and content to help you assess its trustworthiness in the context that matters to you.

trust.jpeg.org / verify · profile match 92%
aurora-2026.jpg 4.8 MB
resolution4032 x 3024
colorsRGB 8-bit
manifestpresent 1.9 KB
hasha7f3d2...02

Mostly trusted — 12 of 13 checks passed

Checked against a newsroom wire photo standard · signed by a Reuters photographer · no AI used
Provenance timeline
capture → color_adjust → crop_3:4 → redact → publish
captured14 Mar 2026 · 09:42 UTC
deviceNikon Z 9
authorelena.rivera@reuters
locationWithheld
signatureES256 chain valid (3/3)
ai involvementNone — pixels human-captured
01 — the problem

A valid signature isn't enough. You need to know: should I believe this image?

Most tools just check whether a signature is mathematically correct. JPEG Trust goes further: you define what "trusted" means for your context, and the tool checks the image against that standard.

Cameras sign photos the moment they're taken.

Supported cameras seal a digital fingerprint into the image at the instant of capture: the device, the time, and the exact pixels.

device: "nikon-z9"
captured: "2026-03-14T09:42:11Z"
signed_by: "hw://nikon.z9.serial=..."

Every edit is recorded — nothing is hidden.

Crops, colour corrections, AI fills, redactions — each change is logged automatically: what tool made it, who approved it, and exactly what changed.

action: "jpt.colour_adjust"
tool: "lightroom@13.4"
delta: { exposure: +0.3 }

Check the image against your own standards.

You define what "trusted" means: a newsroom might require author identity, edit history, and an AI declaration. The tool checks all of it and gives you a clear verdict.

standard: "newsroom wire photo"
verdict: "mostly trusted"
score: 92% · passed: 12 of 13

Open formats. Works with existing tools.

Built on JPEG Trust Second Edition, so photos signed by Adobe, camera manufacturers, or other tools work here too. Trust standards are simple config files you can version in git.

format: "jpt trust record"
standard: "newsroom-wire-photo.yaml"
# JPEG Trust Second Edition
02 — how it works

Read, sign, verify. Three things, one tool.

The record of who made a photo and what happened to it lives inside the file itself. It survives copies, exports, and re-uploads.

01

Read

Drop a photo and see everything recorded inside it — who took it, when, every edit, whether AI was involved.

read · 7 assertions
assertions: 7
author: "e.rivera"
ai_used: false
02

Sign

Add your name, copyright, edit history, and AI declarations. After signing, the tool re-reads the file to confirm everything was written correctly.

add · signed & re-verified
embed: "app11/jt"
re_verify: "pass"
profile_fit: 7/8
03

Verify

Pick a trust standard, run the image against it, and get a report: what passed, what's missing, and whether to trust the result.

verify · mostly_trusted
profile: "newsroom@1.2"
required: 12/13
score: 0.92
03 — the toolkit

Six tools for checking, signing, and verifying photos.

Each tool can also be used from a script or an API — anything you do in the browser can be automated on a server.

04 — for developers

Verify, embed, validate — from any backend.

The same engine that powers the in-browser tools is available as a Python library and an HTTP API.

Single & batch verification — one image or a folder, same JSON shape.
Embed metadata programmatically with the same assertion vocabulary.
Validate against a profile by URL or local YAML/JSON file.
Returns both a machine-readable JSON report and a human-readable summary.
python ~/jpeg-trust
# Verify an image against a trust profile
from jpeg_trust import verify, load_profile

profile = load_profile("newsroom-wire-photo.yaml")
result  = verify("sunset-final.jpg", profile=profile)

print(result.verdict)        # 'mostly_trusted'
print(result.score)          # 0.923
print(result.required_passed) # 12 of 13

# Write both reports to disk
result.save_json("report.json")
result.save_summary("summary.txt")
05 — use cases

For the people who care whether an image is real.

JPEG Trust is intentionally narrow. It does one thing — make image provenance verifiable.

Newsrooms

Verify wire photos before they reach the front page.

Run JPEG Trust on every submission from stringers and freelancers. Manipulated images get caught at the photo desk, not after publication.

Creators

Prove your work isn't AI — without showing the raw file.

Sign at export. Anyone can verify the JPEG came from your camera and you own it, without you handing over the original.

AI provenance · EU AI Act

JPEG Trust enables Article 50 AI labelling.

The EU AI Act requires AI-generated content to carry machine-readable provenance metadata. JPEG Trust enables mechanisms to embed what Article 50 demands.

How to comply with Article 50 →
06 — questions

Frequently asked.

Short answers, here. Longer versions live in the docs.

Is JPEG Trust the same as C2PA?+

JPEG Trust is a large trust framework that covers provenance, authenticity and integrity, along with intellectual property rights. It supports generating reports that check media assets against a given context (trust profiles). Parts of the framework, largely those on provenance, are built on the C2PA manifest and are therefore compatible with C2PA.

What if the image has no manifest?+

JPEG Trust will report "unsigned" — which is not the same as "fake". It just means provenance cannot be verified. Treat unsigned images as you always have.

Does the manifest survive crops, resizes, and platform reposts?+

If the tool you use preserves the manifest, yes — mainstream editors do, and the signature accommodates declared edits without breaking. Some social platforms still strip metadata.

Do my images get uploaded to a server?+

Images can be processed locally by the Python module, or by a small verification API you host yourself. For production, run your own instance.

Can someone fake a manifest?+

Anyone can sign anything. A manifest is only trusted if its signing certificate chains back to an issuer on the ISO trust list. Files signed with unrecognized keys raise an "unknown issuer" warning, not a green verdict.

07 — standards

Open, ratified, citable.

Every part of JPEG Trust is published as an international standard. Implement it however you like.

ISO/IEC 21617-1
Part 1: Core foundation
JPEG Trust Part 1 Core Foundation specifies aspects of authenticity, provenance, attribution, intellectual property rights, and integrity through secure and reliable annotation of the media assets throughout their life cycle. This part was published in January 2025, a second edition of this part is currently under development.
ISO/IEC 21617-2
Part 2: Trust profiles catalogue
JPEG Trust Part 2 provides a catalogue of snippets that can be used for the purpose of constructing Trust Profiles, which can be used for assessing the trustworthiness of media assets in given usage scenarios. This Part is currently under development.
ISO/IEC 21617-3
Part 3: Media asset watermarking
JPEG Trust Part 3 defines the use of watermarking as one of the components of the JPEG Trust framework to support tools and mechanisms for content authenticity, provenance, integrity, labelling, and binding between JPEG Trust metadata and corresponding media assets. This Part is currently under development.
ISO/IEC 21617-4
Part 4: Reference software
JPEG Trust Part 4 provides a set of JPEG Trust reference software implementations. This Part is currently under development.

Profile-based trust for any media asset.

Read, embed, verify. Browser tools or a small Python API. Open formats, no lock-in.

08 — funding & acknowledgement

Supported by

This implementation is supported by the UK Engineering and Physical Sciences Research Council (EPSRC) through an Impact Acceleration Account held at Newcastle University.

EPSRC — Engineering and Physical Sciences Research Council
Newcastle University

EPSRC creates knowledge in engineering and physical sciences for UK capability to benefit society and the economy.