A TIFF file is a header followed by image file directories (IFDs), each a list of numbered tags. Metadata is not appended in separate blocks as in JPEG: EXIF, IPTC, XMP and the ICC profile are tags, or pointers stored in tags. EXIF itself borrows this layout, which is why the Exif segment of a JPEG contains a small TIFF file.
The first eight bytes
The header gives the byte order, the number 42, and the offset of the first IFD:
$ xxd -l 8 photo.tif
00000000: 4949 2a00 0800 0000 II*.....II means little-endian (Intel), MM big-endian (Motorola). Here the first IFD starts right after the header, at offset 8. Each IFD is an entry count, then 12-byte entries (tag ID, data type, value count, and either the value or an offset to it), then the offset of the next IFD, or zero if there is none. Anything longer than four bytes lives elsewhere in the file and is reached through its offset, so a TIFF reader is mostly a pointer follower.
Where TIFF metadata sits
Descriptive fields such as Artist, Copyright, ImageDescription, Make, Model and Software are plain tags in IFD0, next to the image structure tags. Everything else hangs off a pointer:
| Tag | ExifTool name | Contents |
|---|---|---|
| 0x8769 | ExifOffset | ExifIFD: exposure, lens, capture dates |
| 0x8825 | GPSInfo | GPS IFD |
| 0x02BC | ApplicationNotes | XMP packet |
| 0x83BB | IPTC-NAA | IPTC IIM datasets |
| 0x8649 | PhotoshopSettings | Photoshop resources, IPTC usually repeated here |
| 0x8773 | ICC_Profile | Color profile |
| 0x014A | SubIFD | Child images such as previews or raw data |
| 0xCD41 | (unnamed in ExifTool 12.76) | C2PA manifest store |
The duplicate IPTC is real: in an ImageMagick TIFF, exiftool -v2 lists the same By-line and CopyrightNotice datasets once under 0x83BB and again under resource 0x0404 inside 0x8649. Edit one copy with a careless tool and readers disagree about the photographer.
Raw formats build on this. DNG is a TIFF extension, and Canon's CR2 uses TIFF headers and IFDs too.
Converting a JPEG to TIFF can drop the EXIF
ImageMagick 6.9.12 turned a 4 MB Canon EOS RP JPEG into an uncompressed 24.9 MB TIFF. XMP, IPTC and ICC made it across. The EXIF did not, not even Make and Model:
$ convert full.jpg photo.tif
$ exiftool -G1 -s -Make -Model -FNumber -XMP:CreatorTool -IPTC:By-line photo.tif
[XMP-xmp] CreatorTool : GIMP 2.10
[IPTC] By-line : Jane DoeCopying the tags back from the source restores them, GPS included if the JPEG had any:
exiftool -tagsfromfile full.jpg -exif:all photo.tifAfter that, -Make -Model -FNumber returned Canon, Canon EOS RP and 16.0. Run the same check on output from scanners and batch converters before archiving: a missing ExifIFD goes unnoticed until someone needs the capture date.
Pages, subfiles and BigTIFF
A multi-page TIFF is a chain of IFDs, one per page, described by SubfileType (0x00FE) and PageNumber (0x0129). ExifTool writes to IFD0 unless told otherwise. On a two-page file made with ImageMagick, exiftool -Artist="Jane Doe" changed page one only, and exiftool -IFD1:Artist="Jane Doe" was needed for page two. Fax archives and scanned documents are where this bites.
Classic TIFF uses 32-bit offsets, which caps a file at 4 GB. BigTIFF lifts that by using 43 instead of 42 in the header and 8-byte offsets throughout. Its header starts 49 49 2b 00 08 00 00 00, and ExifTool 12.76 reads it but refuses to write it:
Error: ExifTool does not support writing of BigTIFF images - bt.tifFor metadata on BigTIFF, write an XMP sidecar or use the software that produced the file.
Editing TIFF metadata here
TIFF is one of the two formats our metadata editor accepts, along with JPEG. It writes fields like Artist, Copyright and ImageDescription through ExifTool, so the pixel data is not recompressed, and the metadata remover strips a TIFF the same way it strips a JPEG. A full strip also removes the ICC profile, which matters more for TIFF than for most formats because print and archive files are often in wide-gamut spaces like Adobe RGB. Capture dates are editable too, in EXIF format; how to change the date taken explains which of the three dates to touch.