Pick a mod folder and the browser compiles DAT / LAYOUT into the engine's binary formats and wraps them into a .MOD, or goes the other way and unpacks a .MOD back into editable sources. The same Rust code as the desktop build, compiled to WebAssembly, with identical output. Your files never leave your machine; no server is involved.
Want it faster, or working on a multi-hundred-MB compilation? Reach for the native Rust build instead — real multi-core parallelism with no browser memory ceiling, typically several times quicker: tl2-mikuro-mod-packer-rs ↗ (single exe, nothing to install). The web edition wins on being instantly available, anywhere.
The mod folder must contain MOD.DAT and MEDIA/ (exactly the input the desktop packer takes).
ENGINE · detecting …
01 · Choose the mod folder
Chrome / Edge pick the folder natively; Firefox and others fall back to directory upload (still read locally only).
02 · Confirm
03 · Pack
The other direction: turn a .MOD back into an editable source folder. The container stores compiled payloads under their source names, so DAT / LAYOUT are decompiled back to text — ready to edit and repack.
01 · Choose a .MOD file
Chrome / Edge can write the result straight into a folder you pick; other browsers get a ZIP download.
02 · Confirm
03 · Unpack
tl2-mikuro-mod-packer — byte-for-byte identical output. File timestamps in the manifest are written at the millisecond precision the browser exposes (the desktop build has 100 ns precision); that tiny difference in one field affects neither game loading nor mod activation.BASEFILE unit inheritance and MPP walk-grids bake completely in the browser — same result as the desktop build.--mpp re): the walk-grid only needs the base collision geometry (9 MB, bundled), never the 160 MB of render meshes. New-map / edited-map mods work out of the box.BINDAT / BINLAYOUT payloads are turned back into UTF-16LE text sources, byte-for-byte identical to what the desktop unpack produces (measured against the official GUTS unpacker across 13 mods / 90k+ files: 99.4% byte-identical, and the remainder is GUTS losing precision or failing to name a key).rghash; whatever cannot be reversed becomes UNK_<8 hex digits> — the data survives (the placeholder recompiles to the very same hash) but the readable name is gone, so never hand-edit those digits. Bundled now is a 465,361-entry tiered reverse table (real key positions / exe wide literals / curated dictionaries / numbered families / filenames / DAT values, merged most-trustworthy first, 1.31 MB compressed), plus the file's own basename and entire string table used as hints. Recovered names print green and spell out the placeholder they would have been (recovered: UNK_091C391F → SECOND_STAT); anything still unreversed prints red. Measured across 20 third-party mods (98,008 files): UNK_ down from 972 to 871, zero regressions, zero wrong names, and newly recovered keys like DISALLOWPVP / FORCEPVP / UNITREWARD exist only inside the exe, never in any shipped data file.The desktop packer's Rust code compiled to WebAssembly: it compiles DAT / LAYOUT into engine binaries and wraps them into a .MOD — all locally in your browser, nothing uploaded, nothing installed.
MOD.DAT and MEDIA/). Chrome / Edge use the native folder picker; Firefox and others switch to directory upload automatically (still read locally only).MOD_FILE_NAME in MOD.DAT)..MOD in the Unpack section. Chrome / Edge let you choose an output folder and write straight into it; other browsers get a ZIP. What comes out is a source folder you can edit and feed straight back into Pack above."The same furnace, seen through a new window."