IPTC, International Press and Telecommunications Council Standards, was created for exchanging different types of information associated with images.
IPTC is not a file format. In TIFF and EXIF_TIFF files, the IPTC data can be stored in a separate TIFF tag IPTC_NAA (id = 33723), or within Adobe Photoshop Resources (id = 34377). In JPEG and EXIF-JPEG files, the IPTC data is stored in Adobe Photoshop APP13 marker segment.
See TIFF Non-Image Data Structure, JPEG Non-Image Data Structure, and Photoshop Image Resource metadata structure.
![]() |
Use TIFF control parameter SAVE_IPTC_NAA to control the saving of IPTC_NAA tag to TIFF and EXIF_TIFF formats. |
Brief information on IPTC metadata levels is provided in the set of tables below:
- IPTC Level
- Record Level
- Dataset Value Item
- Dataset Value Items Description for IPTC Envelope Record (Record #1)
- Dataset Value Items Description for IPTC Application Record (Record #2)
- Dataset Value Items Description for IPTC Digital News Photo Parameter Record (Record #3)
- Dataset Value Items Description for IPTC Pre-Object Descriptor Record (Record #7)
- Dataset Value Items Description for IPTC Object Record (Record #8)
- Dataset Value Items Description for IPTC Post-Object Descriptor Record (Record #9)
- Callback Required for Writing IPTC Metadata Items
IPTC Level
| Name | Id | Type | ValueType | Value | Value Length | Read Only |
| "IPTC" | 0x1C00 | LEVEL_START | UNDEFINED | NULL | 0 | TRUE |
| Record level 1 | ||||||
| ... | ||||||
| Record level n | ||||||
| "IPTC" | 0x1C00 | LEVEL_END | UNDEFINED | NULL | 0 | TRUE |
All items between items with Name "IPTC" and Id 0x1C00 (Type LEVEL_START and LEVEL_END) are interpreted as IPTC data. If during sending data from application level to filter level the first item is omitted the data will not be interpreted and saved.
Record Level
| Name | Id | Type | ValueType | Value | Value Length | Read Only |
| "IPTC_RECORD" | <Record#> | LEVEL_START | UNDEFINED | NULL | 0 | TRUE |
| Dataset value item | ||||||
| ... | ||||||
| Dataset value item | ||||||
| "IPTC_RECORD" | <Record#> | LEVEL_END | UNDEFINED | NULL | 0 | TRUE |
The<Record#> is identifier of IPTC record. Its value is the number of appropriate IPTC record described in IPTC - NAA IIM4 specification. Record levels must follow in numerical order within IPTC level.
Dataset Value Item
| Name | Id | Type | ValueType | Value | Value Length | Read Only |
| <Dataset name> | <Dataset Id> | VALUE_ITEM | <Value Type> | <Data> | <Value Length> | FALSE |
The available <Dataset name>, <Dataset Id>, <Value Length> and <Value Type> values are described below for each IPTC record according to IPTC-NAA IIM4 specification. Dataset value item can follow in any order within appropriate record level.
Dataset Value Items Description for IPTC Envelope Record (Record #1)
| Item Identifier | Item Name | Value Type | Max. Value Length (for String last NULL is not counted) |
| 0 | "ModelVersion" | AT_TID_WORD | 1 |
| 5 | "Destination" | AT_TID_STRING | 1024 |
| 20 | "FileFormat" | AT_TID_WORD | 1 |
| 22 | "FileFormatVersion" | AT_TID_WORD | 1 |
| 30 | "ServiceIdentifier" | AT_TID_STRING | 10 |
| 40 | "EnvelopeNumber" | AT_TID_STRING | 8 |
| 50 | "ProductID" | AT_TID_STRING | 32 |
| 60 | "EnvelopePriority" | AT_TID_STRING | 1 |
| 70 | "DateSent" | AT_TID_STRING | 8 |
| 80 | "TimeSent" | AT_TID_STRING | 11 |
| 90 | "CodedCharacterSet" | AT_TID_STRING | 32 |
| 100 | "UNO" | AT_TID_STRING | 80 |
| 120 | "ARMIdentifier" | AT_TID_WORD | 1 |
| 122 | "ARMVersion" | AT_TID_WORD | 1 |
See also enumIGIPTCRecord1DatasetTags.
Dataset Value Items Description for IPTC Application Record (Record #2)
| Item Identifier | Item Name | Value Type | Max. Value Length (for String last NULL is not counted) |
| 0 | "RecordVersion" | AT_TID_WORD | 1 |
| 3 | "ObjectTypeReference" | AT_TID_STRING | 67 |
| 4 | "ObjectAttributeReference" | AT_TID_STRING | 68 |
| 5 | "ObjectName" | AT_TID_STRING | 64 |
| 7 | "EditStatus" | AT_TID_STRING | 64 |
| 8 | "EditorialUpdate" | AT_TID_STRING | 2 |
| 10 | "Urgency" | AT_TID_STRING | 1 |
| 12 | "SubjectReference" | AT_TID_STRING | 236 |
| 15 | "Category" | AT_TID_STRING | 3 |
| 20 | "SupplementalCategory" | AT_TID_STRING | 32 |
| 22 | "FixtureIdentifier" | AT_TID_STRING | 32 |
| 25 | "Keywords" | AT_TID_STRING | 64 |
| 26 | "ContentLocationCode" | AT_TID_STRING | 3 |
| 27 | "ContentLocationName" | AT_TID_STRING | 64 |
| 30 | "ReleaseDate" | AT_TID_STRING | 8 |
| 35 | "ReleaseTime" | AT_TID_STRING | 11 |
| 37 | "ExpirationDate" | AT_TID_STRING | 8 |
| 38 | "ExpirationTime" | AT_TID_STRING | 11 |
| 40 | "SpecialInstructions" | AT_TID_STRING | 256 |
| 42 | "ActionAdvised" | AT_TID_STRING | 2 |
| 45 | "ReferenceService" | AT_TID_STRING | 10 |
| 47 | "ReferenceDate" | AT_TID_STRING | 8 |
| 50 | "ReferenceNumber" | AT_TID_STRING | 8 |
| 55 | "DateCreated" | AT_TID_STRING | 8 |
| 60 | "TimeCreated" | AT_TID_STRING | 11 |
| 62 | "DigitalCreationDate" | AT_TID_STRING | 8 |
| 63 | "DigitalCreationTime" | AT_TID_STRING | 11 |
| 65 | "OriginatingProgram" | AT_TID_STRING | 32 |
| 70 | "ProgramVersion" | AT_TID_STRING | 10 |
| 75 | "ObjectCycle" | AT_TID_STRING | 1 |
| 80 | "By-line" | AT_TID_STRING | 32 |
| 85 | "By-lineTitle" | AT_TID_STRING | 32 |
| 90 | "City" | AT_TID_STRING | 32 |
| 92 | "Sublocation" | AT_TID_STRING | 32 |
| 95 | "Province/State" | AT_TID_STRING | 32 |
| 100 | "Country/ PrimaryLocationCode" | AT_TID_STRING | 3 |
| 101 | "Country/ PrimaryLocationName" | AT_TID_STRING | 64 |
| 103 | "OriginalTransmission Reference" | AT_TID_STRING | 32 |
| 105 | "Headline" | AT_TID_STRING | 256 |
| 110 | "Credit" | AT_TID_STRING | 32 |
| 115 | "Source" | AT_TID_STRING | 32 |
| 116 | "CopyrightNotice" | AT_TID_STRING | 128 |
| 118 | "Contact" | AT_TID_STRING | 128 |
| 120 | "Caption/Abstract" | AT_TID_STRING | 2000 |
| 122 | "Writer/Editor" | AT_TID_STRING | 32 |
| 125 | "RasterizedCaption" | AT_TID_BYTE | 7360 |
| 130 | "ImageType" | AT_TID_STRING | 2 |
| 131 | "ImageOrientation" | AT_TID_STRING | 1 |
| 135 | "LanguageIdentifier" | AT_TID_STRING | 3 |
| 150 | "AudioType" | AT_TID_STRING | 2 |
| 151 | "AudioSamplingRate" | AT_TID_STRING | 6 |
| 152 | "AudioSamplingResolution" | AT_TID_STRING | 2 |
| 153 | "AudioDuration" | AT_TID_STRING | 6 |
| 154 | "AudioOutcue" | AT_TID_STRING | 64 |
| 200 | "ObjectDataPreview FileFormat" | AT_TID_WORD | 1 |
| 201 | "ObjectDataPreview FileFormatVersion" | AT_TID_WORD | 1 |
| 202 | "ObjectDataPreviewData" | AT_TID_BYTE | Undefined |
See also enumIGIPTCRecord2DatasetTags.
Dataset Value Items Description for IPTC Digital News Photo Parameter Record (Record #3)
| Item Identifier | Item Name | Value Type | Max. Value Length (for String last NULL is not counted) |
| 0 | "RecordVersion" | AM_TID_TXT_UINT16 | 1 |
| 10 | "PictureNumber" | AM_TID_RAW_DATA | 16 |
| 20 | "PixelsPerLine" | AM_TID_TXT_UINT16 | 1 |
| 30 | "NumberOfLine" | AM_TID_TXT_UINT16 | 1 |
| 40 | "PixelSizeInScanningDirection" | AM_TID_TXT_UINT16 | 1 |
| 50 | "PixelSizePerpendicularTo ScanningDirection" | AM_TID_TXT_UINT16 | 1 |
| 55 | "SupplementType" | AM_TID_TXT_UINT8 | 1 |
| 60 | "ColourRepresentation" | AM_TID_TXT_UINT8 | 2 |
| 64 | "InterchangeColourSpace" | AM_TID_TXT_UINT8 | 1 |
| 65 | "ColourSequence" | AM_TID_TXT_UINT8 | 4 |
| 66 | "ICCInputColourProfile" | AM_TID_RAW_DATA | Undefined |
| 70 | "ColourCalibrationMatrixTable" | AM_TID_RAW_DATA | Undefined |
| 80 | "LookupTable" | AM_TID_RAW_DATA | 131072 |
| 84 | "NumberOfIndexEntries" | AM_TID_TXT_UINT16 | 1 |
| 85 | "ColourPalette" | AM_TID_RAW_DATA | Undefined |
| 86 | "NumberOfBitsPerSample" | AM_TID_TXT_UINT8 | 1 |
| 90 | "SamplingStructure" | AM_TID_TXT_UINT8 | 1 |
| 100 | "ScanningDirection" | AM_TID_TXT_UINT8 | 1 |
| 102 | "ImageRotation" | AM_TID_TXT_UINT8 | 1 |
| 110 | "DataCompressionMethod" | AM_TID_RAW_DATA | 4 |
| 120 | "QuantisationMethod" | AM_TID_TXT_UINT8 | 1 |
| 125 | "EndPoints" | AM_TID_TXT_UINT8 | Undefined |
| 130 | "ExcursionTolerance" | AM_TID_TXT_UINT8 | 1 |
| 135 | "BitsPerComponent" | AM_TID_TXT_UINT8 | Undefined |
| 140 | "MaximumDensityRange" | AM_TID_TXT_UINT16 | 1 |
| 145 | "GammaCompensatedValue" | AM_TID_TXT_UINT16 | 1 |
See also enumIGIPTCRecord3DatasetTags.
Dataset Value Items Description for IPTC Pre-Object Descriptor Record (Record #7)
| Item Identifier | Item Name | Value Type | Max. Value Length (for String last NULL is not counted) |
| 10 | "SizeMode" | AM_TID_TXT_UINT8 | 1 |
| 20 | "MaxSubfileSize" | AM_TID_TXT_UINT8 or AM_TID_TXT_UINT16 or AM_TID_TXT_UINT32 | 1 |
| 90 | "ObjectDataSizeAnnounced" | AM_TID_TXT_UINT8 or AM_TID_TXT_UINT16 or AM_TID_TXT_UINT32 | 1 |
| 95 | "MaximumObjectDataSize" | AM_TID_TXT_UINT8 or AM_TID_TXT_UINT16 or AM_TID_TXT_UINT32 | 1 |
See also enumIGIPTCRecord7DatasetTags.
Dataset Value Items Description for IPTC Object Record (Record #8)
| Item Identifier | Item Name | Value Type | Max. Value Length (for String last NULL is not counted) |
| 10 | "Subfile" | AM_TID_RAW_DATA | Undefined |
See also enumIGIPTCRecord8DatasetTags.
Dataset Value Items Description for IPTC Post-Object Descriptor Record (Record #9)
| Item Identifier | Item Name | Value Type | Max. Value Length (for String last NULL is not counted) |
| 10 | "ConfirmedObjectDataSize" | AM_TID_TXT_UINT8 or AM_TID_TXT_UINT16 or AM_TID_TXT_UINT32 | 1 |
See also enumIGIPTCRecord9DatasetTags.
Callback Required for Writing IPTC Metadata Items
All IPTC metadata items can be written using LPAFT_IG_METAD_ITEM_ADD_CB callback only.
