.MO

MO File

GNU gettext Machine Object (compiled translation catalog)
Ask a question
QUICK ANSWER

A MO file is a compiled GNU gettext translation catalog - the binary form of a .po file that programs load to show their interface in another language. It is common in WordPress, PHP, and Linux software. To read or edit it, open the file in Poedit or run "msgunfmt file.mo" to convert it back to readable .po text. Do not edit the .mo directly.

Developer: GNU Project / Free Software Foundation (GNU gettext) Category: Developer Files Open standard MIME: application/x-gettext-translation
OPENS ON Windows macOS Linux Web
Related: .DO · .MD · .HEX · .XSD

On this page

19k+ extensions indexed
Last reviewed Aug 4, 2026

Not sure what your file is?

Drop any file into our identifier - we read just the first bytes to name the format.

Identify a file

What is the MO file format?

.mo is a developer file used for storing a compiled binary translation catalog. .mo files are not human-readable - they are the machine-readable counterpart to a human-editable .po source file. Translators edit the .po file and compile it to .mo using the msgfmt command; the application then loads the .mo at runtime to display translated text. Modifying a .mo file directly will render it unusable.

Data access

.mo files are not encrypted or read-protected. Some hex editors can display the raw binary, but the correct way to recover human-readable strings is the msgunfmt command, which decompiles a .mo back into its .po source. Internally, a .mo starts with a four-byte magic number (0x950412DE little-endian), a revision word, and two offset tables pointing to original (msgid) and translated (msgstr) string arrays. An optional hash table enables fast runtime lookup.

Security & safety

RISK: LOW

A .mo holds only translation strings and metadata - there is no executable code, so the file itself is harmless. The only practical caution: a malicious .mo placed in a theme/plugin could inject misleading interface text (e.g. altered links or instructions), so only use language files from the official theme/plugin source, not from unknown 'translation' downloads.

Format details

in a nutshell
FULL NAMEGNU gettext Machine Object (compiled translation catalog)aka Machine Object file, gettext MO file
DEVELOPERGNU Project / Free Software Foundation (GNU gettext)since 1995 (GNU gettext)
MIME TYPEapplication/x-gettext-translation
TYPEBinary compiled translation catalog (hash-indexed string table)
STANDARDOpen · royalty-free
This extension is also used by…
  • Autodesk Maya ASCII/object data - Some Maya pipelines and exporters use .mo for object data - unrelated to gettext.
  • Modula-3 object file - Historic compiled object file for the Modula-3 language; the DB name reflects this rare meaning.
  • Motorola / firmware object dumps - Occasionally seen for Motorola object/firmware blobs; niche and unrelated.
MAGIC BYTES · FILE SIGNATURE
OFFSET
00010203
HEX
DE120495
ASCII
····
Magic number 0x950412de. If the file is little-endian the first four bytes are DE 12 04 95; big-endian MO files store it as 95 04 12 DE. The reader uses the byte order it detects to parse the rest of the header.

Programs that open MO files

Windows2 apps
Poedit Freemium File > Open the .mo to view it, or open the matching .po, translate, and save - Poedit writes the .mo automatically.
GNU gettext (msgunfmt / msgfmt) Open-source Run 'msgunfmt file.mo' to print the catalog as .po text, or 'msgfmt file.po -o file.mo' to compile.
macOS2 apps
Poedit Freemium Open the .mo or its .po; edit and save to regenerate the .mo.
GNU gettext (Homebrew) Open-source brew install gettext, then 'msgunfmt file.mo' / 'msgfmt file.po -o file.mo'.
Linux3 apps
GNU gettext Open-source Preinstalled on most distros: 'msgunfmt file.mo' to read it, 'msgfmt' to compile.
Poedit Freemium GUI catalog editor; open the .po, translate, save to write the .mo.
Gtranslator / Lokalize Open-source GNOME/KDE PO editors; edit the .po and export/compile the .mo.
Web1 app
Poedit (web service for catalogs) Freemium Use the desktop app; .mo files are best handled locally rather than via random online viewers.

