Newcastle University research prototype

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.

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

Mostly trustworthy · 12 of 13 checks passed

Checked against a newsroom wire photo standard · signed by a photographer · no AI used
Provenance timeline
capture → color_adjust → crop_3:4 → redact → publish
captured14 Mar 2026 · 09:42 UTC
deviceCamera
authorelena.rivera
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 trust 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.

A capture device can sign an image when it is taken.

A capture device or app can sign a Trust Manifest into the image at capture. It can record the creation action, the time and a hash of the pixels.

action: "created"
when: "2026-03-14T09:42:11Z"
digitalSourceType: ".../digitalCapture"

Every edit is recorded — nothing is hidden.

Crops, colour corrections, AI fills and redactions can each be recorded as an action: what was done, when, and with which tool.

action: "color_adjustments"
softwareAgent: { name: "image editor" }
when: "2026-03-14T10:05:00Z"

Check the image against your own standards.

You decide in a Trust Profile what makes an image trustworthy for your context. A newsroom might require author identity, an edit history and an AI declaration. The tool checks each requirement and gives a clear verdict.

profile: "Newsroom Profile"
verdict: "mostly_trusted"
score: 0.9231 · passed_checks: 12 · total_checks: 13

Open formats. Works with existing tools.

Built on JPEG Trust Part 1, second edition. Trust Profiles are plain YAML files that you can keep under version control.

format: "jpt trust record"
profile: "newsroom_profile.yml"
# JPEG Trust Part 1 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 in an image and see what its Trust Record says: who made it, when, any recorded edits, and any declared AI use.

read · 1 manifest
manifests: [1]
assertion: "jpt.rights"
digitalSourceType: ".../digitalCapture"
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 & read back
container: "JPEG APP11 (JUMBF)"
signature: "COSE_Sign1"
read_back: "Manifest readable"
03

Verify

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

Verify · Mostly trustworthy
verdict: "mostly_trusted"
passed_checks: 12 · total_checks: 13
score: 0.9231
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
import json
from jpegtrust import verify_image

report = verify_image("photo.jpg", "profile.yaml")

print(report.verdict)        # mostly_trusted
print(report.score)          # 0.9231
print(report.passed_checks, report.total_checks)  # 12 13

# Write the JSON report to disk
with open("report.json", "w") as f:
    json.dump(report.to_dict(), f, indent=2)
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

Show how your work was made, without sharing the raw file.

Sign at export. Anyone can then check who signed the image and what it records, 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. We acknowledge JPEG Trust colleagues for their valuable feedback.

EPSRC — Engineering and Physical Sciences Research Council Newcastle University JPEG Trust