TIFF Structure Inspector
Open a .tif in your browser: byte order, the IFD chain and its pages, every directory entry, and whether the pixels sit in strips or in tiles.
How to use
- Drop a .tif or .tiff onto the box. A multi-page scan, a tiled file, a BigTIFF or a file some other program refuses all read the same way, and nothing leaves your browser.
- Start at the header: II or MM, 42 or 43, and how many pages the chain has. If the byte order is MM and another reader is giving you absurd dimensions, that is usually the whole story.
- Check the page count in the IFD chain. More than one means that whatever showed you a single image was only reading the first directory and quietly dropped the rest of the document.
- Open a page and read the layout row: strips or tiles, how many pieces, how big, and whether they are contiguous. Tiles need a reader that supports them, and scattered pieces cannot be streamed.
- Read the findings last. A piece whose offset plus byte count runs past the end of the file is named individually, with how many bytes are missing.
About this tool
ShowHide
Reads the container, not the picture. A TIFF opens with eight bytes that decide everything after them: II or MM, the byte-order mark that every multi-byte value in the file is written through; then the magic number 42, or 43, which means BigTIFF and brings eight-byte offsets and a wider directory entry; and then the offset of the first image file directory. From there a TIFF is a linked list — each IFD ends with the offset of the next one, and each IFD is a page, so the scanner that produced a forty-page document wrote forty of them while your viewer showed you the first. This tool walks that chain, remembers every offset it has already visited so that a file whose next-IFD pointer runs backwards stops instead of hanging, and reports each directory's own file offset and entry count. Inside a directory, every entry is a tag, a type, a count and four bytes of value: if the value fits in four bytes it lives right there, and if it does not, those four bytes hold an offset instead. That one rule is why a TIFF's contents are scattered through the file rather than laid out behind its header, and each entry here is marked with the side of the line it falls on. Then comes the part that matters when a file will not open — width, height, bits per sample, samples per pixel, photometric interpretation and planar configuration, followed by the strips (RowsPerStrip, StripOffsets, StripByteCounts) or the tiles (TileWidth, TileLength, TileOffsets, TileByteCounts) that actually hold the pixels. Every piece is listed with its offset, its byte count and the gap to the one before it, so you can see whether they are back to back and streamable or scattered across the file, and whether any of them claims bytes past the end. Compression is named rather than numbered and measured against the uncompressed size the header implies, which is how you discover that LZW made a photographic scan larger rather than smaller. What the tool will not do is decode pixels. The preview hands the whole file to the browser and says plainly when the browser refuses, which Chrome, Firefox and Edge always do because they carry no TIFF decoder at all. Exif, GPS and ICC blocks are located and sized but never opened; their contents belong to the Exif viewer.
Frequently asked questions
What do II and MM mean, and why does getting them wrong break everything?
They are the first two bytes of the file and they set the byte order for every multi-byte value after them: II is little-endian (Intel), MM is big-endian (Motorola). TIFF is the rare format that lets the writer choose, so a reader cannot hard-code either one. The failure is silent rather than loud — read a little-endian ImageWidth of 40 as big-endian and you get 10240, a plausible-looking number that sends a decoder off to allocate a buffer forty times too wide and then fail somewhere far from the actual mistake. That is why the byte-order mark is the first thing this tool shows, along with whether it matches the machine you are reading on.
My TIFF has several pages, but everything I open shows only one. Is the file broken?
Almost certainly not. A TIFF is a chain of directories and each one is a page, which is exactly how fax machines and document scanners store a multi-page job in a single file. Nothing in the format requires a reader to follow the chain past the first link, and most previewers, thumbnailers and every browser stop there. If the chain table here lists five pages, the pages are in the file and the reader is the problem — ImageMagick, libtiff's tiffsplit, Photoshop and most PDF converters will walk it.
Strips or tiles: what is the difference, and which does a file want?
Strips cut the image into horizontal bands of RowsPerStrip whole rows; tiles cut it into rectangles, and every tile is stored at full size even at the right and bottom edges, where it carries padding that no reader displays. Strips are what a scanner or a straightforward encoder writes, and they let a reader stream the file top to bottom. Tiles exist for large images: a viewer that wants one region of a 30000-pixel-wide scan reads the handful of tiles covering it and never touches the rest. The cost is that tiled files defeat naive readers — plenty of code handles StripOffsets and simply has no branch for TileOffsets.
Why does this tool say my compressed page is bigger than the raw pixels?
Because LZW and PackBits both encode repetition, and a photograph or a scan with sensor noise has almost none. PackBits in particular has a worst case that adds one byte per 128, and LZW's dictionary can spend more bits on a noisy run than the run itself occupied. It is a real result, not an error: the ratio here is the sum of the strip or tile byte counts against width x bits-per-pixel-row x height, both read from this file. If you see it on a photographic image, Deflate usually does better, and for continuous-tone material JPEG-in-TIFF or a different format does better still.
What does it mean when a value is stored 'inline' rather than at an offset?
Each directory entry is twelve bytes: two for the tag, two for the type, four for the count, and four for the value. If the value needs four bytes or fewer — one LONG, two SHORTs, a three-character ASCII string — it is written into those last four bytes and nothing else in the file moves. If it needs more, those four bytes become an offset and the value is written somewhere else entirely. That is why a TIFF's data is not contiguous with its directory, and it is also the clearest single difference in BigTIFF, where the field is eight bytes wide: a three-SHORT BitsPerSample is out of line in a classic TIFF and inline in a BigTIFF of the very same image.
What is BigTIFF, and can this tool read one?
BigTIFF is TIFF with 64-bit offsets, invented because a classic TIFF's four-byte offsets put a hard 4 GB ceiling on the file — a limit that satellite imagery, whole-slide microscopy and large-format scans hit routinely. It announces itself with magic 43 instead of 42, then two extra header fields, and it changes the directory layout: eight-byte entry counts, twenty-byte entries, eight-byte offsets everywhere. This tool reads that structure in full rather than merely identifying it, so a BigTIFF's chain, entries, strips and tiles are listed exactly as a classic file's are. The only limit is that offsets beyond 2^53 cannot be represented exactly in JavaScript, which no real file approaches.
Why is there no preview, and where do I read the Exif tags?
The preview asks the browser to decode the file, and Chrome, Firefox and Edge carry no TIFF decoder at all — only Safari does, for historical reasons. A failure there says nothing about the file, so it is reported as what it is rather than shown as an empty frame, and everything else on the page is read from the bytes and does not depend on it. As for tags: this tool deliberately stops at the container. It will tell you an Exif or GPS sub-directory exists, where it starts and how many entries it holds, and how many bytes an ICC profile occupies, but the camera, lens, exposure and coordinates inside them are the Exif viewer's job.
Related tools
Ogg Container Inspector
Walk an .ogg, .oga or .opus page by page: granule positions, segment tables, CRC32 checks, and the logical streams the container carries.
File
BMP / DIB Inspector
Open a .bmp or .dib in your browser: header version, bit depth, row order, compression, colour masks, palette, and where every byte of the file goes.
File
PDF Page Organizer
See every page of a PDF as a thumbnail, then reorder, rotate or delete pages and save the result. Nothing is uploaded.
File
Add Page Numbers to a PDF
Number the pages of a PDF — position, style, starting number and whether to skip the cover — and download it. Nothing is uploaded.
File
PDF Page Extractor
Drop a PDF and pull just the pages you want — 1-3, 5, 7-10 — into a fresh PDF. All in your browser, no upload.
File
FLAC Metadata Inspector
Open a .flac in your browser: STREAMINFO, every metadata block with its offset, repeated Vorbis comments, embedded art and the real compression ratio.
File
Tile Calculator
Work out how many floor or wall tiles you need for a room from its length, width and the tile size, with an adjustable waste allowance and boxes required.
Everyday