Skip to content
EZ ROM Patcher

IPS patch files

Short answer

An IPS file is a ROM patch that stores a list of byte changes: each record holds a 3-byte offset, a length, and the replacement bytes. It is the oldest and simplest patch format, still common for NES, SNES and Game Boy hacks. Because offsets are 24-bit, IPS cannot patch anything beyond 16 MB.

IPS at a glance
Extension
.ips
Identifier bytes
PATCH
Verifies your ROM
No
Can change ROM size
No
Create on this site
Yes
Common on
NES, SNES, Game Boy, Game Boy Color, Genesis

Limitations

  • Cannot address anything past 16 MB (offsets are 24-bit).
  • Carries no checksum, so it will happily apply to the wrong ROM.
  • Cannot make a ROM smaller.

How the IPS format works

An IPS file opens with the five ASCII bytes PATCH and ends with the three bytes EOF. Between them sits a flat list of records. Each record is a 3-byte offset, a 2-byte length, then that many literal bytes to write at the offset.

There is one special case. If the length field is zero, the record is run-length encoded instead: a 2-byte run length followed by a single byte to repeat. That keeps patches small when a hack blanks out a large region.

FieldSizeMeaning
Offset3 bytesWhere to write, big-endian
Length2 bytesBytes to write. Zero signals an RLE record
DataLength bytesThe literal replacement bytes
RLE length2 bytesOnly when Length is zero: how many times to repeat
RLE byte1 byteOnly when Length is zero: the byte to repeat
Structure of an IPS record

That is the whole specification. There is no header beyond the magic bytes, no version field, no metadata, and no checksum.

What are the limits of IPS?

The 3-byte offset is the defining constraint. Three bytes address 16,777,216 positions, so an IPS patch physically cannot describe a change past the 16 MB mark. This rules out most N64, PlayStation and GameCube work, and it is why those communities moved to BPS and xdelta.

IPS also cannot shrink a file. It can extend one, but only by writing past the original end. And because the format stores no checksum of the ROM it expects, applying an IPS patch to the wrong file produces a corrupt ROM with no warning at all.

IPS variants you may run into

  • IPS32 raises offsets to 32 bits and uses the magic IPS32 with an EEOF terminator, lifting the 16 MB ceiling. Support outside a handful of tools is thin.
  • [EBP](/formats/ebp) is IPS with a JSON metadata blob appended, used by the EarthBound hacking community.
  • IPS patches inside a zip. Many releases ship the .ips inside an archive. You can drop the zip straight into the patcher without unpacking it first.

Lunar IPS, Flips and browser patching

For years the standard way to apply an IPS patch was Lunar IPS, a small Windows utility usually shipped as LIPS.exe. Flips (Floating IPS) later became the common choice because it handles both IPS and BPS. Both are still perfectly good desktop tools.

ToolPlatformFormats
Lunar IPSWindows onlyIPS
Flips (Floating IPS)Windows, Linux, macOS via sourceIPS, BPS
EZ ROM PatcherAny browser, including phonesIPS, BPS, UPS, APS, RUP, PPF, xdelta, BSDiff, EBP

The practical difference is installation. A browser patcher needs nothing installed, runs on a Mac, an iPhone or a Chromebook without a Windows compatibility layer, and still does the work locally on your own machine.

How to apply an IPS patch

  1. Open the patcher

    Go to the ROM patcher on this site. Everything runs locally in your browser.

  2. Select your ROM

    Pick the original, unmodified ROM file. The page shows its CRC32, MD5 and SHA-1 as soon as it loads.

  3. Select the .ips file

    Choose the patch, or the zip containing it. The patcher unzips archives on its own.

  4. Check the header prompt

    If the patcher detects a copier header on a SNES or NES ROM, it offers to remove it. See headers and zip files for which way to go.

  5. Apply and save

    Press Apply patch. The patched ROM downloads to your device.

Frequently asked questions

What is IPS patching?

IPS patching is applying an .ips file to a ROM to turn it into a modified version, such as a fan translation or a romhack. The patch lists byte changes and their offsets; the patcher writes those bytes into a copy of your ROM. The original file is never distributed, only the changes.

What is a .ips file on iPhone?

Two completely different things share this extension. On iOS, .ips files in Settings under Analytics Data are crash logs, and they have nothing to do with ROM patching. A romhacking IPS patch is a binary file starting with the ASCII text PATCH. If you opened it and saw JSON with a stack trace, it is a crash log.

How do I open or read an IPS file?

An IPS file is not meant to be opened on its own; it only makes sense applied to the ROM it was built for. Load it into a patcher along with that ROM. Opening it in a text editor shows the PATCH header and mostly binary data.

Do IPS patches need headerless ROMs?

It depends entirely on what the author used. A copier header shifts every offset in the file, so a patch built against a headered ROM will not land correctly on an unheadered one. Most modern SNES patches expect the header removed. The patcher detects a header and offers to strip it.

Can an IPS patch make a ROM larger?

Yes. An IPS record can write past the original end of the file, which extends it. It cannot make a ROM smaller, because the format has no way to express a truncation.

Why does my IPS patch produce a broken ROM?

Almost always because the base ROM is not the one the patch was built against, or because of a copier header mismatch. IPS stores no checksum, so it applies to any file you give it. Verify your ROM’s CRC32 against the value published by the hack author first.

What is the maximum ROM size an IPS patch can handle?

16 MB. IPS offsets are three bytes, so the highest address the format can describe is 16,777,215. For anything larger, hack authors use BPS or xdelta.

Do I need to unzip an IPS patch first?

No. Drop the zip file into the patcher and it will find and unpack the patch inside. If an archive holds several patches, you get a list to choose from.

Keep reading

Last reviewed