File conversionFREE

Your toolchain speaks gettext PO.
Your translator wants Excel.

POXLSXPlural forms, contexts, fuzzy flag — all preserved · send the .po as a sheet, load it straight back.
Converter· Local processing
Drop your .po here
or pick from your device · your file never leaves your browser
01 · what this tool actually does for you

Turn a gettext PO or POT catalog into an Excel sheet a translator or vendor can edit, then load it straight back to PO — plural forms, contexts, the header, placeholders and the fuzzy flag all preserved, every entry keyed by its context. Not generic text-to-table — the one step a gettext handoff actually needs.

Files never leave your deviceIn-browser · zero upload · NDA-friendly
Deterministic conversionThe same input always yields the same output
Lossless round-tripPO→Excel→PO keeps every entry
02 · two formats, one round-trip

PO and Excel are each good at different things

This conversion exists so gettext tooling and translators each use the format they're comfortable with — without losing anything in between.

gettext PO.po

The bilingual catalog format the GNU gettext toolchain and editors (Poedit, Lokalize, Weblate, Crowdin…) use: one entry per string with a msgid and msgstr, an optional msgctxt to disambiguate, plural forms (msgid_plural + msgstr[0], msgstr[1]…) governed by the header's Plural-Forms, and a fuzzy flag marking strings that need review. Precise — not something to hand-edit by eye.

Excel.xlsx

The interface translators, reviewers and vendors find most natural: one row per string, source and translation side by side, easy to filter, bulk-edit and annotate. The catch: open a .po in raw Excel and the plural forms scatter, the contexts blur, the fuzzy flag is lost — and it won't load back into the toolchain.

What this tool guards is exactly that "won't load back": on export it expands each plural entry to one row per form (tagged plural:0, plural:1… in the Type column), keeps each context in the Key column, preserves the fuzzy flag so unreviewed strings stay marked, and stores the header verbatim in a reserved @@po.header row — so the sheet rebuilds into a valid PO catalog on the way back. A few PO constructs can't survive a spreadsheet and are reported, never silently dropped: translator and extracted comments, source references, previous-msgid hints, non-fuzzy format flags (c-format…) and obsolete entries — and compiled .mo files are not supported (text PO/POT only).

03 · common questions

You're probably wondering

Will my file be uploaded?+
No. Parsing and conversion run entirely in your browser (a Web Worker handles large files); the file never leaves your machine and never touches a server. That's a hard requirement for NDA-bound localization work, so the tool is built fully client-side.
How do I send a PO file to a translator who only uses Excel?+
Convert the .po to an Excel sheet here, hand the sheet to the translator or vendor, then load the edited sheet back to PO — one row per string, source and translation side by side. Plural forms, contexts, the header and the fuzzy flag are all carried, so the rebuilt PO loads straight back into your gettext toolchain.
How are plural forms handled?+
Each plural entry is expanded to one row per plural form, following the nplurals count in the file's Plural-Forms header; the Type column tags each row plural:0, plural:1 and so on. On the way back the rows are grouped into a single plural entry again. The engine only counts the forms — it never rewrites your language's plural rule.
Is the fuzzy flag kept, and what about comments?+
Yes — the fuzzy flag is preserved in the Type column and written back as a fuzzy flag, so strings that need review stay marked (losing that would silently ship unreviewed text). Comments, source references and previous-msgid hints can't map to a translation sheet, so they're reported at export, never silently dropped. Every conversion comes with a fidelity report.
Does it support .pot templates and .mo files, and is it free?+
It handles .po catalogs and .pot templates (a template is just a PO with empty translations) — the same grammar. Compiled binary .mo files are not supported; export to PO first. This tier is completely free, no account, no usage limits.
04 · who made this / why

Built by someone who's done this work

This isn't a thin wrapper over a large model, and it isn't an open-source library reskinned. It comes from years of game-localization frontline work and the pile of "nobody notices until it breaks" details that come with it.

The toolchain hands over a PO catalog; the translator only wants to edit in Excel — the format loss in between shouldn't be a human's job to absorb.

Hand a .po to a vendor and nine times out of ten it comes back with the plural forms flattened, the contexts merged, the fuzzy flag wiped — and it won't load back into the toolchain. We hit every one of those, so the tool guards them by default: plural forms expanded per the header, contexts kept in the key, the fuzzy flag preserved and restored.

Free, fully local, instant. It's one step in a workflow, not a platform — but it comes from a place that genuinely understands localization.