FeaturesPluginPricingResources
Change Language
ResourcesHow to Use Poedit: The Complete Guide (2026)

How to Use Poedit: The Complete Guide (2026)

SimplePoTranslate TeamApril 25, 2026
How to Use Poedit: The Complete Guide (2026)

If you have ever opened a .po file in a plain text editor, you already know the feeling. Hundreds of msgid and msgstr pairs, fuzzy flags scattered everywhere, and one wrong keystroke away from breaking the entire catalog. There is a better way, and for over a decade the standard answer has been the same desktop application: Poedit.

This Poedit tutorial walks through everything from installing the app to compiling your first .mo file. Whether you are translating a WordPress theme, a plugin, or your own Gettext-based project, Poedit gives you a clean visual editor that hides the raw file format and lets you focus on the actual translation work.

By the end of this guide you will understand the Poedit interface, know how to start a translation from a .pot template, use Translation Memory to speed things up, and recognize exactly where the free desktop tool stops being efficient, so you know when to reach for a cloud workflow instead.

What Is Poedit and How Do You Install It?

Poedit is a free, cross-platform desktop editor for Gettext translation files (.po, .pot, and the compiled .mo). It runs on macOS, Windows, and Linux, and it is the most widely recommended starting point for anyone editing translation catalogs by hand.

Installation is straightforward. Head to the official Poedit website and download the installer for your operating system, or use a package manager.

# macOS (Homebrew)
brew install --cask poedit

# Debian / Ubuntu
sudo apt install poedit

# Windows (winget)
winget install Poedit.Poedit

The free version covers the core editing experience completely. There is a paid Poedit Pro tier that adds source-code scanning and pre-translation, which we will cover later. For now, the free download is all you need to open and edit any catalog.

If you want a wider view of the editing landscape before committing, our roundup of the top free tools to edit and translate PO files on Mac and Windows compares Poedit against the main alternatives.

Understanding the Poedit Interface

When you open a .po file (File then Open, or simply drag the file onto the window), Poedit presents a three-zone layout that maps directly onto the underlying Gettext structure.

The Source and Translation Panes

The main area is a two-column list. The left column shows the source string (msgid) exactly as the developer wrote it in the code. The right column shows your translation (msgstr). Clicking any row loads it into the editing panel at the bottom, where you type the translated text.

Consider this raw entry inside the file:

#: includes/checkout.php:142
msgid "Your order has been placed."
msgstr ""

In Poedit, that same entry appears as a single row: source on the left, an empty translation cell on the right. You never touch the raw syntax. You just type into the bottom panel and Poedit writes the msgstr for you.

Fuzzy Flags and Status Colors

Poedit color-codes rows so you can see catalog health at a glance. Untranslated strings stand out, and fuzzy strings, entries marked #, fuzzy in the file because the source changed or the translation was auto-matched, appear in a distinct color (typically orange or yellow). Fuzzy strings are essentially "needs review" flags. WordPress will not display them on the live site, so clearing them matters. You can toggle the fuzzy state on any row with a single shortcut once you have confirmed the translation is correct.

A status bar at the bottom shows your progress: total strings, how many are translated, and how many remain fuzzy or untranslated.

