Compare Multilingual Plugins

Four plugins, one table: what each one costs, how each stores translations, and what you get without paying.

The four side by side

WPML, Polylang and TranslatePress are the plugins most people weigh PerfLocale against. This table puts all four in one view. The PerfLocale column is checked against the plugin source for version 1.0.1; the other three columns repeat what our detailed pages already document, and nothing more.

FeaturePerfLocaleWPMLPolylangTranslatePress
Price and licence
PriceFreeFrom €39/year (Multilingual Blog); CMS €99, Agency €199Free core; Pro from €99/yearFree core; Personal €99, Business €199, Developer €349 per year
Licence modelGPL-2.0+ throughout; no paid tier, no paid addonsCommercial subscription; the code is GPL-2.0+Core open source; Pro is proprietaryCore open source; Pro addons are proprietary
What costs extraNothing — every feature ships in the free pluginThe plugin itself; WooCommerce, Translation Management and String Translation are bundled from the CMS tier upWooCommerce (a separate €99/year addon), ACF, XLIFF export and DeepL are ProMore than one secondary language, SEO Pack, DeepL, custom fields, GeoIP detection and Translator Accounts
How translation works
Where translations are storedA separate WordPress post per language, linked in the plugin’s own perflocale_translation_groups and perflocale_translation_links tablesA separate post per languageA separate post per languageOne post; translations stored separately
String translationScanner, plus file mode (generated .l10n.php) or database mode, with CLDR plural rules and gettext contextsBundled from the CMS tier upIn the free version; XLIFF and PO export are ProFrontend editor, for strings visible on the page
Machine-translation providersDeepL, Google, Microsoft, LibreTranslate, a custom agency endpoint, and the WordPress 7.0 AI ClientDeepL, Google, Microsoft (credits-based)DeepL (Pro only)Google Translate; DeepL is Pro
URLs, SEO and WooCommerce
URL and routing modesSubdirectory, subdomain, per-domain and query parameterSubdirectory, subdomain, per-domainSubdirectory, subdomain, per-domainSubdirectory on free; subdomain and per-domain on Business+ via an addon
hreflang outputHTML head and XML sitemap alternates out of the box, plus an HTTP Link header when Hreflang Placement is set to HTTP Header or Both under PerfLocale → Settings → SEOHTML head and sitemapHTML head onlyHead and sitemap via the SEO Pack addon (Personal+); no HTTP Link header
WooCommerceIncluded: products, variations, attributes and categories, inventory sync, multi-currency (you supply the rate source) and order emails in the customer’s languageBundled from the CMS tier upPolylang for WooCommerce, a separate €99/year addonIn the free core, through the visual editor; product slugs need SEO Pack (Personal+)
Platform and developer surface
Hooks, REST and WP-CLI200+ hooks, a full-CRUD REST API under perflocale/v1, and a wp perflocale command setIts own API and hooks; REST and WP-CLI are limitedpll_ functions and a documented filter set; wp pll in Pro 3.8+trp_ filters and actions; no dedicated translation REST API and no WP-CLI
Migration importersWPML, Polylang and TranslatePress, from PerfLocale → Settings → Export & Import or wp perflocale migrate
Multisite✓ (languages and translations per subsite)
Minimum WordPress and PHPWordPress 6.4, PHP 8.1

The competitor columns describe each plugin’s free version unless the cell says otherwise, and they repeat only what our own detailed pages already document — a dash means that page makes no claim either way, not that the feature is missing. Prices are the vendors’ published list prices and change without our noticing; check before you buy. Full detail, including migration steps, is on the three detailed pages: PerfLocale vs WPML, PerfLocale vs Polylang and PerfLocale vs TranslatePress.

Where the others are stronger

WPML bundles a translation memory, a glossary, and an assignment-and-deadline workflow. PerfLocale has none of those — a Translator role ships, but there is no assignment or status pipeline — so if that is how your team translates, WPML is the better fit. TranslatePress lets editors translate by clicking text on the live site, and adds an automatic translation memory and a publish-when-ready gate. Polylang keeps things deliberately simple: you translate in the standard WordPress editor, which works well on a smaller site.

These are alternatives, not companions. PerfLocale detects WPML, Polylang and TranslatePress at boot and stops with an admin notice rather than fighting over the same hooks, so deactivate the old plugin first, then activate PerfLocale and run the importer. The importers read the old plugin’s database tables rather than its runtime, and they never modify or delete anything it owns, so your source data is untouched and a partial run can be re-run.