IFO File Documentation


Summary

An IFO file is the navigation map of a DVD-Video Information File, the small binary file a DVD player reads first to learn a disc’s menus, chapter points, titles, and audio and subtitle maps. It holds no video: the picture lives in the .vob files beside it in the VIDEO_TS folder, with a .bup backup of each IFO. MIME type is application/octet-stream, extension .ifo.

Technical details

FeatureValue
Full nameDVD-Video Information File
File extension.ifo
MIME typeapplication/octet-stream
Format typeBinary DVD navigation / metadata file
DeveloperDVD Forum — DVD-Video specification
Introduced1996
Byte orderBig-endian
Sector size2048-byte logical sectors (addresses counted in sectors)
Magic number44 56 44 56 49 44 45 4F 2D 56 4D 47 "DVDVIDEO-VMG", or 44 56 44 56 49 44 45 4F 2D 56 54 53 "DVDVIDEO-VTS"
Two kindsVIDEO_TS.IFO = Video Manager (VMG); VTS_xx_0.IFO = Video Title Set (VTS)
Contains videoNo — navigation and metadata only
StoresMenus, chapter and cell pointers, titles, audio and subtitle maps
Backup file.bup — a byte-for-byte identical copy of each IFO
Companion file.vob holds the multiplexed video, audio, and subpicture
LocationVIDEO_TS folder on the disc
Open standardNo
Related extensions.vob, .bup, .dvd
File signature (magic bytes)
44 56 44 56 49 44 45 4F 2D 56 4D 47

Offset 0. ASCII "DVDVIDEO-VMG" in VIDEO_TS.IFO (the Video Manager), or "DVDVIDEO-VTS" (44 56 44 56 49 44 45 4F 2D 56 54 53) in a Video Title Set such as VTS_01_0.IFO. The matching .BUP backup carries the identical signature because it is a byte-for-byte copy.

What is an IFO file?

IFO is short for “information”. It is the navigation file of a DVD-Video disc, defined by the DVD-Video specification that the DVD Forum published in 1996. An IFO holds no video and no audio of its own. Instead it is the map a player reads first: it describes the disc’s menus, its titles, the chapter points inside each title, and which audio languages and subtitle tracks exist and where their data sits. When you put a DVD in a player, the drive opens VIDEO_TS.IFO before anything else, works out the disc layout from it, and only then starts pulling picture from the video files.

Because the IFO is pure structure, opening one on its own shows no film. That is the usual point of confusion: people rip a DVD, see a small .ifo next to some large files, double-click it, and get nothing playable. The correct mental model is that an IFO is one third of a set. It has to be read together with the files it points at.

The VIDEO_TS trio: VOB, IFO and BUP

Every DVD-Video disc keeps its content in a folder named VIDEO_TS. Three file types cooperate inside it. The VOB files carry the actual content: MPEG-2 video, one or more audio tracks, and subpicture (subtitle) streams, all multiplexed into one program stream. The IFO files carry the navigation data that indexes those VOBs. The BUP files are backups: each BUP is a byte-for-byte copy of its matching IFO, written to a different part of the disc so a scratch does not take out both.

A typical single-title disc looks like this:

VIDEO_TS/
  VIDEO_TS.IFO      navigation for the whole disc (Video Manager)
  VIDEO_TS.BUP      backup copy of VIDEO_TS.IFO
  VIDEO_TS.VOB      the disc-level (first-play / top) menu video, if present
  VTS_01_0.IFO      navigation for title set 1
  VTS_01_0.BUP      backup copy of VTS_01_0.IFO
  VTS_01_0.VOB      the menu video for title set 1
  VTS_01_1.VOB      the feature video (split into 1 GB pieces)
  VTS_01_2.VOB
  VTS_01_3.VOB

Note the naming. The IFO and its BUP always end in _0 for a title set. The video files split at 1 GB (a limit inherited from the disc file system), which is why a two-hour film arrives as VTS_01_1.VOB, VTS_01_2.VOB and so on. The IFO ties those pieces back into one continuous title.

Two kinds of IFO and their signatures

There are exactly two kinds of IFO on a disc, and you can tell them apart by their first bytes. The disc-level file, VIDEO_TS.IFO, is the Video Manager (VMG). It opens with the ASCII string DVDVIDEO-VMG, hex 44 56 44 56 49 44 45 4F 2D 56 4D 47, at offset 0. It describes the disc as a whole: the first-play behaviour, the top menu, and a table that maps every title on the disc to the title set that contains it.

The per-title files, VTS_01_0.IFO, VTS_02_0.IFO and up, are Video Title Sets (VTS). Each opens with DVDVIDEO-VTS, hex 44 56 44 56 49 44 45 4F 2D 56 54 53, at offset 0. A VTS IFO describes one group of related titles: its chapters, its program chains, its own menu, and the address maps that point into that set’s VOBs. The matching .BUP shares the same signature because it is a copy of the same bytes.

Two structural facts hold for both kinds. Multi-byte values inside an IFO are stored big-endian (most significant byte first). And addresses to data are counted in 2048-byte logical sectors, not in raw byte offsets, which matches the DVD sector size. A pointer that reads sector 7 means byte 7 × 2048 from the start of the relevant region.

The management and attribute table (VMGI_MAT / VTSI_MAT)

Each IFO begins with a header table of sector-offset pointers. In the Video Manager it is the VMGI_MAT (Video Manager Information Management/Attribute Table); in a title set it is the VTSI_MAT. This table is the spine of the file. It holds the identifier string you saw in the signature, the last sector of the IFO, the last sector of the IFO plus its BUP region, a version and category field, and video, audio, and subpicture attribute fields for the menus and titles it governs.