Technical details

deep spec
Format typeBinary compiled translation catalog (hash-indexed string table)
Magic number0x950412DE (little-endian: DE 12 04 95 at offset 0; big-endian files store 95 04 12 DE)
Byte orderLittle-endian or big-endian; reader detects byte order from the magic number at parse time
MIME typeapplication/x-gettext-translation
String encodingUTF-8 (most common); actual charset declared in the empty-msgid metadata entry
Metadata entryEntry with empty msgid stores Project-Id-Version, Content-Type, charset, and Plural-Forms rules
Format revisionRevision 0 (both major and minor revision words are 0); revision 1 is defined but rarely deployed
Hash tableOptional fixed-size hash table embedded in the file body for O(1) string lookup at runtime
Compilation toolmsgfmt (GNU gettext) compiles .po → .mo
Decompilation toolmsgunfmt (GNU gettext) recovers a .po file from a .mo binary
Typical file size5 KB - 2 MB depending on the number of translated strings
Platform supportLinux, macOS, Windows, BSD - any OS running gettext-based software
Common deployment pathInstalled as <domain>.mo inside an LC_MESSAGES directory under a locale tree (e.g. locale/fr/LC_MESSAGES/app.mo)
Released1995 (GNU gettext)
Latest versionMO format revision 0 (still current); revision 1 defined but rarely used
Open standardYes · royalty-free
Specificationwww.gnu.org

MO conversions

Community Q&A

asked by users
Ask a quick question
Get help from people who work with MO files. Be specific - include your system and software version.
No account needed · answers usually within a day

No questions yet - be the first to ask about MO files.

Frequently asked questions

What is a .mo file?
A compiled GNU gettext translation catalog - the binary version of a .po file that software loads to display its interface in another language. It's very common in WordPress, PHP and Linux apps.
How do I open or edit a .mo file?
Open it in Poedit, or decompile it with 'msgunfmt file.mo' to get readable .po text. Don't edit the .mo directly - edit the .po and recompile to .mo.
What's the difference between .po and .mo?
.po is the human-editable text catalog you translate; .mo is the compiled binary the program actually loads at runtime. You edit the .po and generate the .mo from it with msgfmt (or Poedit does both).
How do I create a .mo from a .po?
Run 'msgfmt file.po -o file.mo', or in Poedit just save the .po - it writes the matching .mo automatically.
Why is my WordPress translation not changing after I edited the .mo?
Edit the .po and regenerate the .mo (the app loads the .mo, not the .po). Also check that the filename matches the locale (e.g. plugin-fr_FR.mo) and that it's in the right /languages folder.
Can I read a .mo in Notepad?
Only partly - it's binary, so you'll see scrambled bytes with some readable string fragments. Use Poedit or 'msgunfmt' to read it properly.

References

1GNU gettext manual - The Format of MO Fileswww.gnu.org
2GNU gettext - official sitewww.gnu.org

Keep exploring

across the database

Top extensions this week

1.AQQAQQ Instant Messenger File
2.CRDOWNLOADChrome Partial Download File
3.PARTPartial Download File
4.DATProgram Data File (generic)
5.EXEWindows Executable (Portable Executable)
6.NOMEDIAAndroid No-Media Marker File
7.BINCD/DVD Disc Image (BIN/CUE)
8.RPMSGRestricted Permission Message
9.MDMarkdown Document
10.XDWDocuWorks Document

Related extensions

.DOStata Do-File
.MDMarkdown Document
.HEXIntel HEX File
.XSDXML Schema Definition
.MAPSource Map (JavaScript / CSS)
.CONFIGConfiguration File

Free file tools

An in-browser file identifier and image converter - everything runs on your device.

Open the toolbox

Browse file extensions A-Z