MUI File Documentation
Summary
A Windows Multilingual User Interface (MUI) resource file is a Windows system file that holds the translated user-interface text (menus, dialogs, strings and messages) for one display language. Its extension is .mui and its MIME type is application/octet-stream. You do not open it yourself; Windows loads it automatically when a program runs. Each .mui lives in a language subfolder such as System32\en-US, next to the program it belongs to.
Technical details
| Full name | Windows Multilingual User Interface (MUI) Resource File |
|---|---|
| File extension | .mui |
| MIME type | application/octet-stream |
| Format type | Language-specific resource-only PE/DLL, no executable code |
| Category | System files |
| Developer | Microsoft |
| Introduced | Windows Vista, 2007 (the LN-file + .mui model) |
| Byte order | Little-endian |
| Container / base format | PE / Portable Executable, resource-only DLL |
| Magic number | Hex 4D 5A ("MZ") at offset 0; "PE\0\0" further in |
| Contains | String tables, dialogs, menus, message tables plus the MUI resource block; no code |
| Parent | The language-neutral "LN" .exe/.dll it supplements |
| Location | %SystemRoot%\System32\<locale>\ |
| Safe to delete | No — protected system file |
| Related extensions | .dll .exe |
| Specification | Microsoft Learn — MUI Resource Management |
What is a MUI file?
A file with the .mui extension is part of the Windows Multilingual User Interface (MUI) system. It holds the translated user-interface text for one language: the strings, menus, dialog boxes and status messages that a program shows on screen. A .mui carries no program logic. It is a companion to an actual program, and Windows pulls text out of it at run time so the interface appears in the language you have chosen.
The point of this design is that one Windows installation can switch between display languages without shipping a separate copy of every program. English, German and Japanese users run the same notepad.exe; only the matching .mui file changes.
The LN + .mui split: how Windows localizes one install
Microsoft introduced this model with Windows Vista in 2007. Each localizable program or system component is split into two kinds of file. The first is a language-neutral file, called the "LN" file. This is the ordinary .exe or .dll: it holds the executable code plus the resources that do not need translation. The second is one or more language-specific files, each with the .mui extension, each carrying the translated resources for a single locale.
notepad.exe (LN file: code + language-neutral resources)
+-- en-US\notepad.exe.mui (English UI text)
+-- de-DE\notepad.exe.mui (German UI text)
+-- ja-JP\notepad.exe.mui (Japanese UI text)
Every language file for a given LN file shares the same name, formed by appending .mui to the full name of the LN file. So Myfile.dll has language files named Myfile.dll.mui. Because resources live outside the code binary, Microsoft can ship a code fix without touching the translations, and add a new language without rebuilding the program. See /docs/dll and /docs/exe for the parent formats.
A resource-only DLL: PE header, resource section, no code
Technically a .mui is a resource-only DLL in Portable Executable (PE) format. It begins with the "MZ" DOS header (4D 5A) at offset 0, exactly like any executable, and the DOS stub's e_lfanew field points further into the file to the "PE\0\0" signature. From there the layout is that of a normal PE image, except that the sections that would hold machine code are effectively empty. What the file actually contains is a resource section (.rsrc) plus a small MUI-specific block.
The resource section holds the usual Win32 resource types: String Table, Dialog, Menu, Message Table and Version info. These are the same resource structures a program would normally embed in its own .exe. The MUI system just moves the translatable ones out into the .mui. All numbers in the file are stored little-endian.
The MUI resource block and the parent checksum
A .mui file is useless on its own; Windows has to know which LN file it belongs to and whether it is the right version. That link is the job of the MUI resource block, the resource configuration data stored in each file. It records a checksum together with language and identifier information.
The main checksum is derived from the file's major and minor version numbers and its name, taken from the version resource. The LN file and every one of its .mui files carry the same checksum. When a program asks for a resource, the resource loader compares the checksum in the LN file with the checksum in the candidate .mui, and it also checks that the language recorded in the file matches the folder the file sits in. If the two do not agree, the loader refuses to load that .mui. This is what stops a mismatched or tampered language file from being used against the wrong binary.
Where .mui files live and how Windows loads them
Language files sit in subfolders of the folder that holds their LN file, and each subfolder is named for a locale. For system components this is under %SystemRoot%\System32:
C:\Windows\System32\notepad.exe
C:\Windows\System32\en-US\notepad.exe.mui
When a program loads a string, dialog or menu through the normal resource APIs such as FindResource and LoadString, the Vista-and-later resource loader transparently looks in the appropriate .mui for the current thread's preferred UI languages. If it finds no match, it falls back through the language list and finally to the ultimate fallback language recorded in the LN file. The program's own code does not change; setting a different Windows display language simply steers the loader toward a different .mui, and the whole interface appears translated.
Inspecting and generating .mui
You rarely touch a .mui directly. Most people meet one only while browsing System32, out of curiosity, or when a component reports a missing or corrupt .mui. Since Windows loads these files automatically, there is no "open" action for a user. To look inside one, copy the .mui to an ordinary folder and open the copy in a resource editor such as Resource Hacker. There you can read its String Table, Dialog, Menu and Message Table entries, which is a straightforward way to see exactly which pieces of UI text a given component has.
Developers can generate .mui files for their own applications. The Windows SDK includes a command-line tool named MUIRCT (muirct.exe) that splits a normal resource DLL into an LN file plus one language-specific .mui file per language, writing the matching checksum into each. The Windows RC Compiler can build the same split directly from source. (For the record: a .mui has nothing to do with OpenGL; OpenGL is a graphics API and is unrelated to this file type.)
Missing or corrupt .mui: SFC and DISM
The .mui files under System32 are protected system files. Deleting, replacing or editing them in place can break a component's interface or trigger integrity errors, so if you want to inspect one, always work on a copy rather than the original. Do not delete .mui files to reclaim space; they are small, and removing them damages the localization of whatever component owns them. To drop a language properly, use Settings > Time & Language > Language and remove the language pack, which lets Windows uninstall the related .mui files cleanly.
If Windows reports that a .mui is missing or corrupt, that is a symptom of damaged system files. Repair them with the built-in tools rather than hunting for a replacement file online:
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
Downloading a .mui from a random "DLL download" site is a common route for malware and unwanted programs, and the file you get will almost certainly have the wrong checksum anyway, so the loader would reject it. Be wary, too, of a renamed executable dressed up with a .mui extension to look harmless.
FAQ
Why is a .mui a DLL with no code? Because it reuses the existing Windows resource machinery. Resources have always lived inside PE files, so the simplest way to store translated resources separately was to put them in a PE file of their own, with the code sections empty. The loader already knew how to read resources from a PE image.
Where does Windows store .mui files? In locale-named subfolders next to their parent program, for example C:\Windows\System32\en-US\shell32.dll.mui alongside C:\Windows\System32\shell32.dll.
Windows says a .mui is missing or corrupt — what fixes it? Run sfc /scannow, then DISM /Online /Cleanup-Image /RestoreHealth. These restore the correct files from the Windows component store. Do not download the file from a third-party site.
Can I delete .mui files to save space? No. They are protected system files, they are small, and deleting them breaks the affected component's interface. Remove an unused display language through Settings instead.
One historical footnote: a few old CAD and configuration applications used .mui for their own settings file. That meaning is rare and unrelated to the Windows resource file described here.
References
- Microsoft Learn — MUI Resource Management
- Microsoft Learn — Resource Utilities (MUIRCT)
- Angus Johnson — Resource Hacker
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.