The bottom editing panel also surfaces helpful context. It shows the source reference comment, the line of code where the string is used (for example #: includes/checkout.php:142), and any developer notes left in the file. These comments are invaluable when a short string like "Order" could be a noun or a verb, the source reference tells you which file and feature it belongs to, so you translate it correctly the first time. Spending a few seconds reading that context is the difference between an accurate catalog and one full of awkward, out-of-place phrasing.

How Do You Start a New Translation From a POT File?

A .pot file is a template containing every source string with empty translations. To begin a brand-new language, you create a .po from that template rather than editing the .pot directly.

In Poedit, choose File then New from POT/PO File, select the theme or plugin's .pot (usually inside its /languages folder), and pick your target language. Poedit then asks for the language and generates a fresh catalog with the correct filename convention, for example de_DE.po for German.

Configuring the Catalog and Plural-Forms Header

Every .po file carries a header block, and the most important field for correctness is Plural-Forms. This expression tells Gettext how many plural variants a language needs and which one to pick for a given count.

"Plural-Forms: nplurals=2; plural=(n != 1);\n"

English uses two forms. Languages like Polish and Russian need three or more, and getting this header wrong produces grammatically broken counts. Poedit sets a sensible default when you choose the language, but you can review and edit it under Catalog then Properties. If you want a deeper understanding of why this header is so easy to get wrong, see our guide on Gettext plurals and complex pluralization.

Catalog Properties also lets you set the project name, the translator's name and email, the language team, and the character set. The character set should almost always be UTF-8; anything else risks mangling accented characters and non-Latin scripts. Poedit defaults to UTF-8 for new files, but if you inherit an older catalog it is worth confirming. Getting the header right once at the start saves you from re-doing work later.

Once configured, you simply work down the list, translating each row. Poedit autosaves your position, so you can close the app mid-catalog and pick up exactly where you left off. For long catalogs, the keyboard shortcuts to jump to the next untranslated or next fuzzy string keep you moving without scrolling, which is where most of the time is lost in manual editing.

Translation Memory and the Free vs Pro Divide

One of Poedit's most useful features is Translation Memory (TM). As you translate, Poedit remembers every source-and-translation pair. The next time an identical or similar source string appears, in the same file or a different project, Poedit suggests your previous translation automatically. Over months of work this builds into a personal database that dramatically speeds up repetitive UI strings like "Save," "Cancel," and "Add to cart."

TM suggestions appear in the editing panel, and you can accept them with a keystroke. Note that TM-filled entries are often marked fuzzy by default, so you should review them before clearing the flag.

What Does Poedit Pro Add?

The free editor handles manual translation completely. Poedit Pro (a paid upgrade) adds two headline features:

  • Source-code scanning: Pro can scan your PHP or JavaScript source, find every __() and _e() Gettext call, and extract a fresh .pot or update an existing catalog, no command line required.
  • Pre-translation: Pro offers machine pre-translation for the whole catalog, but it runs on a paid, credit-based model. You buy credits, and large catalogs consume them quickly.

For a single language and a modest catalog, Pro is convenient. The honest limitation is scale. Pre-translation credits add up, and the workflow is still fundamentally one file, one language, one desktop session at a time.

It is also worth being clear about what Translation Memory does and does not do. TM only suggests translations you (or a shared team database) have produced before. For a brand-new project with no history, the memory is empty, so it offers nothing until you have already translated a meaningful chunk by hand. TM accelerates repetitive and recurring strings; it does not translate net-new content. That distinction matters when you are estimating how long a fresh catalog will take, because the first language is always the slowest, and every subsequent language starts from a blank slate unless its strings overlap.

Saving Your Work and Compiling MO Files

Why does WordPress need a .mo file when you only edited a .po? Because WordPress reads the compiled binary .mo at runtime, not the human-readable .po. The good news is that Poedit handles this automatically.

When you press Save, Poedit writes the .po and, by default, compiles the matching .mo in the same folder.

# After saving in Poedit you get both files:
wp-content/languages/themes/
  storefront-de_DE.po   # editable source
  storefront-de_DE.mo   # compiled binary WordPress loads

If saving does not produce a .mo, check Preferences then General and confirm "Automatically compile MO file when saving" is enabled. A missing or stale .mo is one of the most common reasons a finished translation never appears on the live site. If you hit that wall, our troubleshooting guide for translations not showing up in WordPress covers the full checklist.

When Poedit Is Not Enough: Scaling Beyond the Desktop

Poedit is excellent for what it is: a precise, manual, single-file editor. The friction appears the moment your needs grow. Translating one plugin into twelve languages means twelve separate sessions. A 10MB catalog with thousands of strings means hours of typing or burning through pre-translation credits. And manual edits always carry the risk of fumbling a placeholder like %s or %1$s and silently breaking output.

This is exactly where a cloud workflow takes over. SimplePoTranslate runs your catalog through context-aware AI with Syntax Locking, which freezes every %s, %1$s, {name}, and HTML tag so the structure can never break during translation. Smart Batching handles 10MB-plus files without manual splitting, and you get the result back as a ready-to-deploy ZIP containing .po, .mo, .json, .php, and .xliff at once, all in the cloud with no desktop install and no bloat.

Use Poedit for fine-tuning and review, the job it does best. Use the cloud when you need bulk speed across many languages without trading away placeholder safety.

Ready to translate entire catalogs into dozens of languages without burning hours in the desktop editor? Try SimplePoTranslate free — no credit card required. The free tier lets you translate your first .po file in minutes, with Syntax Locking on every string.