TIFF: The Professional Image Standard
The Tagged Image File Format (TIFF) remains the gold standard for professional photography, scanning, archival, and publishing workflows. Unlike JPEG's lossy compression or PNG's single-image limitation, TIFF supports multiple compression options—lossless and lossy—within a single file, making it ideally suited for workflows where image quality must never be compromised during intermediate processing.
TIFF Container Architecture: IFD and Image Data
TIFF's strength lies in its extraordinarily flexible directory-based structure. Every TIFF file begins with an 8-byte header specifying byte order (little-endian II or big-endian MM) and version (typically 42). This header immediately follows Image File Directory (IFD) pointers—the key to TIFF's extensibility.
IFD Structure: Each IFD is a sequence of 12-byte directory entries. Each entry contains a tag number (2 bytes), data type (2 bytes: 1=BYTE, 2=ASCII, 3=SHORT, 4=LONG, 5=RATIONAL, etc.), count (4 bytes), and value/offset (4 bytes). This design allows TIFF to embed arbitrary metadata—resolution, color space, compression scheme, datetime, copyright, camera make/model—without breaking backward compatibility.
A single TIFF file can contain multiple IFDs linked via offsets, enabling:
- Multi-image TIFF (MTIFF): Store entire page sequences (scan jobs) in one file, each with independent resolution, color space, and compression
- Thumbnail chains: Store full-resolution + preview images in parallel
- Pyramidal TIFF: Store a base image + downsampled copies for fast thumbnail generation
Compression Strategies: Lossless vs Lossy
Lossless Compression:
- Uncompressed (Tag 259 = 1): Raw pixel data; largest files but zero processing time
- LZW (Tag 259 = 5): Lempel-Ziv-Welch dictionary-based compression; ~50–70% size reduction for natural images; fully reversible
- PackBits (Tag 259 = 32773): Simple run-length encoding; excellent for synthetic/binary images (scans, diagrams); 80–95% reduction for text
- Deflate (Tag 259 = 8): PNG's DEFLATE; ~10–15% better than LZW on photographic data; slower encoding/decoding
Lossy Compression:
- JPEG (Tag 259 = 7): Embeds full JPEG compressed image data; variable quality; 20:1 typical ratio; retains DCT artifacts
- OJPEG (Tag 259 = 6): Obsolete JPEG; rarely used in modern workflows
Compression Trade-off Example: A 16-bit RGB linear image (50 MP, 300 MB uncompressed):
- Uncompressed TIFF: 300 MB
- LZW TIFF: ~110 MB (professional RAW processing)
- JPEG TIFF: ~8 MB (final distribution, acceptable JPEG artifacts)
Data Types and Bit Depths
TIFF supports pixel depths from 1-bit (monochrome) to 32-bit floating-point per channel:
| Depth | Interpretation | Use Case |
|---|---|---|
| 1-bit | Bilevel (black/white) | FAX, high-contrast scans |
| 4-bit | Indexed color (16 colors) | Legacy graphics |
| 8-bit | Grayscale or indexed color | Standard scanning |
| 16-bit | Grayscale or per-channel | RAW → TIFF workflows, linear light editing |
| 32-bit float | Linear color (HDR-like) | Professional cinema/compositing |
Photometric Interpretation (Tag 262): Specifies color model: 0 = WhiteIsZero, 1 = BlackIsZero, 2 = RGB, 3 = Palette, 4 = Transparency Mask, etc.
Professional Extensions: TIFF-EP and GeoTIFF
TIFF/EP (Electronic Photography): Standardized extension for digital cameras (ISO 12234-2). Mandates:
- 16-bit linear RGB or 32-bit floating-point
- Embedded ICC profile for color space definition
- Strict IFD ordering and tag validation
- Mandatory color filter array (CFA) pattern tags for RAW-like processing
GeoTIFF: Embeds geographic metadata (coordinate system, georeferencing coefficients, elevation data). Essential for remote sensing, cartography, and GIS workflows. A single GeoTIFF can replace external worldfiles.
TIFF in Professional Workflows
Digital Photography: Photographers export RAW files → Adobe DNG (TIFF-based) or proprietary RAW → 16-bit linear TIFF for non-destructive editing → 8-bit sRGB TIFF for archival → JPEG for web.
Document Scanning: Scanner → 1-bit bilevel TIFF (1 MB per page) or 8-bit grayscale TIFF with JPEG compression (100–300 KB per page) → OCR pipeline → searchable PDF.
Printing/Publishing: Design software exports 300 DPI, CMYK TIFF with LZW → Print RIP ingests uncompressed or LZW → Separates into color plates.
Comparison: TIFF vs PNG, JPEG, AVIF
| Aspect | TIFF | PNG | JPEG | AVIF |
|---|---|---|---|---|
| Compression | Optional; lossless or lossy | Lossless only | Lossy | Lossless/lossy |
| Multi-image | Yes (page sequences) | No | No | No |
| Bit depth | 1–32 bits | 8–16 bits per channel | 8 bits per channel | 8–12 bits per channel |
| Metadata | Extensive IFD tags | Basic chunks | Limited markers | Extensive (HEIF) |
| Color profiles | ICC embedded | ICC embedded | Limited | Yes (CICP/ICC) |
| File size | 50–300 MB (raw photography) | 10–50 MB | 1–5 MB | 2–8 MB |
| Web support | Poor (slow loading) | Excellent | Excellent | Excellent |
| Archival rating | Excellent (stable format) | Excellent | Fair (lossy artifacts) | Unknown (format age) |
Processing TIFF in Python
Reading & Writing:
from PIL import Image
import numpy as np
# Open 16-bit RGB TIFF
img = Image.open('photo_linear.tiff')
data = np.array(img) # shape (height, width, 3), dtype uint16
# Modify (non-destructive workflow)
edited = Image.fromarray((data * 0.95).astype(np.uint16), mode='RGB;16')
edited.save('photo_edited.tiff', compression='lzw') # Save with LZW
# Multi-image TIFF (page sequence)
images = Image.open('multi_page.tiff')
for i, page in enumerate(ImageSequence.Iterator(images)):
page.save(f'page_{i}.tiff')
Advanced Metadata:
img = Image.open('scan.tiff')
tags = img.tag_v2
print(tags[270]) # ImageDescription
print(tags[274]) # Orientation
print(tags[282]) # XResolution (DPI)
# Preserve during processing
img_edited.save('out.tiff', info=img.info)
Batch Conversion (TIFF to PDF):
# ImageMagick: preserve 16-bit and metadata
convert input.tiff -depth 16 output.pdf
# Ghostscript: full TIFF sequence to multi-page PDF
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=multi.pdf *.tiff
When to Choose TIFF
- Archival/Long-term storage: No format is more stable; TIFF preservation is industry standard
- RAW processing pipelines: Export RAW → 16-bit linear TIFF → edit → finalize
- Scanning large documents: Multi-page TIFF = single file for 500-page job
- Professional color work: Embedded ICC profiles + 16-bit precision
- GIS/Remote sensing: GeoTIFF embeds coordinate metadata
- Avoid TIFF if: Web delivery (slow), email (file size), editing in consumer apps (Photoshop prefers PSD)
TIFF's complexity is its strength—a single format can accommodate every professional imaging need while maintaining perfect fidelity from acquisition to archive.
Related conversions
Most teams that read this guide convert images in one of these directions: