C2PA Supported Media Types
The tiles above count the container formats. Text adds 14 more, for 77 file and media formats in all. Of those, 20 are covered by Encypher's official C2PA conformance record. That record is a separate and narrower measure, and the two numbers never mean the same thing. Counts come from the signing and verification matrix the API publishes. The tables below list the formats with a detail page of their own.
How Embedding Differs by Format
C2PA uses container-native embedding methods for each format type. The manifest data is placed in the format-standard location for extension data, ensuring compatibility with existing tools that process each format.
Images
15 image formats with JUMBF manifest embedding
| Format | MIME Type | Embedding Method |
|---|---|---|
| JPEG | image/jpeg | JUMBF box appended to file after EOI marker, per C2PA specification |
| PNG | image/png | JUMBF data stored in a custom PNG chunk, per C2PA specification |
| WebP | image/webp | JUMBF data stored in a RIFF-based WebP container chunk |
| TIFF | image/tiff | JUMBF box stored in TIFF IFD structure, per C2PA specification |
| AVIF | image/avif | JUMBF box in ISO BMFF container (AVIF uses HEIF container) |
| HEIC | image/heic | JUMBF box in ISO BMFF/HEIF container |
| HEIC Sequence | image/heic-sequence | JUMBF box in ISO BMFF/HEIF sequence container |
| HEIF | image/heif | JUMBF box in ISO BMFF/HEIF container |
| HEIF Sequence | image/heif-sequence | JUMBF box in ISO BMFF/HEIF sequence container |
| SVG | image/svg+xml | JUMBF data encoded and stored in SVG metadata element |
| DNG | image/x-adobe-dng | JUMBF box stored in TIFF/EP IFD structure (DNG is TIFF-based) |
| GIF | image/gif | JUMBF data stored in GIF application extension block |
| JPEG XL | image/jxl | Custom JUMBF/COSE structural embedding (c2pa-python does not yet natively support JXL) |
Audio
7 audio formats across RIFF, ID3, and ISO BMFF containers
| Format | MIME Type | Embedding Method |
|---|---|---|
| WAV | audio/wav | JUMBF data stored in a RIFF chunk within the WAV container |
| MP3 | audio/mpeg | JUMBF data stored in an ID3v2 GEOB (General Encapsulated Object) frame |
| M4A | audio/mp4 | JUMBF data stored in an ISO BMFF uuid box within the MP4/M4A container |
| AAC | audio/aac | JUMBF data stored in an ISO BMFF uuid box (AAC in MP4/M4A container) |
| FLAC | audio/flac | Custom JUMBF/COSE structural embedding (c2pa-python does not yet natively support FLAC) |
| MPA | audio/mpa | JUMBF data stored in MPEG audio frame structure |
Video
9 video formats with ISO BMFF, Matroska, MXF, and RIFF embedding
| Format | MIME Type | Embedding Method |
|---|---|---|
| MP4 | video/mp4 | JUMBF data stored in an ISO BMFF uuid box within the MP4 container |
| MOV | video/quicktime | JUMBF data stored in a QuickTime uuid atom within the MOV container |
| M4V | video/x-m4v | JUMBF data stored in an ISO BMFF uuid box within the M4V container |
| AVI | video/x-msvideo | JUMBF data stored in a RIFF chunk within the AVI container |
Documents
29 document formats with custom JUMBF/COSE embedding
| Format | MIME Type | Embedding Method |
|---|---|---|
| application/pdf | Custom JUMBF/COSE structural embedding with two-pass manifest insertion (c2pa-python does not yet natively support PDF embedding) | |
| EPUB | application/epub+zip | Custom JUMBF/COSE structural embedding within the EPUB ZIP container |
| DOCX | application/vnd.openxmlformats-officedocument.wordprocessingml.document | Custom JUMBF/COSE structural embedding within the OOXML ZIP container |
| ODT | application/vnd.oasis.opendocument.text | Custom JUMBF/COSE structural embedding within the ODF ZIP container |
| OXPS | application/oxps | Custom JUMBF/COSE structural embedding within the OpenXPS ZIP container |
Fonts
3 font formats with custom JUMBF/COSE embedding
Text Content
Unstructured text - articles, social posts, email, and any plain text - is covered by the C2PA standard for unstructured text, which Encypher contributed to the specification. Text does not have a file container, so provenance is embedded using invisible Unicode characters within the text itself.
Text is not included in the MIME type table because it does not have a single MIME type - it covers text/plain, text/html content bodies, and any unstructured text context. See Text Content Provenance and the C2PA text-provenance standard for details.
Verification Pipeline
Encypher uses two verification pipelines depending on format:
- c2pa-python-native
Formats natively supported by the c2pa-python library: the image formats, most audio formats (WAV, MP3, M4A, AAC), and the ISO BMFF video formats. The c2pa-python library handles manifest extraction and signature verification directly.
- custom-jumbf-cose
Formats requiring custom implementation: FLAC, JPEG XL, the document formats, and the font formats. Encypher implements JUMBF embedding and COSE signing directly for these formats. Verification uses the same cryptographic primitives with custom manifest extraction.
Signing via the API
Every supported media type is accessible through a single signing endpoint. Format detection is automatic based on file content, not file extension:
# Sign any media file - format auto-detected
curl -X POST https://api.encypher.com/api/v1/sign/media \
-H "Authorization: Bearer ey_your_key_here" \
-F "file=@content.pdf"