Rom Patcher JS is Marc Robledo's browser engine, MIT licensed, copyright line 2017-2024, with an Octicons notice beside it. It applies IPS, UPS, APS for N64 and GBA, BPS, RUP, PPF, EBP, BSDIFF, Star Rod mods, and VCDIFF. It shows CRC32, MD5, and SHA-1, opens zip files, and can strip a copier header. It also runs under Node. The author's hosted page was labeled v3.5 at check time. GitHub's newest tag is v3.2.1 from 4 Nov 2025. Those two labels are not the same artifact. I run commit 4f17297 from 21 Oct 2026, the one that adds an LZMA secondary decompressor, and I say the hash out loud on the licenses page.
Creator mode builds a patch from two local files for the formats whose modules implement that path. xdelta is apply-only in this engine. The embed mode is what the home page uses: a copy of the rom-patcher-js folder, the webapp script, and a container of known element ids. The wiki shows a preset patch inside a zip. Our copy does not preset a patch, because the search is for a general tool. Validation that demands a known input CRC stays off on the home embed so a normal mismatch comes from the format module.
Interface languages shipped in the file include English, French, German, Italian, Spanish, Dutch, Swedish, Catalan, Valencian, Brazilian Portuguese, Russian, Japanese, and two Chinese variants. Korean is not in that list. I added a Korean string table on this site's copy and a language query the localized pages can pass. That table is ours. The engine underneath is still his, and the credit line stays.
Errors you will actually see are documented as their own index: source, target, and patch checksums, unknown or invalid format, a missing secondary decompressor, a custom code table, and a file the tab should not hold. I link those strings instead of paraphrasing them into a single troubleshooting blob. The original project lives at marcrobledo.com and on GitHub. This guide is the map, not a replacement brand.