Interchange File Format

Interchange File Format（IFF）は、汎用ファイルフォーマットの一種。1985年にエレクトロニック・アーツが、コモドールの Amiga 向けに異なるアプリケーション間でのデータ転送を容易にするために開発した。
IFF には典型的な拡張子は存在しない。".iff" という拡張子のファイルは ILBM フォーマットであることが多い。ILBM は IFF を使った画像フォーマットではあるが、IFFフォーマットを使っているのは ILBM だけではない（多くの場合、IFFファイルの拡張子はそれほど重要ではない）。
構造.
IFFファイルはチャンク（chunk）から構成される。各チャンクの先頭には "Type ID" と呼ばれるフィールドがある（Macintosh では OSType、Microsoft Windows では FourCC とも呼ばれる）。その次に32ビット符号なし整数があり（IFFでは全ての整数はビッグエンディアンで表される）、その後のデータ（チャンクの中身）をバイト数で記述している。そのように各チャンクの長さを明示的に記述するため、解釈するときに処理に関係ないチャンクをスキップすることが可能である。
チャンクをグループ化する "FORM"、"LIST"、"CAT " といったチャンクもある。FORMチャンクは構造体のようなもので、様々なチャンクの入れ子が可能である。LISTチャンクは、一連の PROP （プロパティ）チャンクとそのプロパティが適用される入れ子になったチャンクグループからなる。CAT  は単なる入れ子になったチャンクの集まりであって、特に意味は決められていない。グループチャンクには、必要に応じて他のグループチャンクを含むことができる。グループチャンクにも長さが記述される。したがって、グループチャンクをスキップするのも容易である。
チャンクは必ずファイル先頭からのオフセットが偶数の位置から始まる。これはIFFが元々はMC68000向けだったためで、MC68000では1バイトより大きい単位でのロードは偶数バイトからでないと不可能だった。そのため、必要に応じてパディングが行われる。
IFFファイルは全体として1つのグループチャンク（FORM か LIST か CAT ）になっている。
チャンクはタイプによって中身の構造が異なり、数値データだったり、テキストだったり、何らかのデータだったりする。IFF形式のファイルをチャンクとして中に含めることもできる。各種IFFファイルで使われている標準のチャンクもいくつかある。"AUTH"（作者情報を含むテキスト）、"ANNO"（アノテーション、通常はそのファイルを作ったプログラム名）、"NAME"（作品名などのテキスト）、"VERS"（ファイルバージョン）、"(c) "（コピーライト情報テキスト）などがある。その他にいくつかの形式でよく使われるチャンクとして、"CMAP"（ILBMなどの画像フォーマットでのパレット情報）がある。またチャンク名が同じでもフォーマットによって意味が異なるものもある。例えば "BODY" は ILBM では画像そのものを指すが、8SVX では音声そのものである。具体的なファイルフォーマットに固有のチャンクもある。あるプログラムがIFFファイルを作るときに独自のチャンクを追加したとして、別のプログラムでそれを読むときでも問題は発生しない（知らないチャンクは単にスキップすればよいため）。これは、IFFや類似のフォーマットの大きな長所である。
入れ子可能で、説明を追加可能なファイルフォーマットであることから、XMLとの類似性があると言われている。ただし、XMLがテキストフォーマットであるのに対して、IFFには必ずバイナリデータ（チャンクの長さのフィールド）が含まれている。IFFを機械的にXMLに変換することは可能だが、XMLの方が機能的に拡張されているため、逆方向の変換は簡単ではない。