.PO

PO File

GNU gettext Portable Object (translation source catalog)
Ask a question
QUICK ANSWER

A PO file is a GNU gettext Portable Object translation catalog - a plain-text list of original strings (msgid) and their translations (msgstr) used to localize software such as WordPress themes, PHP apps, and Linux programs. Open and edit it in Poedit or any text editor. After editing, compile it to a .mo file with msgfmt (or save in Poedit, which does this automatically) so the program picks up your translations.

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

On this page

19k+ extensions indexed
Last reviewed Aug 11, 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 PO file format?

.po files are GNU gettext Portable Object files - the human-editable source format for software translations. The format is used across a vast range of projects: GNU/Linux utilities, PHP applications, Python packages, WordPress themes and plugins, and many other open-source applications.

A .po file is plain UTF-8 text organized as paired entries: msgid (the original source-language string) and msgstr (the translated equivalent). Comment lines prefixed with # carry translator notes, extracted source-code comments, file references, and fuzzy flags. Entries with plural forms use msgid_plural and indexed msgstr[n] variants governed by a Plural-Forms expression in the file header.

The translation workflow follows three file types: developers extract translatable strings into a .pot template, translators copy it per locale and fill in the msgstr values, and then msgfmt compiles each .po into a binary .mo file that the application loads at runtime. The .mo is machine-readable only - you always edit the .po, never the compiled output.

.po files can be edited in a plain text editor, but dedicated tools like Poedit provide error checking, fuzzy-match suggestions, and plural-form helpers. Web platforms like Weblate support collaborative translation. The format is stable and backwards-compatible since GNU gettext was introduced in 1995.

Security & safety

RISK: LOW

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

Format details

in a nutshell
FULL NAMEGNU gettext Portable Object (translation source catalog)aka Portable Object file, gettext PO file
DEVELOPERGNU Project / Free Software Foundation (GNU gettext)since 1995 (GNU gettext)
MIME TYPEtext/x-gettext-translation
TYPEPlain-text translation catalog (msgid/msgstr pairs)
STANDARDOpen · royalty-free
This extension is also used by…
  • Disk image / partition image (rare) - The DB legacy name 'Disk image file' reflects a rare/incorrect labeling; .po is not a standard disk-image extension.

Programs that open PO files

Windows3 apps
Poedit Freemium File > Open the .po, translate entries in the grid, then save - Poedit writes the matching .mo automatically.
GNU gettext (msgfmt / msgmerge) Open-source Edit the .po in any text editor, then 'msgfmt file.po -o file.mo' to compile, or 'msgmerge' to update against a new .pot.
Visual Studio Code / Notepad++ Free Open as text; with a gettext/PO extension you get syntax highlighting. Good for quick edits.
macOS2 apps
Poedit Freemium Open the .po, edit translations, save to regenerate the .mo.
GNU gettext (Homebrew) Open-source brew install gettext, then edit the .po and run 'msgfmt file.po -o file.mo'.
Linux3 apps
GNU gettext Open-source Preinstalled on most distros: edit the .po, 'msgfmt' to compile, 'msgmerge' to update.
Poedit Freemium GUI catalog editor; open the .po, translate, save to write the .mo.
Gtranslator / Lokalize Open-source GNOME (Gtranslator) and KDE (Lokalize) PO editors; open the .po and translate.
Web1 app
Weblate Open-source Web translation platform that imports/exports gettext .po; translate in the browser and download the catalog.

Technical details

deep spec
Format typePlain text, line-oriented (GNU gettext PO syntax)
EncodingUTF-8 (charset declared in the header Content-Type field); legacy catalogs may use ISO-8859-x encodings
MIME typetext/x-gettext-translation
Entry structuremsgid / msgstr pairs; optional msgctxt for contextual disambiguation of identical source strings
Header entryFirst entry has an empty msgid; its msgstr block carries Project-Id-Version, Content-Type, Plural-Forms, and other catalog metadata
Plural formsmsgid_plural with indexed msgstr[0], msgstr[1], ... variants; the Plural-Forms header expression controls which form applies for a given count
Comment types# (translator comment), #. (extracted source comment), #: (source file reference), #, (flags such as fuzzy or c-format)
Fuzzy flag#, fuzzy marks a translation needing review after the source string changed; msgfmt excludes fuzzy entries from the compiled .mo output
Compiled outputConverted to binary .mo (Machine Object) by msgfmt; the .mo is what the running application loads via gettext()
Template file.pot (Portable Object Template) - the untranslated skeleton; all language .po files are derived from it via msginit or msgmerge
Typical file size5 KB - 5 MB; scales with the number of translatable strings in the project
Tool chainxgettext (extract strings from source), msginit (create new .po), msgmerge (update existing .po), msgfmt (compile to .mo)
PlatformAny - Linux, macOS, Windows, BSD; wherever GNU gettext or a compatible libintl implementation is available
EcosystemUsed by WordPress, Drupal, GNOME, KDE, Python gettext, PHP gettext, and many other frameworks for internationalization (i18n)
Released1995 (GNU gettext)
Latest versionPO file syntax is stable; defined in the current GNU gettext manual
Open standardYes · royalty-free
Specificationwww.gnu.org

PO conversions

Community Q&A

asked by users
Ask a quick question
Get help from people who work with PO 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 PO files.

Frequently asked questions

What is a .po file?
A GNU gettext Portable Object - a plain-text translation catalog pairing original strings (msgid) with translations (msgstr). It's the editable source that gets compiled into a binary .mo and is very common in WordPress, PHP, Python and Linux apps.
How do I open and edit a .po file?
Open it in Poedit (the standard free GUI editor on Windows/Mac/Linux), or in any text/code editor. After editing, compile it to .mo with 'msgfmt' - Poedit does this automatically when you save.
What's the difference between .po, .pot and .mo?
.pot is the untranslated template; .po is the human-editable translated catalog you work in; .mo is the compiled binary the program actually loads. You translate the .po, then generate the .mo from it.
I edited the .po but the app translation didn't change - why?
Programs load the compiled .mo, not the .po. Recompile with 'msgfmt file.po -o file.mo' (or save in Poedit). Also check the filename matches the locale (e.g. plugin-fr_FR.po) and sits in the right /languages folder.
How do I translate a WordPress plugin or theme?
Copy the plugin's .pot template, open it in Poedit, choose your language, translate the strings, and save as e.g. plugin-pl_PL.po - Poedit writes the matching .mo into the /languages folder for WordPress to use.
Can I open a .po file in Excel?
Not directly - it's gettext syntax, not a spreadsheet. Convert it with Translate Toolkit's po2csv to get a CSV you can open in Excel, then csv2po to convert back.

References

1GNU gettext manual - The Format of PO 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.RPMSGRestricted Permission Message
8.MDMarkdown Document
9.BINCD/DVD Disc Image (BIN/CUE)
10.TMPTemporary File

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