TIFF/TIF Format: The Professional Imaging Standard
TIFF (Tagged Image File Format) was developed by Aldus Corporation in 1986, later acquired by Adobe, and has remained the gold standard for professional photography, print production, medical imaging, and document archival for nearly four decades. Unlike consumer formats that prioritize file size, TIFF prioritizes data integrity, flexibility, and interoperability β at the cost of very large file sizes. Understanding TIFF's tag-based architecture explains why it remains irreplaceable in professional workflows.
The Tag-Based Architecture
TIFF's defining feature is its use of tags β self-describing data fields that identify both the type and location of data within the file. This design makes TIFF extraordinarily extensible and forward-compatible.
File Structure
A TIFF file begins with an Image File Header (IFH):
Bytes 0-1: Byte order 'II' (Intel/little-endian) or 'MM' (Motorola/big-endian)
Bytes 2-3: Magic number 42 (0x002A) β identifies the file as TIFF
Bytes 4-7: Offset Pointer to the first Image File Directory (IFD)
The Image File Directory (IFD) is a table of tag entries:
Bytes 0-1: Number of directory entries
[Repeated for each tag:]
Bytes 0-1: Tag ID (e.g., 256 = ImageWidth, 257 = ImageLength)
Bytes 2-3: Data type (1=BYTE, 2=ASCII, 3=SHORT, 4=LONG, 5=RATIONAL...)
Bytes 4-7: Count (number of values)
Bytes 8-11: Value/Offset (value if β€4 bytes, else offset to data location)
Bytes N-N+3: Offset to next IFD (0 if last IFD)
Multiple IFDs in one TIFF file = multiple images (pages in a multi-page TIFF, or thumbnail + full-resolution pairs).
Essential TIFF Tags
| Tag ID | Name | Description |
|---|---|---|
| 256 | ImageWidth | Width in pixels |
| 257 | ImageLength | Height in pixels |
| 258 | BitsPerSample | Bit depth per channel (8, 16, 32) |
| 259 | Compression | 1=None, 5=LZW, 6=JPEG, 7=JPEG-2, 32773=PackBits |
| 262 | PhotometricInterpretation | 0=WhiteIsZero, 1=BlackIsZero, 2=RGB, 5=CMYK, 6=YCbCr, 8=CIELab |
| 270 | ImageDescription | Free-text description |
| 271 | Make | Camera manufacturer |
| 272 | Model | Camera model |
| 274 | Orientation | 1=normal, 6=90Β° CW, 8=90Β° CCW, etc. |
| 277 | SamplesPerPixel | Channels: 1=grayscale, 3=RGB, 4=CMYK |
| 278 | RowsPerStrip | For strip-based storage |
| 305 | Software | Creating software |
| 306 | DateTime | "YYYY:MM:DD HH:MM:SS" |
| 315 | Artist | Creator |
| 319 | PrimaryChromaticities | Color primaries (for color management) |
| 320 | ColorMap | For palette/indexed images |
| 339 | SampleFormat | 1=unsigned integer, 2=signed integer, 3=float |
| 700 | XMP | XMP metadata block |
| 34665 | ExifIFD | Pointer to EXIF sub-IFD |
| 34675 | ICCProfile | Embedded ICC color profile |
The PhotometricInterpretation tag is critical: it defines how pixel values map to colors. A CMYK TIFF (value 5) looks like a photographic negative if displayed as RGB β incorrect interpretation causes inverted colors in print workflows.
Bit Depth Options
| Bit Depth | Range | Use Case |
|---|---|---|
| 8-bit | 0β255 per channel | Standard web/print photos |
| 16-bit | 0β65535 per channel | RAW processing, high-precision editing |
| 32-bit float | IEEE 754 float | HDR, scientific imaging, VFX |
| 1-bit | 0 or 1 | Bilevel (black/white) document scanning |
16-bit TIFF is the standard for photography editing workflows β it preserves the precision of RAW files throughout post-processing, allowing aggressive shadow recovery and tone mapping without visible posterization.
32-bit float TIFF is used in:
- OpenEXR replacement: when EXR is not supported but linear light HDR data must be stored
- Scientific imaging: microscopy, astronomy, medical scans
- VFX render passes: depth, normal, motion vector, cryptomatte passes
Compression Options in TIFF
| Compression | Value | Lossless? | Notes |
|---|---|---|---|
| None | 1 | β | Largest files; maximum compatibility |
| PackBits | 32773 | β | Simple RLE; fast encode/decode; limited compression |
| LZW | 5 | β | Best lossless for continuous-tone images |
| Deflate/ZIP | 32946 | β | Better compression than LZW; slower |
| JPEG | 6 or 7 | β | For JPEG-compressed TIFF (smaller; lossy) |
| CCITT Group 3/4 | 3/4 | β | For 1-bit fax/document images only |
For photography archival: LZW or Deflate compression provides 30β50% size reduction with zero quality loss. For maximum compatibility with legacy software: no compression.
Multi-Page TIFF
TIFF supports multiple images in one file via multiple IFDs:
# Create multi-page TIFF from multiple images
convert page1.tif page2.tif page3.tif -compress LZW multipage.tif
# Split multi-page TIFF into individual pages
convert multipage.tif -compress LZW page_%d.tif
# Count pages in multi-page TIFF
identify -format "%n\n" multipage.tif | head -1
Multi-page TIFF is used for:
- Scanned document archival (alternatives: PDF, DjVu)
- Fax transmission (TIFF-F profile, CCITT Group 4 compression)
- Medical imaging sequences (now largely replaced by DICOM)
Color Spaces in TIFF
TIFF's PhotometricInterpretation tag supports:
| Value | Color Space | Use Case |
|---|---|---|
| 0 | WhiteIsZero | Grayscale (inverted) |
| 1 | BlackIsZero | Grayscale (normal) |
| 2 | RGB | Standard photographic images |
| 5 | CMYK | Print pre-press |
| 6 | YCbCr | JPEG-compressed TIFF, video |
| 8 | CIELab | Device-independent color |
| 32803 | CFA | Bayer pattern (RAW sensor data) |
| 32845 | LogL | Logarithmic luminance |
For print production, TIFFs must be in CMYK with an embedded ICC profile (e.g., ISO Coated v2). Software like Photoshop and InDesign use the embedded profile for accurate color conversion from screen (RGB) to print (CMYK).
EXIF and Metadata in TIFF
TIFF was the original container for EXIF metadata β EXIF (Exchangeable Image File Format) was designed as an extension of TIFF. All EXIF tags from digital cameras are stored as TIFF tags in a sub-IFD pointed to by tag 34665.
# Read all TIFF/EXIF metadata
exiftool input.tif
# Embed ICC profile
exiftool -icc_profile<=sRGB_IEC61966-2-1_black_scaled.icc input.tif
# Strip all metadata (privacy)
exiftool -all= input.tif -o stripped.tif
Working with TIFF β Practical Commands
# Convert JPEG to 16-bit TIFF (for editing)
ffmpeg -i input.jpg -vf format=rgb48le output_16bit.tif
# or
convert input.jpg -depth 16 output_16bit.tif
# Convert RAW to 16-bit TIFF with dcraw
dcraw -T -6 -W -q 3 -o 1 input.CR2
# Compress existing TIFF without quality loss
convert input.tif -compress LZW output_lzw.tif
# Convert TIFF to PDF (multi-page)
convert *.tif -compress JPEG -quality 85 output.pdf
# Resize TIFF preserving 16-bit depth
convert input_16bit.tif -depth 16 -resize 50% output_half.tif
# Convert CMYK TIFF to sRGB JPEG
convert input_cmyk.tif -profile cmyk_profile.icc -profile sRGB.icc output.jpg
TIFF vs. Other Formats for Professional Use
| Use Case | TIFF | PNG | JPEG | WebP | EXR |
|---|---|---|---|---|---|
| Photo archival (8-bit) | β | β | β | β | β |
| Photo archival (16-bit) | β | β | β | β (8-bit only) | β |
| Print pre-press (CMYK) | β | β | β | β | β |
| VFX render passes | β | β | β | β | β (preferred) |
| Web delivery | β | β | β | β | β |
| Multi-page documents | β | β | β | β | β |
| HDR (32-bit float) | β | β | β | β | β (preferred) |
| Medical imaging | β (legacy) | β | β | β | β |
BigTIFF β Files Larger Than 4 GB
Standard TIFF uses 32-bit offsets, limiting file size to 4 GB. High-resolution scans (museum digitization at 1200+ DPI), multi-frame microscopy, and astronomical imaging regularly exceed this limit.
BigTIFF (extension .tif or .btf) uses 64-bit offsets, supporting files up to 18 exabytes. The magic number changes from 42 to 43. LibTIFF 4.0+ supports BigTIFF natively.
# Create BigTIFF directly (ImageMagick)
convert huge_scan.tif bigtiff:output.tif
Summary
TIFF earns its place in professional workflows through uncompromising data fidelity, flexible bit depths (8/16/32-bit), CMYK support for print, embedded ICC profiles for color management, and multi-page capability. It is not suitable for web delivery β file sizes are 5β20Γ larger than equivalent JPEG/PNG/WebP. For archival, print pre-press, scientific imaging, and any workflow where data must survive multiple editing generations, TIFF with LZW compression and an embedded ICC profile is the correct choice.