This is unofficial, fan-made software for Final Fantasy XI. It is not affiliated with, endorsed by, or supported by Square Enix Holdings Co., Ltd. FINAL FANTASY is a registered trademark of Square Enix.
Square Enix's official position is that third-party tools and modifications to the FFXI client are prohibited by the Terms of Service. Installing or using this software may result in account suspension, account termination, character data loss, or other action taken by Square Enix at their sole discretion.
This software is provided AS IS, without warranty of any kind, express or implied — including but not limited to warranties of merchantability, fitness for a particular purpose, and non-infringement. In no event shall the author or contributors be liable for any claim, damages, account action, lost time, lost progress, file corruption, or any other liability arising from the use of, or inability to use, this software.
By installing, building, or running this software you acknowledge that you understand and accept these risks.
FFXI keeps your macros in memory while you're logged in. If you edit mcr*.dat with this tool while the game is running, FFXI will overwrite your changes the next time it writes back to disk (page navigation, zone change, or logout). Confirmed in-testing: edits made while logged in do not show up in-game.
Workflow that actually works:
- In-game:
Macro List → Save All to Server— uploads your current macros to your character on the Square Enix server. Bulletproof recovery option if anything goes wrong locally. (SE limits this to ~one save per 30 minutes per character — do it now, not after you've been editing for an hour.) /logoutto character select. This is when FFXI flushes its in-memory macro state to disk. After this point, disk = in-game.- Open the manager and edit. Your changes go to disk without racing FFXI.
- Log back into your character. FFXI reads the new disk state into memory. Your edits are now live in-game.
If you skip step 2 and edit while logged in, your changes get clobbered the next time FFXI writes to disk — most users notice it as "the manager looks correct but in-game still shows the old macros," and then the manager edits disappear when FFXI saves.
The in-game Save All to Server is your safety net for the worst case (you lost local edits, you save-corrupted a file, etc.). Always do it before any editing session.
This tool edits your FFXI mcr*.dat macro files directly. Two backups are recommended before you save anything you care about:
- Back up to the Square Enix server (in-game). Open the Macros menu in FFXI, pick Macro List → Save All to Server. Your macros are uploaded to your character on the SE side and can be restored later via Load All from Server. This is the bulletproof option: even total local file corruption can't touch a server backup. SE limits this to roughly one save per ~30 minutes per character, so do it BEFORE you start editing.
- Back up the local files. Either copy
<FFXI install>\USER\<character-id>\somewhere safe yourself, OR click the "Back up..." button in the app's top bar (next to Rename...). The button snapshots everymcr*file for the active character into<Documents>\FFXIMacroManager_backups\<character>_<timestamp>\with one click.
The app's save routine writes to a .new temp file first, renames the original to .bak, then renames .new into place — so the immediately-previous version of each saved page is always one rename away. However, that .bak is overwritten on every subsequent save, so it only protects you against the last edit. Use the two backups above for everything older than the last save.
Standalone Windows desktop app for editing FINAL FANTASY XI's mcr*.dat
macro files outside the game. Looks like GSUI (dark navy + cyan
accents). Not an addon — a real .exe you double-click.
Built because typing six lines into the in-game macro editor with the controller-style cursor is brutal compared to a real text box.
- Asks for your FFXI install folder (the one containing
USER\) - Finds every character on that install
- Lets you pick character → macro book → page
- Shows the full 20-slot macro hotbar (CTRL row + ALT row, 10 slots each)
- Click a slot to edit it — title plus six lines, in real text boxes
- Pick a job from the dropdown to get a filtered list of every spell that job can learn, sorted by level
- Double-click any spell to insert it into the current macro line, with
the right prefix (
/ma,/ja,/ws) and a target placeholder - Save writes back to the real
mcr<N>.datfile with a.bakof the original next to it
It is byte-perfect: round-trip every macro page on a real character
(150 files) saves identical bytes back to disk when nothing is edited.
Auto-translate codes ({AT:cat/kind/id}) round-trip too.
-
Build the
.exe(one time):build.batThis drops
FFXIMacroManager.exeand adata\folder undersrc\bin\Release\. Copy that folder anywhere — it is self-contained apart from .NET Framework 4.7.2+ (preinstalled on Windows 10/11). -
Run
FFXIMacroManager.exe. -
Click "Pick FFXI install folder..." and point at your FFXI root — typically
<drive>:\...\SquareEnix\FINAL FANTASY XI. The app scansUSER\for character folders. -
Pick a character, a book (1-20), a page (1-10). Click any slot.
-
Edit title + lines. Press Save page to write back. The original file becomes
mcr<N>.dat.bak.
+-------------------------------+------------------+------------------+
| Macro hotbar (CTRL + ALT) | Editor | Action library |
| 20 slots | title + 6 lines | spells / JAs / |
| click to select | type freely | target tokens |
+-------------------------------+------------------+------------------+
-
Job filter at the top filters the action library to spells that job can natively learn (with the level requirement shown). Set it to
(all jobs)for an unfiltered alphabetical list. -
Action library also has a kind dropdown — switch to Job abilities for the JA list, or Targets for snippets like
<me>,<t>,<wait 3>that append to the current line instead of replacing it. -
Save page writes the whole 20-macro page back. Slots you didn't touch preserve their raw bytes (auto-translate codes included).
Each mcr<N>.dat is exactly 7,624 bytes:
0x0000 Magic 01 00 00 00 4 bytes
0x0004 Flags usually 0 4 bytes
0x0008 MD5 hash of payload 16 bytes (recomputed on every save —
FFXI rejects mismatched files)
0x0018 Macros 20 × 380 7600 bytes
Per-macro layout (380 bytes):
+0 Reserved 4 bytes
+4 6 lines × 61 each 366 bytes (null-padded ASCII)
+370 Title 10 bytes (null-padded, max 8 chars usable)
Hotkey mapping: macros 0-9 → CTRL+1..CTRL+0, macros 10-19 → ALT+1..ALT+0.
The MD5-hash discovery (initially I thought it was an opaque obfuscated block) came from cross-checking against the towbes / azenus open-source "FFXI Macro Editor" VB.NET source (Functions.vb in their repos). Without recomputing the hash on save, FFXI silently refuses to load edited macros.
Lines are plain ASCII text with optional auto-translate codes embedded
as FD <cat> <kind> <id-hi> <id-lo> FD. The editor displays them as
{AT:cat/kind/id} (or the English name if known) and re-encodes
correctly on save.
tools/generate-data.sh "<path to Windower\res>" parses
spells.lua, job_abilities.lua, auto_translates.lua, jobs.lua
into JSON files in data/. The .exe loads from a sibling data\
folder next to it. Re-run when you upgrade Windower's resources.
- Windows 10 or 11
- Visual Studio 2022+ (any edition, "Desktop development with .NET" workload) OR the .NET Framework 4.7.2 Developer Pack
- That's it. No npm, no NuGet, no Python.
The .exe is fully standalone — Windower is NOT required. The data\
folder shipped next to the .exe contains pre-generated copies of every
spell, job ability, weapon skill, auto-translate entry, and job tag the
tool needs. Everything came from Windower's res/*.lua at build time
but the .exe never opens those files at runtime; it only reads the
mcr*.dat / mcr.ttl files inside your FFXI install's USER\ folder.
If Windower happens to be installed alongside your FFXI install, the
Rename dialog will surface any GearSwap-derived character names as
suggestions (since those files conveniently contain "Kalitzo" in
filenames like Kalitzo_blm.lua). This is a hint only — you're never
required to have Windower.
FFXI stores macro pages per character but it doesn't store the
human-readable name anywhere on disk — the name lives server-side and
is only resolved while you're logged in. So we ask you to type it once
per folder via the Rename... button. The mapping is saved to
%AppData%\FFXIMacroManager\characters.txt and is auto-loaded next run.
First time you select an unnamed character, the Rename dialog opens automatically.
FFXI Macro Manager\
README.md
build.bat
src\
App.xaml
MainWindow.xaml
Themes\GSUI.xaml
Models\MacroFile.cs -- binary format read/write
Models\Character.cs -- USER folder discovery
Data\SpellDb.cs -- spell/JA/AT lookup tables
FFXIMacroManager.csproj
Properties\AssemblyInfo.cs
data\
spells.json
job_abilities.json
auto_translates.json
jobs.json
tools\
generate-data.sh -- regenerate data\ from Windower
verify-roundtrip.cs -- byte-perfect round-trip test
- Saves write to
mcr<N>.dat.newfirst, then rename existingmcr<N>.dattomcr<N>.dat.bak, then rename.newto the target. A crash mid-save can leave one of.newor.bakbehind — your original is always recoverable. - The page-title block (16 bytes) is obfuscated by the game; the editor never touches it.
- Round-trip verifier in
tools\verify-roundtrip.csproves byte-for-byte preservation across every macro file on a live character account.
- Built by TWinn22 (GitHub: TWinn22 / FFXI: Jason, 2026)
- Binary format (especially the MD5-hashed integrity field at offset 8)
cross-checked against the open-source FFXI Macro Editor by towbes
/ azenus — their
Functions.vbwas invaluable for confirming the per-macro 380-byte layout and the MD5 hash at offset 8 - Spell / JA / auto-translate data sourced from Windower 4's
res/*.luaresource tables (generated to JSON at build time) - Binary format reverse-engineered from a live FFXI install (mcr*.dat hex dumps) plus public knowledge of FFXI's macro layout
- UI theming modeled after the in-game GSUI addon
- Page title (the 16-byte obfuscated block) is preserved verbatim, not editable. The in-game page title editor still works fine.
- Job-abilities tab is alphabetical, not job-filtered — FFXI's resource data doesn't tag JAs by job. Use the search box.
- Auto-translate insertion: existing AT codes round-trip via the
{AT:cat/kind/id}placeholder but the action library always inserts plain ASCII. FFXI accepts both, so this is fine in practice.