Skip to main content

C2PA Supported Media Types

All 31 MIME types supported with C2PA provenance embedding. One API, one key, all your content types.

13
Images
6
Audio
4
Video
5
Documents
3
Fonts

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

13 image formats with JUMBF manifest embedding

FormatMIME TypeEmbedding Method
JPEGimage/jpegJUMBF box appended to file after EOI marker, per C2PA specification
PNGimage/pngJUMBF data stored in a custom PNG chunk, per C2PA specification
WebPimage/webpJUMBF data stored in a RIFF-based WebP container chunk
TIFFimage/tiffJUMBF box stored in TIFF IFD structure, per C2PA specification
AVIFimage/avifJUMBF box in ISO BMFF container (AVIF uses HEIF container)
HEICimage/heicJUMBF box in ISO BMFF/HEIF container
HEIC Sequenceimage/heic-sequenceJUMBF box in ISO BMFF/HEIF sequence container
HEIFimage/heifJUMBF box in ISO BMFF/HEIF container
HEIF Sequenceimage/heif-sequenceJUMBF box in ISO BMFF/HEIF sequence container
SVGimage/svg+xmlJUMBF data encoded and stored in SVG metadata element
DNGimage/x-adobe-dngJUMBF box stored in TIFF/EP IFD structure (DNG is TIFF-based)
GIFimage/gifJUMBF data stored in GIF application extension block
JPEG XLimage/jxlCustom JUMBF/COSE structural embedding (c2pa-python does not yet natively support JXL)

Audio

6 audio formats across RIFF, ID3, and ISO BMFF containers

FormatMIME TypeEmbedding Method
WAVaudio/wavJUMBF data stored in a RIFF chunk within the WAV container
MP3audio/mpegJUMBF data stored in an ID3v2 GEOB (General Encapsulated Object) frame
M4Aaudio/mp4JUMBF data stored in an ISO BMFF uuid box within the MP4/M4A container
AACaudio/aacJUMBF data stored in an ISO BMFF uuid box (AAC in MP4/M4A container)
FLACaudio/flacCustom JUMBF/COSE structural embedding (c2pa-python does not yet natively support FLAC)
MPAaudio/mpaJUMBF data stored in MPEG audio frame structure

Video

4 video formats with ISO BMFF and RIFF embedding

FormatMIME TypeEmbedding Method
MP4video/mp4JUMBF data stored in an ISO BMFF uuid box within the MP4 container
MOVvideo/quicktimeJUMBF data stored in a QuickTime uuid atom within the MOV container
M4Vvideo/x-m4vJUMBF data stored in an ISO BMFF uuid box within the M4V container
AVIvideo/x-msvideoJUMBF data stored in a RIFF chunk within the AVI container

Documents

5 document formats with custom JUMBF/COSE embedding

FormatMIME TypeEmbedding Method
PDFapplication/pdfCustom JUMBF/COSE structural embedding with two-pass manifest insertion (c2pa-python does not yet natively support PDF embedding)
EPUBapplication/epub+zipCustom JUMBF/COSE structural embedding within the EPUB ZIP container
DOCXapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentCustom JUMBF/COSE structural embedding within the OOXML ZIP container
ODTapplication/vnd.oasis.opendocument.textCustom JUMBF/COSE structural embedding within the ODF ZIP container
OXPSapplication/oxpsCustom JUMBF/COSE structural embedding within the OpenXPS ZIP container

Fonts

3 font formats with custom JUMBF/COSE embedding

FormatMIME TypeEmbedding Method
OTFfont/otfCustom JUMBF/COSE structural embedding in OpenType font tables
TTFfont/ttfCustom JUMBF/COSE structural embedding in TrueType font tables
SFNTfont/sfntCustom JUMBF/COSE structural embedding in SFNT font container tables

Text Content

Unstructured text - articles, social posts, email, and any plain text - is covered by C2PA Section A.7, 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 C2PA Section A.7 for details.

Verification Pipeline

Encypher uses two verification pipelines depending on format:

  • c2pa-python-native

    Formats natively supported by the c2pa-python library: all 13 image formats, 4 of 6 audio formats (WAV, MP3, M4A, AAC, MPA), all 4 video formats. The c2pa-python library handles manifest extraction and signature verification directly.

  • custom-jumbf-cose

    Formats requiring custom implementation: FLAC, JPEG XL, all 5 document formats, all 3 font formats. Encypher implements JUMBF embedding and COSE signing directly for these formats. Verification uses the same cryptographic primitives but with custom manifest extraction.

Signing via the API

All 31 MIME types are 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/v1/sign/media \

-H "Authorization: Bearer ey_your_key_here" \

-F "file=@content.pdf"

Related Resources

All 31 Types in One API

One API key, all media types. Free tier covers 1,000 signing operations per month. Verification is always free.

Related