IPS patch files
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.
- 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.
| Field | Size | Meaning |
|---|---|---|
| Offset | 3 bytes | Where to write, big-endian |
| Length | 2 bytes | Bytes to write. Zero signals an RLE record |
| Data | Length bytes | The literal replacement bytes |
| RLE length | 2 bytes | Only when Length is zero: how many times to repeat |
| RLE byte | 1 byte | Only when Length is zero: the byte to repeat |
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
IPS32with anEEOFterminator, 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.
| Tool | Platform | Formats |
|---|---|---|
| Lunar IPS | Windows only | IPS |
| Flips (Floating IPS) | Windows, Linux, macOS via source | IPS, BPS |
| EZ ROM Patcher | Any browser, including phones | IPS, 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
Open the patcher
Go to the ROM patcher on this site. Everything runs locally in your browser.
Select your ROM
Pick the original, unmodified ROM file. The page shows its CRC32, MD5 and SHA-1 as soon as it loads.
Select the .ips file
Choose the patch, or the zip containing it. The patcher unzips archives on its own.
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.
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.