The rest of the MAT is a list of sector offsets, each pointing to one sub-table further inside the file. Reading an IFO means reading the MAT, following a pointer to the sub-table you need, and parsing that table in place. Conceptually:

VTS_01_0.IFO
  +-- VTSI_MAT  (header table of sector-offset pointers)
        |-- -> VTS_PTT_SRPT     chapter / part-of-title search
        |-- -> VTS_PGCIT        the title's program chains
        |-- -> VTSM_PGCI_UT     menu program chains, per language unit
        |-- -> VTS_C_ADT        cell address table
        +-- -> VTS_VOBU_ADMAP   VOBU address map

The offsets in the MAT are sector counts relative to the start of the information region, and the values inside each sub-table are big-endian. The exact byte positions of individual MAT fields are fixed by the spec, but the model to hold onto is simpler: a small header of pointers, each leading to a named sub-table.

The Video Manager tables

VIDEO_TS.IFO is where a player starts. Its MAT points to the disc-wide tables below.

TableWhat it holds
FP_PGCFirst Play program chain: the navigation commands run the moment the disc loads (jump to the top menu, or straight into a title).
TT_SRPTTitle search pointer table: the map from each title number to the title set (VTS) and program chain that plays it.
VMGM_PGCI_UTVideo Manager menu program chain information, organised into language units so the top menu can differ per language.
VMG_PTL_MAITParental management table: rating levels per country used to block or allow titles.
VMGM_C_ADTCell address table for the disc-level menu: maps menu cells to sectors in the menu VOB.
VMGM_VOBU_ADMAPVOBU address map for the menu: the sorted list of VOBU start sectors for seeking within the menu.

TT_SRPT is the one that answers “which file plays title 3?”. It turns a title number into a VTS and a program chain, so the player knows which VTS_xx_0.IFO to open next.

The Video Title Set tables

Once the player knows which title set to enter, it opens that set’s IFO and follows the VTSI_MAT to these tables.

TableWhat it holds
VTS_PTT_SRPTPart-of-title search pointer table: the chapter list. Each PTT entry names the program chain and program that a chapter begins at.
VTS_PGCITThe VTS program chain information table: the program chains for the actual titles, the main navigation content of the set.
VTSM_PGCI_UTMenu program chains for this title set, again split into language units.
VTS_C_ADTCell address table: maps each cell ID to its start and end sector in the title VOBs.
VTS_VOBU_ADMAPVOBU address map: the ordered table of every VOBU start sector, used to resolve a time or chapter to a byte position for seeking.

The two address tables are what make random access work. A VOBU (Video Object Unit) is the smallest independently seekable chunk of a VOB, roughly half a second of playback. VTS_VOBU_ADMAP lists their start sectors in order, so the player can binary-search it to jump to any point in the title.

The Program Chain (PGC)

The Program Chain, or PGC, is the core navigation unit inside these tables. A PGC is not a stream. It is a set of instructions and pointers that describes how to play a stretch of content. Each PGC holds several things together:

PGC
  navigation commands  (pre, cell, and post VM commands: jumps, register tests)
  program map          (which cells make up each program)
  cell playback table  (order, still time, and the sector range of every cell)
  subpicture CLUT      (16-entry colour lookup table for subtitles/buttons)
  audio control        (which audio streams are available and their attributes)
  subpicture control   (which subtitle streams are available)

The navigation commands are little VM instructions the player runs before a chain, between cells, and after it finishes: things like “jump to menu”, “set the audio register”, or “if this button was pressed, go there”. The CLUT is a 16-entry colour lookup table; DVD subpictures store only a 2-bit index per pixel, and the CLUT turns those indices into the colours you see, which is how menu highlights and subtitle colours are defined.

The program and cell map is where navigation meets the picture. A cell names a sector range in the VOB; the cell address table (VTS_C_ADT) and the VOBU address map resolve that into concrete disc sectors. Chapters ride on top of this: a “part of title” (PTT) in VTS_PTT_SRPT points at a program within a PGC, and that program points at its first cell. So pressing “next chapter” is a lookup, PTT → program → cell → VOBU start sector, and then a seek into the VOB. Menus resolve the same way: a button’s command jumps to a PGC, whose cells point at the menu VOB. A fuller field-level breakdown of these tables is documented in the mpucoder DVD reference.

IFO and BUP redundancy

The DVD-Video spec mandates that every IFO has a matching BUP, and that the BUP is a byte-for-byte copy written to a separate region of the disc. The reason is physical: a scratch or bad sector that makes part of an IFO unreadable would otherwise break navigation for the whole disc, even though every VOB was fine. A compliant player that hits an unreadable IFO sector silently falls back to the matching .BUP and keeps going. This is why the backup exists and why it looks identical.

The same rule gives a legitimate repair trick. If a ripped disc has a damaged VTS_01_0.IFO but an intact VTS_01_0.BUP, copying the BUP over the IFO (renaming the good backup into place) restores navigation, because the two are meant to be identical. It is not a hack, it is using the redundancy the spec built in.

Frequently asked questions

Why does the .BUP look identical to the .IFO?

Because it is a copy. The DVD-Video spec requires each IFO to be duplicated byte-for-byte into a BUP file on a different part of the disc. If the player cannot read an IFO sector, it reads the BUP instead, so navigation survives a scratch that hits one copy.

Where are the actual chapters stored?

In the title set IFO, not the VOB. Chapters are “parts of title” listed in VTS_PTT_SRPT. Each entry points at a program inside a program chain, which points at a cell, which the address maps resolve to a start sector in the VOB. Remove or corrupt the IFO and the video is still there, but the chapter marks and menus are gone.

References