File types · Explainer

The IFF file (.iff, .ilbm, .lbm)

An IFF file uses the Interchange File Format, a chunk-based container that Electronic Arts published in 1985 and that became the standard file format on the Amiga; an .iff or .lbm picture is almost always an ILBM bitmap inside it. This guide explains how chunks, bitplanes and ByteRun1 compression work, how IFF led to AIFF and RIFF, and how to open and convert these files today.

At a glance

Full name
Interchange File Format, formally "EA IFF 85"; pictures are usually ILBM (InterLeaved BitMap)
Extensions
.iff, .ilbm, .lbm (common on PC); Amiga files often had no extension
MIME type
None registered with IANA; Linux desktops use image/x-ilbm (alias image/x-iff) from freedesktop.org's shared MIME database
Kind
Binary container of chunks; ILBM is a palette-based raster image, uncompressed or run-length compressed (lossless)
Standard or owner
Electronic Arts, with Commodore-Amiga; released to the public domain
First released
EA IFF 85: 14 January 1985, by Jerry Morrison of Electronic Arts; ILBM: January 1986; revised by Commodore in 1988
Byte order
Big-endian (most significant byte first), like the Amiga's Motorola 68000 processor
Colours
Usually 1 to 8 bitplanes (2 to 256 palette colours); Amiga HAM and Extra Half-Brite modes; 24-bit images with 24 planes
Magic number
46 4F 52 4D (FORM), a 4-byte size, then the form type: 49 4C 42 4D (ILBM); Maya images use FOR4 … CIMG
Opens with
XnView, IrfanView, FFmpeg, the Netpbm tools; an optional GIMP plug-in; not web browsers

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.
  • .iff or .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 simpler PBM form type (one byte per pixel instead of bitplanes), which has nothing to do with Netpbm's PBM format.
  • .iff from 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.

tiny.iff (ILBM, hex, 114 bytes)
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. 146 4F 52 4D 00 00 00 6A

    The FORM chunk

    FORM and a length of 0x6A = 106 bytes, everything after these 8 bytes. A whole IFF file is a single FORM, LIST or CAT chunk; anything after its end is ignored.

  2. 249 4C 42 4D

    The form type

    ILBM says what kind of data the form holds: an InterLeaved BitMap picture. Other form types include 8SVX for sampled sound, SMUS for music scores and ANIM for animations. The same reader can walk any of them.

  3. 342 4D 48 44 00 00 00 14

    BMHD: 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. 443 4D 41 50 00 00 00 0C

    CMAP: 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. 541 4E 4E 4F 00 00 00 11 … 00

    ANNO 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 FORM size. Readers skip chunk types they don't know, which is how IFF stays extensible.

  6. 642 4F 44 59 00 00 00 13

    BODY: 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. 7FF 0F 01 00 FF

    ByteRun1 compression

    Each control byte says what follows. FF is −1: repeat the next byte 2 times, giving 0F 0F (plane 0). 01 means 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 BMHD or BODY.
  • 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:

ChunkWhat it is
FORMA self-contained object with a form type (ILBM, 8SVX, ANIM …) and its own chunks. Most files are a single FORM.
LISTAn ordered group of forms that can share settings.
PROPInside 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.

Chunks in a typical ILBM file
ChunkRequiredContents
BMHDYesSize, number of planes, masking, compression, transparent colour, aspect ratio
CMAPUsuallyThe palette: 3 bytes (red, green, blue) per colour
CAMGAmiga filesThe Amiga display mode, including the HAM and Extra Half-Brite flags
CRNGOptionalColour ranges for colour cycling, the animation trick used by Deluxe Paint
BODYFor imagesThe pixels: interleaved bitplanes, plus a mask plane if masking is 1
ANNO, AUTH, (c) OptionalAnnotation, 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 ILBMMaya IFF
First bytesFORM … ILBMFOR4 … CIMG
PixelsPalette bitplanes, HAM, or 24-bit8- or 16-bit RGB(A), optional depth map
Made byDeluxe Paint, Amiga software, emulatorsAutodesk Maya renders and textures
Opens withXnView, IrfanView, FFmpeg, NetpbmMaya 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 PBM variant and several other IFF image types: ffmpeg -i picture.iff picture.png.
  • Netpbm: ilbmtoppm picture.iff | pnmtopng > picture.png. ilbmtoppm handles 1 to 16 planes, HAM, Extra Half-Brite, 24-bit images and palette-only files; ppmtoilbm goes 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 CAMG chunk. Try another viewer or ilbmtoppm -isham.
  • Colours are slightly too dark. Old writers stored 4-bit palette values in the top half of each byte (F0 instead of FF). 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 … ILBM is an Amiga picture, FORM … PBM the PC variant, FORM … 8SVX or AIFF a sound, FOR4 … CIMG a Maya image, and AT&TFORM a 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, AUTH and (c) chunks can carry names and notes that viewers don't show.
  • Servers that convert uploads should check the dimensions in BMHD before 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

Last reviewed 27 October 2026.