The basics
What is an IFF file?
IFF, the Interchange File Format, is a general way of storing data in tagged chunks, published by Electronic Arts on 14 January 1985 as "EA IFF 85". It was written by Jerry Morrison with a committee that included EA and Commodore-Amiga staff, released to the public domain, and adopted as the Amiga's standard file format: pictures, sounds, music, animations and text could be moved between programs from different companies.
The specification's motto, borrowed from Alan Kay, was "Simple things should be simple and complex things should be possible." IFF itself defines only the containers. What goes inside is set by separate standards for each form type, and the most famous of them is ILBM, the InterLeaved BitMap, defined in January 1986 for pictures. Electronic Arts' Deluxe Paint wrote ILBM files, and so did most Amiga graphics software.
So when someone says "an IFF image", they mean an ILBM picture in an IFF container. The file extension varies:
- No extension: on the Amiga, files were recognised by their content, so original Amiga pictures often have no extension at all.
.iffor.ilbm: the usual extensions when Amiga files are copied to other systems..lbm: common on the PC, where Deluxe Paint and many DOS games of the late 1980s and early 1990s used IFF images. Some of those files use a simplerPBMform type (one byte per pixel instead of bitplanes), which has nothing to do with Netpbm's PBM format..ifffrom Autodesk Maya: a different image format with the same extension; see below.
Anatomy
What's inside an IFF file
An IFF file is one big FORM chunk that contains other chunks. Every chunk is a 4-letter ID, a 4-byte big-endian length and the data, padded to an even number of bytes. Below is every byte of a tiny ILBM picture written for this page from the EA specification: 16 × 4 pixels, 4 colours, compressed with ByteRun1. It's not a download; FFmpeg and Netpbm's ilbmtoppm both decode it to the intended stripes.
46 4F 52 4D 00 00 00 6A 49 4C 42 4D FORM, 106 bytes, ILBM
42 4D 48 44 00 00 00 14 BMHD, 20 bytes
00 10 00 04 width 16, height 4
00 00 00 00 x, y position
02 00 01 00 2 planes, no mask,
ByteRun1, pad
00 00 01 01 00 10 00 04 transparent colour 0,
aspect 1:1, page 16 × 4
43 4D 41 50 00 00 00 0C CMAP, 12 bytes
00 00 00 FF FF FF 1E 6E FF FF 88 00 4 colours: black, white,
blue, orange
41 4E 4E 4F 00 00 00 11 ANNO, 17 bytes
39 39 68 65 6C 70 65 72 73 20 65 78 61 6D 70 6C 65
00 "99helpers example" + pad
42 4F 44 59 00 00 00 13 BODY, 19 bytes
FF 0F 01 00 FF row 1: plane 0, plane 1
FF 0F 01 00 FF row 2
FF F0 01 FF 00 row 3
FF 00 FF 00 row 4
00 pad byte- 1
46 4F 52 4D 00 00 00 6AThe FORM chunk
FORMand a length of0x6A= 106 bytes, everything after these 8 bytes. A whole IFF file is a singleFORM,LISTorCATchunk; anything after its end is ignored. - 2
49 4C 42 4DThe form type
ILBMsays what kind of data the form holds: an InterLeaved BitMap picture. Other form types include8SVXfor sampled sound,SMUSfor music scores andANIMfor animations. The same reader can walk any of them. - 3
42 4D 48 44 00 00 00 14BMHD: the bitmap header
20 bytes: width and height (16 × 4), position, the number of bitplanes (2, so 4 colours), the masking method (0, none), compression (1, ByteRun1), a transparent colour, the pixel aspect ratio and the page size. The specification gives 10:11 as the typical aspect for a 320 × 200 Amiga screen.
- 4
43 4D 41 50 00 00 00 0CCMAP: the palette
Red, green and blue bytes for each colour, in order from colour 0. 12 bytes here, so 4 colours. On the original Amiga, only 4 bits per channel were used; the 1988 revision asks writers to scale them to the full 0 to 255 range.
- 5
41 4E 4E 4F 00 00 00 11 … 00ANNO and the pad byte
An annotation chunk holding plain text. Its length, 17, is odd, so a zero byte follows to keep the next chunk at an even position. The pad is not counted in the length, but it is counted in the
FORMsize. Readers skip chunk types they don't know, which is how IFF stays extensible. - 6
42 4F 44 59 00 00 00 13BODY: the pixels
The image, row by row. Each row is stored as one line per bitplane: plane 0 holds bit 0 of every pixel's colour number, plane 1 holds bit 1. A row of 16 pixels takes 2 bytes per plane, and rows are always padded to a multiple of 16 pixels.
- 7
FF 0F 01 00 FFByteRun1 compression
Each control byte says what follows.
FFis −1: repeat the next byte 2 times, giving0F 0F(plane 0).01means copy the next 2 bytes literally:00 FF(plane 1). Together the planes give colours 0, 1, 2 and 3 in blocks of four. Each plane row is compressed on its own, never across rows.
Under the hood
How IFF chunks work
Every piece of an IFF file is a chunk with the same layout, so a program can read the parts it understands and skip the rest:
- ckID: 4 ASCII characters, such as
BMHDorBODY. - ckSize: a 32-bit big-endian number, the length of the data.
- data: that many bytes, then a zero pad byte if the length is odd, so every chunk starts at an even position.
Four chunk types hold other chunks:
| Chunk | What it is |
|---|---|
FORM | A self-contained object with a form type (ILBM, 8SVX, ANIM …) and its own chunks. Most files are a single FORM. |
LIST | An ordered group of forms that can share settings. |
PROP | Inside a LIST: properties, such as a palette, that apply to every form in the list unless a form overrides them. |
CAT | A plain concatenation of forms and lists, with a hint about what's inside. |
Forms can nest: an ANIM animation, for example, is a FORM ANIM holding one FORM ILBM per frame. On the Amiga, the system's iffparse.library did the walking for programs.
IFF's descendants: AIFF, RIFF and more
Apple's AIFF audio format "conforms to the EA IFF 85 standard", in Apple's own words: an AIFF file is a FORM AIFF. Microsoft and IBM's RIFF (1991), the container behind WAV, AVI and WebP, took the same idea and stores numbers little-endian, as Intel processors do; the Library of Congress describes IFF as an influence on later tagged formats, RIFF among them. DjVu documents are IFF files too.
Images
ILBM: how an Amiga picture is stored
ILBM stores pixels the way the Amiga's display hardware wanted them: as bitplanes. A picture with 5 planes has 32 colours, and each plane holds one bit of every pixel's colour number. In the file, each row of the image is written as one row from plane 0, then one from plane 1, and so on: the planes are interleaved row by row, hence the name.
| Chunk | Required | Contents |
|---|---|---|
BMHD | Yes | Size, number of planes, masking, compression, transparent colour, aspect ratio |
CMAP | Usually | The palette: 3 bytes (red, green, blue) per colour |
CAMG | Amiga files | The Amiga display mode, including the HAM and Extra Half-Brite flags |
CRNG | Optional | Colour ranges for colour cycling, the animation trick used by Deluxe Paint |
BODY | For images | The pixels: interleaved bitplanes, plus a mask plane if masking is 1 |
ANNO, AUTH, (c) | Optional | Annotation, author and copyright text |
Two Amiga display modes are recorded in the CAMG chunk and change how pixels are read:
- HAM (Hold-And-Modify): with 6 planes, the top 2 bits of each pixel say whether the other 4 are a palette colour, or a new value for just the red, green or blue of the pixel to its left. That's how the Amiga showed photos with thousands of colours. A viewer that ignores HAM shows garbage.
- Extra Half-Brite (EHB): with 6 planes, the sixth bit means "palette colour at half brightness", giving 64 colours from a 32-colour palette.
ByteRun1 is ILBM's only standard compression, a form of run-length encoding (the same scheme as Apple's PackBits). A control byte *n* from 0 to 127 means "copy the next *n* + 1 bytes"; from −1 to −127 it means "repeat the next byte −*n* + 1 times"; −128 means nothing. It works well on flat areas of colour, the typical pixel art of the time, and badly on noise.
Not an Amiga file
IFF files from Autodesk Maya
A 3D artist's .iff file is probably a Maya IFF image: the native render and texture format of Autodesk Maya. Autodesk describes IFF as "a generic structured file access mechanism" and uses it for 8- or 16-bit RGB images with optional alpha and an optional 32-bit floating-point depth (Z-buffer) map.
Maya IFF files start with FOR4 rather than FORM, followed by a length and the form type CIMG; the UK National Archives' PRONOM registry uses this as the format's signature. Amiga ILBM viewers can't read them. To open one, use Maya itself, or a compositing or image tool with a Maya IFF reader, and convert to EXR, TIFF or PNG for sharing.
| Amiga ILBM | Maya IFF | |
|---|---|---|
| First bytes | FORM … ILBM | FOR4 … CIMG |
| Pixels | Palette bitplanes, HAM, or 24-bit | 8- or 16-bit RGB(A), optional depth map |
| Made by | Deluxe Paint, Amiga software, emulators | Autodesk Maya renders and textures |
| Opens with | XnView, IrfanView, FFmpeg, Netpbm | Maya and 3D/compositing tools |
How to
How to open and convert an IFF (ILBM) picture today
Browsers and the built-in viewers of Windows and macOS don't read ILBM. These do:
- IrfanView (Windows) and XnView open IFF pictures; check HAM and masked images, which are the parts readers most often get wrong.
- FFmpeg decodes ILBM, the PC
PBMvariant and several other IFF image types:ffmpeg -i picture.iff picture.png. - Netpbm:
ilbmtoppm picture.iff | pnmtopng > picture.png.ilbmtoppmhandles 1 to 16 planes, HAM, Extra Half-Brite, 24-bit images and palette-only files;ppmtoilbmgoes the other way. - GIMP has an optional IFF/ILBM import plug-in, but not every build includes it; the Debian security tracker notes packages built without it.
- On an Amiga, real or emulated, the original software opens them, and so does the system's own picture support.
ImageMagick had no ILBM reader in the version we checked (6.9): convert with FFmpeg or Netpbm first. When you convert, keep the result in a lossless format such as PNG or GIF; both keep a palette of up to 256 colours exactly. Colour cycling (CRNG) and the original pixel aspect ratio are lost in most conversions.
Troubleshooting
Common IFF problems
- The picture looks stretched or squashed. Amiga pixels weren't square: a 320 × 200 screen had pixels about 10:11 wide to tall, and interlaced or high-resolution modes differ again. The aspect ratio is in
BMHD; scale the converted image if proportions matter. - Colours are scrambled noise. The picture probably uses HAM and the viewer ignored the
CAMGchunk. Try another viewer orilbmtoppm -isham. - Colours are slightly too dark. Old writers stored 4-bit palette values in the top half of each byte (
F0instead ofFF). The 1988 revision asks writers to scale them; viewers can't always tell. - The file won't open at all. Check the first 12 bytes.
FORM…ILBMis an Amiga picture,FORM…PBMthe PC variant,FORM…8SVXorAIFFa sound,FOR4…CIMGa Maya image, andAT&TFORMa DjVu document.
Security
Is an IFF file safe to open?
IFF pictures contain no scripts or macros. The risk is in decoders, which are often old, rarely used code paths that get little testing:
- Crafted chunk sizes. A chunk can claim to be longer than the file, or a ByteRun1 stream can try to write past the end of a row. In 2026 a flaw of this kind in GIMP's IFF import plug-in (CVE-2026-82324) allowed out-of-bounds reads from crafted files. Keep viewers updated, and open files of unknown origin in up-to-date software.
- Text chunks.
ANNO,AUTHand(c)chunks can carry names and notes that viewers don't show. - Servers that convert uploads should check the dimensions in
BMHDbefore decoding and limit the decoded size.
Sample files
There are no sample IFF files on this page yet. To make one for testing, convert a PPM image with Netpbm (ppmtoilbm input.ppm > output.iff); it writes an ILBM with ByteRun1 compression, like the one in the anatomy above.
Put it online
Have an IFF file? Give it a link.
Drop an IFF or LBM file on 99helpers and it gets its own web address. Browsers can't display IFF pictures, so anyone who opens the link downloads the file; to have the picture seen in the browser, upload a PNG copy next to it.
Questions
IFF files, frequently asked
What is an .iff file?
Usually an Amiga-era picture in the ILBM format, inside Electronic Arts' Interchange File Format. It can also be a Maya IFF render from Autodesk Maya, a different format with the same extension. The first bytes tell them apart: FORM for Amiga IFF, FOR4 for Maya.
How do I open an IFF file on Windows?
Use IrfanView or XnView, or convert it with FFmpeg (ffmpeg -i picture.iff picture.png). Windows Photos and browsers don't support it.
What's the difference between IFF, ILBM and LBM?
IFF is the container format; ILBM is the picture format stored in it; .lbm is the extension PC programs such as Deluxe Paint used for the same kind of file.
How do I convert IFF to PNG?
ffmpeg -i picture.iff picture.png, or with Netpbm ilbmtoppm picture.iff | pnmtopng > picture.png. PNG keeps the palette colours exactly.
Is IFF the same as AIFF?
No, but they're related: AIFF is Apple's audio format built on the IFF chunk structure. An AIFF file is a FORM with the form type AIFF instead of ILBM.
What is HAM in an IFF picture?
Hold-And-Modify, an Amiga display mode that showed thousands of colours by letting each pixel change one colour component of its left neighbour. The CAMG chunk records it; viewers that ignore it show scrambled colours.
Does ImageMagick open IFF files?
Not ILBM pictures, in the version we checked (6.9). Use FFmpeg, Netpbm's ilbmtoppm, XnView or IrfanView, then process the PNG.
Related formats
Other file types explained
Keep going
Related
Sources
- AmigaOS documentation: EA IFF 85 Standard for Interchange Format Files
- AmigaOS documentation: ILBM IFF Interleaved Bitmap
- Library of Congress: IFF (Electronic Arts Interchange File Format 1985)
- Apple: Audio Interchange File Format (AIFF) 1.3
- The National Archives (PRONOM): Maya IFF Image File
- Netpbm: ilbmtoppm manual
Last reviewed 27 October 2026.