Exchangeable image file format (Exif): format specification

This page hosts a formal specification of Exchangeable image file format (Exif) using Kaitai Struct. This specification can be automatically translated into a variety of programming languages to get a parsing library.

Block diagram

Format specification in Kaitai Struct YAML

meta:
  id: exif
  title: Exchangeable image file format (Exif)
  xref:
    forensicswiki: exif
    justsolve: Exif
    loc:
      - fdd000618 # Exif family
      - fdd000146 # Exif 2.2
    pronom:
      - x-fmt/398 # Exif 2.0
      - x-fmt/390 # Exif 2.1
      - x-fmt/391 # Exif 2.2
      - fmt/645 # Exif 2.21
    wikidata:
      - Q26383099 # Exif image file
      - Q196465 # Exchangeable image file format
  license: CC0-1.0
  ks-version: '0.9'
doc: |
  Sample files (numbers in parentheses show how many files per extension contain
  Exif metadata out of the total):

  * <https://github.com/ianare/exif-py/tree/a69bf74770caf6b333221658f5092ed69f99faac/tests/resources/jpg> (84/93 .jpg, 1/1 .jpeg)
  * <https://github.com/exiftool/exiftool/tree/2200871d9cef988051d2a99d67df3bda6cbb30a8/t/images> (34/41 .jpg, 0/1 .png)
  * <https://github.com/Exiv2/exiv2/tree/648ada43dcb35ce6077f38183ace52d5e2071f64/test/data> (85/155 .jpg, 5/23 .png)
  * <https://github.com/python-pillow/Pillow/tree/807d689a83738027b6f6e0f219a6a6dd30e01c08/Tests/images> (36/55 .jpg, 3/420 .png)
  * <https://github.com/drewnoakes/metadata-extractor-images/tree/651ad0e67aa8d43d358ad05f9bc07b52d8b9ac6e/jpg> (335/430 .jpg)
  * <https://github.com/libexif/libexif-testsuite/tree/8c1f5bbc18d2cbc80b01b3f9b3eb29546310acf2> (15/18 .jpg)
doc-ref:
  - https://www.cipa.jp/std/documents/download_e.html?CIPA_DC-008-2026-E Exif Version 3.1
  - https://www.cipa.jp/std/documents/download_e.html?CIPA_DC-008-2024-E Exif Version 3.0
  - https://web.archive.org/web/20190624045241id_/https://www.cipa.jp/std/documents/e/DC-008-Translation-2019-E.pdf Exif Version 2.32
  - https://web.archive.org/web/20190712232333id_/https://www.cipa.jp/std/documents/e/DC-008-Translation-2016-E.pdf Exif Version 2.31
  - https://www.cipa.jp/std/documents/e/DC-008-2012_E_C.pdf Exif Version 2.3 (with Corrigendum at the end)
  - https://web.archive.org/web/20051228234707id_/https://tsc.jeita.or.jp/avs/data/cp3451_1.pdf Exif Version 2.21 (2003 draft)
  - https://web.archive.org/web/20131018091152id_/https://exif.org/Exif2-2.PDF Exif Version 2.2
  - https://web.archive.org/web/20131111073619id_/https://exif.org/Exif2-1.PDF Exif Version 2.1
seq:
  - id: endianness
    type: u2le
  - id: body
    type: exif_body
types:
  exif_body:
    meta:
      endian:
        switch-on: _root.endianness
        cases:
          0x4949: le
          0x4d4d: be
    seq:
      - id: magic
        type: u2
        valid: 42
      - id: ofs_ifd0
        type: u4
    instances:
      ifd0:
        pos: ofs_ifd0
        type: ifd(false)
    types:
      ifd:
        params:
          - id: is_gps_ifd
            type: bool
        seq:
          - id: num_fields
            type: u2
          - id: fields
            size: 12
            type: ifd_field
            repeat: expr
            repeat-expr: num_fields
          - id: ofs_next_ifd
            type: u4
        instances:
          next_ifd:
            pos: ofs_next_ifd
            type: ifd(is_gps_ifd)
            if: ofs_next_ifd != 0
      ifd_field:
        -webide-representation: '{tag} {gps_tag}'
        seq:
          - id: tag_raw
            type: u2
            doc: |
              Raw numeric tag. Don't read this field - access `tag` or `gps_tag`
              instead.
          - id: field_type
            type: u2
            enum: field_type
          - id: num_values
            type: u4
          - id: ofs_data
            type: u4
            if: not has_immediate_data
        instances:
          tag:
            value: tag_raw
            enum: tag
            if: not _parent.is_gps_ifd
          gps_tag:
            value: tag_raw
            enum: gps_tag
            if: _parent.is_gps_ifd
          bytes_per_value:
            value: |
              field_type == field_type::byte or
              field_type == field_type::ascii or
              field_type == field_type::sbyte or
              field_type == field_type::undefined or
              field_type == field_type::utf8
                ? 1 :
              field_type == field_type::short or
              field_type == field_type::sshort
                ? 2 :
              field_type == field_type::long or
              field_type == field_type::slong or
              field_type == field_type::float or
              field_type == field_type::ifd
                ? 4 :
              field_type == field_type::rational or
              field_type == field_type::srational or
              field_type == field_type::double
                ? 8
                : 0
            doc: |
              Size in bytes of a single value of type `field_type`, or 0 if
              `field_type` is not one of the known types (in which case the size
              cannot be determined and `data` will be empty).
            doc-ref: https://www.media.mit.edu/pia/Research/deepview/exif.html#DataForm
          len_data:
            value: bytes_per_value * num_values
          has_immediate_data:
            value: 'len_data <= 4'
          data:
            io: 'has_immediate_data ? _io : _root._io'
            pos: 'has_immediate_data ? 8 : ofs_data'
            size: len_data
            type:
              switch-on: field_type
              cases:
                field_type::ascii: ascii_string
                field_type::utf8: utf8_string
                field_type::sbyte: sbytes
                field_type::short: shorts
                field_type::sshort: sshorts
                field_type::long: longs
                field_type::slong: slongs
                field_type::rational: rationals
                field_type::srational: srationals
                field_type::float: floats
                field_type::double: doubles
                field_type::ifd: longs
            -webide-parse-mode: eager
          sub_ifd:
            io: _root._io
            pos: |
              field_type == field_type::slong
                ? data.as<slongs>.values.first.as<u4>
                : data.as<longs>.values.first
            type: ifd(tag == tag::gps_info)
            if: |
              num_values == 1 and
              (
                field_type == field_type::long or
                field_type == field_type::ifd or
                (field_type == field_type::slong and data.as<slongs>.values.first >= 0)
              ) and
              (
                tag == tag::exif_offset or
                tag == tag::interop_offset or
                tag == tag::gps_info
              )
            doc: |
              All the "IFD Pointer" tags (as the core Exif standard calls them),
              i.e. `ExifOffset`, `InteropOffset` and `GPSInfo` (using the
              [ExifTool's
              names](https://exiftool.sourceforge.net/TagNames/EXIF.html)),
              should be of type `LONG` (`field_type::long`). However, the type
              `SLONG` (`field_type::slong`) type has also been observed:
              <https://github.com/Exiv2/exiv2/blob/2cd987a731236037b6b78cbff897d08685a8ef49/test/data/FurnaceCreekInn.jpg>

              Both ExifTool and Exiv2 accept `LONG`, `SLONG` and also `IFD`.
              Exiv2 specifically supports only these three types - see
              <https://github.com/Exiv2/exiv2/blob/2cd987a731236037b6b78cbff897d08685a8ef49/src/tiffvisitor_int.cpp#L1141>
              (Git tag "v0.28.8"). ExifTool is more lenient - it even accepts
              any integer type. In practice, real files most likely only use one
              of the three types supported by Exiv2, so we stick with that.
      ascii_string:
        -webide-representation: '{value}'
        seq:
          - id: value
            terminator: 0
            eos-error: false
            doc: |
              According to the core Exif standard, this should be ASCII, but in
              practice, this is not always the case. From
              [ExifTool FAQ](https://exiftool.sourceforge.net/faq.html#Q10):

              > However, it is not uncommon for applications to write UTF-8 or
              other encodings where ASCII is expected.

              Therefore, this field is a byte array, not a string. This is to
              avoid non-ASCII characters being treated as errors in some target
              languages, such as Python. The only assumption is that a null byte
              terminates the value (although sometimes the null byte is missing,
              which we tolerate thanks to the `eos-error: false` setting).

              Here is a sample JPEG file with a `tag::image_description` IFD
              field of type `field_type::ascii` that actually contains UTF-8:
              <https://github.com/Exiv2/exiv2/blob/2cd987a731236037b6b78cbff897d08685a8ef49/test/data/exiv2-bug501.jpg>

              It seems that most modern applications (e.g. GIMP 3.0.6) always
              use UTF-8 when storing Exif metadata. However, there are also
              files with a non-UTF-8 encoding, for example
              <https://github.com/drewnoakes/metadata-extractor-images/blob/651ad0e67aa8d43d358ad05f9bc07b52d8b9ac6e/jpg/Ricoh%20DC-3Z%20(low%20res).jpg>
              has a `tag::copyright` IFD field with a value encoded in
              ISO-8859-1 (Latin-1).
      utf8_string:
        -webide-representation: '{value}'
        seq:
          - id: value
            type: strz
            encoding: UTF-8
            eos-error: false
      sbytes:
        seq:
          - id: values
            type: s1
            repeat: expr
            repeat-expr: _parent.num_values
      shorts:
        seq:
          - id: values
            type: u2
            repeat: expr
            repeat-expr: _parent.num_values
      sshorts:
        seq:
          - id: values
            type: s2
            repeat: expr
            repeat-expr: _parent.num_values
      longs:
        seq:
          - id: values
            type: u4
            repeat: expr
            repeat-expr: _parent.num_values
      slongs:
        seq:
          - id: values
            type: s4
            repeat: expr
            repeat-expr: _parent.num_values
      rationals:
        seq:
          - id: values
            type: rational
            repeat: expr
            repeat-expr: _parent.num_values
      rational:
        -webide-representation: '{value:dec} (= {value_num:dec}/{value_den:dec})'
        seq:
          - id: value_num
            type: u4
            doc: Numerator
          - id: value_den
            type: u4
            doc: Denominator
        instances:
          value:
            value: (value_num + 0.0) / value_den
            if: value_den != 0
            doc: |
              If denominator is zero, this instance is disabled to prevent
              `ZeroDivisionError` in Python.

              Here's a sample file with a zero denominator in the IFD fields
              `tag::x_resolution` and `tag::y_resolution` (both of which are of
              type `field_type::rational`):
              <https://github.com/python-pillow/Pillow/blob/807d689a83738027b6f6e0f219a6a6dd30e01c08/Tests/images/exif-dpi-zerodivision.jpg>
      srationals:
        seq:
          - id: values
            type: srational
            repeat: expr
            repeat-expr: _parent.num_values
      srational:
        -webide-representation: '{value:dec} (= {value_num:dec}/{value_den:dec})'
        seq:
          - id: value_num
            type: s4
            doc: Numerator
          - id: value_den
            type: s4
            doc: Denominator
        instances:
          value:
            value: (value_num + 0.0) / value_den
            if: value_den != 0
            doc: |
              If denominator is zero, this instance is disabled to prevent
              `ZeroDivisionError` in Python.

              Here's a sample file with a zero denominator in the IFD field
              `tag::exposure_compensation` of type `field_type::srational`:
              <https://github.com/drewnoakes/metadata-extractor-images/blob/651ad0e67aa8d43d358ad05f9bc07b52d8b9ac6e/jpg/Reconyx%20Hyperfire%20HP4K.jpg>
      floats:
        seq:
          - id: values
            type: f4
            repeat: expr
            repeat-expr: _parent.num_values
      doubles:
        seq:
          - id: values
            type: f8
            repeat: expr
            repeat-expr: _parent.num_values
enums:
  # https://github.com/exiftool/exiftool/blob/2200871d9cef988051d2a99d67df3bda6cbb30a8/lib/Image/ExifTool/Exif.pm#L94-L122 (Git tag "13.59")
  # https://www.media.mit.edu/pia/Research/deepview/exif.html#DataForm
  field_type:
    1: byte
    2: ascii
    3: short
    4: long
    5: rational
    6:
      id: sbyte
      -orig-id: SBYTE
      doc: |
        8-bit signed integer.

        This type is missing from the official Exif specification, but
        it's part of TIFF 6.0. There's no known Exif tag of this type in
        the [standard
        namespace](https://exiftool.sourceforge.net/TagNames/EXIF.html)
        (there's no occurrence of `int8s` on the page), but it's used by
        many vendor-specific tags in `MakerNote` sub-IFDs, for example
        [Nikon](https://exiftool.sourceforge.net/TagNames/Nikon.html)
        (search for `int8s`).

        Unfortunately, this implementation doesn't parse the contents of
        `MakerNote` tags (`tag::maker_note`) yet.
    7: undefined
    8:
      id: sshort
      -orig-id: SSHORT
      doc: |
        16-bit signed integer.

        This type is missing from the official Exif specification, but
        it's part of TIFF 6.0 and some tags use it, for example
        `TimeZoneOffset` (`tag::time_zone_offset`).
    9: slong
    10: srational
    11:
      id: float
      -orig-id: FLOAT
      doc: |
        Single precision (4-byte) IEEE 754 float.

        This type is missing from the official Exif specification, but
        it's part of TIFF 6.0 and some tags use it, for example
        `ProfileToneCurve` (`tag::profile_tone_curve`).
    12:
      id: double
      -orig-id: DOUBLE
      doc: |
        Double precision (8-byte) IEEE 754 float.

        This type is missing from the official Exif specification, but
        it's part of TIFF 6.0 and some tags use it, for example
        `NoiseProfile` (`tag::noise_profile`).
    13:
      id: ifd
      -orig-id: IFD
      doc: |
        Offset of an IFD (32-bit unsigned integer).

        This type is missing from the official Exif specification, but
        it was defined in the [TIFF Technical Note
        1](https://www.alternatiff.com/resources/TIFFPM6.pdf) (page 4).
        There's no known Exif tag of this type in the [standard
        namespace](https://exiftool.sourceforge.net/TagNames/EXIF.html)
        (there's no occurrence of `ifd` on the page), but there are some
        Olympus-specific tags in `MakerNote` sub-IFDs, e.g.
        `EquipmentIFD` or `CameraSettingsIFD`. See
        <https://github.com/exiftool/exiftool/blob/2200871d9cef988051d2a99d67df3bda6cbb30a8/lib/Image/ExifTool/Olympus.pm>
        (Git tag "13.59") - search for `'ifd'`. See also the sample file
        <https://github.com/exiftool/exiftool/blob/2200871d9cef988051d2a99d67df3bda6cbb30a8/t/images/Olympus2.jpg>,
        which contains these tags.
    129: utf8
  # https://exiftool.sourceforge.net/TagNames/GPS.html
  gps_tag:
    0x0000: gps_version_id
    0x0001: gps_latitude_ref
    0x0002: gps_latitude
    0x0003: gps_longitude_ref
    0x0004: gps_longitude
    0x0005: gps_altitude_ref
    0x0006: gps_altitude
    0x0007: gps_time_stamp
    0x0008: gps_satellites
    0x0009: gps_status
    0x000a: gps_measure_mode
    0x000b: gps_dop
    0x000c: gps_speed_ref
    0x000d: gps_speed
    0x000e: gps_track_ref
    0x000f: gps_track
    0x0010: gps_img_direction_ref
    0x0011: gps_img_direction
    0x0012: gps_map_datum
    0x0013: gps_dest_latitude_ref
    0x0014: gps_dest_latitude
    0x0015: gps_dest_longitude_ref
    0x0016: gps_dest_longitude
    0x0017: gps_dest_bearing_ref
    0x0018: gps_dest_bearing
    0x0019: gps_dest_distance_ref
    0x001a: gps_dest_distance
    0x001b: gps_processing_method
    0x001c: gps_area_information
    0x001d: gps_date_stamp
    0x001e: gps_differential
    0x001f: gps_h_positioning_error
  tag:
    0x0001: interop_index
    0x0002:
      id: interop_version
      doc: Interoperability Version (not in the Exif spec, but used in practice)
      doc-ref: https://github.com/exiftool/exiftool/blob/2200871d9cef988051d2a99d67df3bda6cbb30a8/lib/Image/ExifTool/Exif.pm#L429-L437 Git tag "13.59"
    0x0100: image_width
    0x0101: image_height
    0x0102: bits_per_sample
    0x0103: compression
    0x0106: photometric_interpretation
    0x0107: thresholding
    0x0108: cell_width
    0x0109: cell_length
    0x010a: fill_order
    0x010d: document_name
    0x010e: image_description
    0x010f: make
    0x0110: model
    0x0111: strip_offsets
    0x0112: orientation
    0x0115: samples_per_pixel
    0x0116: rows_per_strip
    0x0117: strip_byte_counts
    0x0118: min_sample_value
    0x0119: max_sample_value
    0x011a: x_resolution
    0x011b: y_resolution
    0x011c: planar_configuration
    0x011d: page_name
    0x011e: x_position
    0x011f: y_position
    0x0120: free_offsets
    0x0121: free_byte_counts
    0x0122: gray_response_unit
    0x0123: gray_response_curve
    0x0124: t4_options
    0x0125: t6_options
    0x0128: resolution_unit
    0x0129: page_number
    0x012c: color_response_unit
    0x012d: transfer_function
    0x0131: software
    0x0132: modify_date
    0x013b: artist
    0x013c: host_computer
    0x013d: predictor
    0x013e: white_point
    0x013f: primary_chromaticities
    0x0140: color_map
    0x0141: halftone_hints
    0x0142: tile_width
    0x0143: tile_length
    0x0144: tile_offsets
    0x0145: tile_byte_counts
    0x0146: bad_fax_lines
    0x0147: clean_fax_data
    0x0148: consecutive_bad_fax_lines
    0x014a: sub_ifd
    0x014c: ink_set
    0x014d: ink_names
    0x014e: numberof_inks
    0x0150: dot_range
    0x0151: target_printer
    0x0152: extra_samples
    0x0153: sample_format
    0x0154: s_min_sample_value
    0x0155: s_max_sample_value
    0x0156: transfer_range
    0x0157: clip_path
    0x0158: x_clip_path_units
    0x0159: y_clip_path_units
    0x015a: indexed
    0x015b: jpeg_tables
    0x015f: opi_proxy
    0x0190: global_parameters_ifd
    0x0191: profile_type
    0x0192: fax_profile
    0x0193: coding_methods
    0x0194: version_year
    0x0195: mode_number
    0x01b1: decode
    0x01b2: default_image_color
    0x01b3: t82_options
    0x01b5: jpeg_tables2
    0x0200: jpeg_proc
    0x0201: thumbnail_offset
    0x0202: thumbnail_length
    0x0203: jpeg_restart_interval
    0x0205: jpeg_lossless_predictors
    0x0206: jpeg_point_transforms
    0x0207: jpegq_tables
    0x0208: jpegdc_tables
    0x0209: jpegac_tables
    0x0211: y_cb_cr_coefficients
    0x0212: y_cb_cr_sub_sampling
    0x0213: y_cb_cr_positioning
    0x0214: reference_black_white
    0x022f: strip_row_counts
    0x02bc: application_notes
    0x03e7: uspto_miscellaneous
    0x1000: related_image_file_format
    0x1001: related_image_width
    0x1002: related_image_height
    0x4746: rating
    0x4747: xp_dip_xml
    0x4748: stitch_info
    0x4749: rating_percent
    0x7000: sony_raw_file_type
    0x7032: light_falloff_params
    0x7035: chromatic_aberration_corr_params
    0x7037: distortion_corr_params
    0x800d: image_id
    0x80a3: wang_tag1
    0x80a4: wang_annotation
    0x80a5: wang_tag3
    0x80a6: wang_tag4
    0x80b9: image_reference_points
    0x80ba: region_xform_tack_point
    0x80bb: warp_quadrilateral
    0x80bc: affine_transform_mat
    0x80e3: matteing
    0x80e4: data_type
    0x80e5: image_depth
    0x80e6: tile_depth
    0x8214: image_full_width
    0x8215: image_full_height
    0x8216: texture_format
    0x8217: wrap_modes
    0x8218: fov_cot
    0x8219: matrix_world_to_screen
    0x821a: matrix_world_to_camera
    0x827d: model2
    0x828d: cfa_repeat_pattern_dim
    0x828e: cfa_pattern2
    0x828f: battery_level
    0x8290: kodak_ifd
    0x8298: copyright
    0x829a: exposure_time
    0x829d: f_number
    0x82a5: md_file_tag
    0x82a6: md_scale_pixel
    0x82a7: md_color_table
    0x82a8: md_lab_name
    0x82a9: md_sample_info
    0x82aa: md_prep_date
    0x82ab: md_prep_time
    0x82ac: md_file_units
    0x830e: pixel_scale
    0x8335: advent_scale
    0x8336: advent_revision
    0x835c: uic1_tag
    0x835d: uic2_tag
    0x835e: uic3_tag
    0x835f: uic4_tag
    0x83bb: iptc_naa
    0x847e: intergraph_packet_data
    0x847f: intergraph_flag_registers
    0x8480: intergraph_matrix
    0x8481: ingr_reserved
    0x8482: model_tie_point
    0x84e0: site
    0x84e1: color_sequence
    0x84e2: it8_header
    0x84e3: raster_padding
    0x84e4: bits_per_run_length
    0x84e5: bits_per_extended_run_length
    0x84e6: color_table
    0x84e7: image_color_indicator
    0x84e8: background_color_indicator
    0x84e9: image_color_value
    0x84ea: background_color_value
    0x84eb: pixel_intensity_range
    0x84ec: transparency_indicator
    0x84ed: color_characterization
    0x84ee: hc_usage
    0x84ef: trap_indicator
    0x84f0: cmyk_equivalent
    0x8546: sem_info
    0x8568: afcp_iptc
    0x85b8: pixel_magic_jbig_options
    0x85d7: jpl_carto_ifd
    0x85d8: model_transform
    0x8602: wb_grgb_levels
    0x8606: leaf_data
    0x8649: photoshop_settings
    0x8769: exif_offset
    0x8773: icc_profile
    0x877f: tiff_fx_extensions
    0x8780: multi_profiles
    0x8781: shared_data
    0x8782: t88_options
    0x87ac: image_layer
    0x87af: geo_tiff_directory
    0x87b0: geo_tiff_double_params
    0x87b1: geo_tiff_ascii_params
    0x87be: jbig_options
    0x8822: exposure_program
    0x8824: spectral_sensitivity
    0x8825: gps_info
    0x8827: iso
    0x8828: opto_electric_conv_factor
    0x8829: interlace
    0x882a: time_zone_offset
    0x882b: self_timer_mode
    0x8830: sensitivity_type
    0x8831: standard_output_sensitivity
    0x8832: recommended_exposure_index
    0x8833: iso_speed
    0x8834: iso_speed_latitudeyyy
    0x8835: iso_speed_latitudezzz
    0x885c: fax_recv_params
    0x885d: fax_sub_address
    0x885e: fax_recv_time
    0x8871: fedex_edr
    0x888a: leaf_sub_ifd
    0x9000: exif_version
    0x9003: date_time_original
    0x9004: create_date
    0x9009: google_plus_upload_code
    0x9010: offset_time
    0x9011: offset_time_original
    0x9012: offset_time_digitized
    0x9101: components_configuration
    0x9102: compressed_bits_per_pixel
    0x9201: shutter_speed_value
    0x9202: aperture_value
    0x9203: brightness_value
    0x9204: exposure_compensation
    0x9205: max_aperture_value
    0x9206: subject_distance
    0x9207: metering_mode
    0x9208: light_source
    0x9209: flash
    0x920a: focal_length
    0x920b: flash_energy
    0x920c: spatial_frequency_response
    0x920d: noise
    0x920e: focal_plane_x_resolution
    0x920f: focal_plane_y_resolution
    0x9210: focal_plane_resolution_unit
    0x9211: image_number
    0x9212: security_classification
    0x9213: image_history
    0x9214: subject_area
    0x9215: exposure_index
    0x9216: tiff_ep_standard_id
    0x9217: sensing_method
    0x923a: cip3_data_file
    0x923b: cip3_sheet
    0x923c: cip3_side
    0x923f: sto_nits
    0x927c: maker_note
    0x9286: user_comment
    0x9290: sub_sec_time
    0x9291: sub_sec_time_original
    0x9292: sub_sec_time_digitized
    0x932f: ms_document_text
    0x9330: ms_property_set_storage
    0x9331: ms_document_text_position
    0x935c: image_source_data
    0x9400: ambient_temperature
    0x9401: humidity
    0x9402: pressure
    0x9403: water_depth
    0x9404: acceleration
    0x9405: camera_elevation_angle
    0x9c9b: xp_title
    0x9c9c: xp_comment
    0x9c9d: xp_author
    0x9c9e: xp_keywords
    0x9c9f: xp_subject
    0xa000: flashpix_version
    0xa001: color_space
    0xa002: exif_image_width
    0xa003: exif_image_height
    0xa004: related_sound_file
    0xa005: interop_offset
    0xa010: samsung_raw_pointers_offset
    0xa011: samsung_raw_pointers_length
    0xa101: samsung_raw_byte_order
    0xa102: samsung_raw_unknown
    0xa20b: flash_energy2
    0xa20c: spatial_frequency_response2
    0xa20d: noise2
    0xa20e: focal_plane_x_resolution2
    0xa20f: focal_plane_y_resolution2
    0xa210: focal_plane_resolution_unit2
    0xa211: image_number2
    0xa212: security_classification2
    0xa213: image_history2
    0xa214: subject_location
    0xa215: exposure_index2
    0xa216: tiff_ep_standard_id2
    0xa217: sensing_method2
    0xa300: file_source
    0xa301: scene_type
    0xa302: cfa_pattern
    0xa401: custom_rendered
    0xa402: exposure_mode
    0xa403: white_balance
    0xa404: digital_zoom_ratio
    0xa405: focal_length_in35mm_format
    0xa406: scene_capture_type
    0xa407: gain_control
    0xa408: contrast
    0xa409: saturation
    0xa40a: sharpness
    0xa40b: device_setting_description
    0xa40c: subject_distance_range
    0xa420: image_unique_id
    0xa430: owner_name
    0xa431: serial_number
    0xa432: lens_info
    0xa433: lens_make
    0xa434: lens_model
    0xa435: lens_serial_number
    0xa480: gdal_metadata
    0xa481: gdal_no_data
    0xa500: gamma
    0xafc0: expand_software
    0xafc1: expand_lens
    0xafc2: expand_film
    0xafc3: expand_filter_lens
    0xafc4: expand_scanner
    0xafc5: expand_flash_lamp
    0xbc01: pixel_format
    0xbc02: transformation
    0xbc03: uncompressed
    0xbc04: image_type
    0xbc80: image_width2
    0xbc81: image_height2
    0xbc82: width_resolution
    0xbc83: height_resolution
    0xbcc0: image_offset
    0xbcc1: image_byte_count
    0xbcc2: alpha_offset
    0xbcc3: alpha_byte_count
    0xbcc4: image_data_discard
    0xbcc5: alpha_data_discard
    0xc427: oce_scanjob_desc
    0xc428: oce_application_selector
    0xc429: oce_id_number
    0xc42a: oce_image_logic
    0xc44f: annotations
    0xc4a5: print_im
    0xc573: original_file_name
    0xc580: uspto_original_content_type
    0xc612: dng_version
    0xc613: dng_backward_version
    0xc614: unique_camera_model
    0xc615: localized_camera_model
    0xc616: cfa_plane_color
    0xc617: cfa_layout
    0xc618: linearization_table
    0xc619: black_level_repeat_dim
    0xc61a: black_level
    0xc61b: black_level_delta_h
    0xc61c: black_level_delta_v
    0xc61d: white_level
    0xc61e: default_scale
    0xc61f: default_crop_origin
    0xc620: default_crop_size
    0xc621: color_matrix1
    0xc622: color_matrix2
    0xc623: camera_calibration1
    0xc624: camera_calibration2
    0xc625: reduction_matrix1
    0xc626: reduction_matrix2
    0xc627: analog_balance
    0xc628: as_shot_neutral
    0xc629: as_shot_white_xy
    0xc62a: baseline_exposure
    0xc62b: baseline_noise
    0xc62c: baseline_sharpness
    0xc62d: bayer_green_split
    0xc62e: linear_response_limit
    0xc62f: camera_serial_number
    0xc630: dng_lens_info
    0xc631: chroma_blur_radius
    0xc632: anti_alias_strength
    0xc633: shadow_scale
    0xc634: sr2_private
    0xc635: maker_note_safety
    0xc640: raw_image_segmentation
    0xc65a: calibration_illuminant1
    0xc65b: calibration_illuminant2
    0xc65c: best_quality_scale
    0xc65d: raw_data_unique_id
    0xc660: alias_layer_metadata
    0xc68b: original_raw_file_name
    0xc68c: original_raw_file_data
    0xc68d: active_area
    0xc68e: masked_areas
    0xc68f: as_shot_icc_profile
    0xc690: as_shot_pre_profile_matrix
    0xc691: current_icc_profile
    0xc692: current_pre_profile_matrix
    0xc6bf: colorimetric_reference
    0xc6c5: s_raw_type
    0xc6d2: panasonic_title
    0xc6d3: panasonic_title2
    0xc6f3: camera_calibration_sig
    0xc6f4: profile_calibration_sig
    0xc6f5: profile_ifd
    0xc6f6: as_shot_profile_name
    0xc6f7: noise_reduction_applied
    0xc6f8: profile_name
    0xc6f9: profile_hue_sat_map_dims
    0xc6fa: profile_hue_sat_map_data1
    0xc6fb: profile_hue_sat_map_data2
    0xc6fc: profile_tone_curve
    0xc6fd: profile_embed_policy
    0xc6fe: profile_copyright
    0xc714: forward_matrix1
    0xc715: forward_matrix2
    0xc716: preview_application_name
    0xc717: preview_application_version
    0xc718: preview_settings_name
    0xc719: preview_settings_digest
    0xc71a: preview_color_space
    0xc71b: preview_date_time
    0xc71c: raw_image_digest
    0xc71d: original_raw_file_digest
    0xc71e: sub_tile_block_size
    0xc71f: row_interleave_factor
    0xc725: profile_look_table_dims
    0xc726: profile_look_table_data
    0xc740: opcode_list1
    0xc741: opcode_list2
    0xc74e: opcode_list3
    0xc761: noise_profile
    0xc763: time_codes
    0xc764: frame_rate
    0xc772: t_stop
    0xc789: reel_name
    0xc791: original_default_final_size
    0xc792: original_best_quality_size
    0xc793: original_default_crop_size
    0xc7a1: camera_label
    0xc7a3: profile_hue_sat_map_encoding
    0xc7a4: profile_look_table_encoding
    0xc7a5: baseline_exposure_offset
    0xc7a6: default_black_render
    0xc7a7: new_raw_image_digest
    0xc7a8: raw_to_preview_gain
    0xc7b5: default_user_crop
    0xea1c: padding
    0xea1d: offset_schema
    0xfde8: owner_name2
    0xfde9: serial_number2
    0xfdea: lens
    0xfe00: kdc_ifd
    0xfe4c: raw_file
    0xfe4d: converter
    0xfe4e: white_balance2
    0xfe51: exposure
    0xfe52: shadows
    0xfe53: brightness
    0xfe54: contrast2
    0xfe55: saturation2
    0xfe56: sharpness2
    0xfe57: smoothness
    0xfe58: moire_filter