PerfLocale vs WPML
A detailed, honest comparison to help you choose the right multilingual plugin for your site.
WPML is the most established multilingual plugin for WordPress, trusted by hundreds of thousands of sites worldwide. PerfLocale is a newer, performance-first alternative that includes many features WPML charges extra for. Both are excellent choices - here's how they differ.
Feature Comparison
| Feature | PerfLocale | WPML |
|---|---|---|
| General | ||
| Price | Free, open source (GPL-2.0+) | From €39/year (Multilingual Blog); CMS €99, Agency €199 |
| Translation approach | Separate posts per language | Separate posts per language |
| Open source | ✓ | ✗ (commercial, code is GPL-2.0+) |
| Auto-detected plugin & theme addons | ✓ (20+) | ✓ (via wpml-config.xml) |
| Multisite support | ✓ | ✓ |
| Performance | ||
| Caching architecture | 3-layer cache (static, object cache, transients) | No dedicated caching layer |
| Batch preloading | ✓ | ✗ |
| Smart query optimization | ✓ | ✗ |
| Plugin code time per page | ~1 ms median; see benchmarks | Not published |
| Translation Tools | ||
| String translation | ✓ (scanner + file/database modes) | ✓ (bundled in CMS+ tier) |
| Machine translation providers | DeepL, Google, Microsoft, LibreTranslate | DeepL, Google, Microsoft (credits-based) |
| Translation memory | ✓ | ✓ (in Advanced Translation Editor) |
| Translation glossary | ✓ | ✓ (in ATE; works with PTC and DeepL) |
| Translation workflow | ✓ | ✓ (bundled in CMS+ tier) |
| Publish gate | ✓ | ✗ |
| Content sync (images, meta) | ✓ | ✓ |
| Content change detection | ✓ | ✓ (marks translations as “Needs update”) |
| Language fallback chains | ✓ | ✗ (default-language fallback only) |
| XLIFF export/import | ✓ (XLIFF 2.0) | ✓ |
| Block editor integration | ✓ | ✓ (Gutenberg + custom blocks via wpml-config.xml) |
| URL and Routing | ||
| URL modes | Subdirectory, subdomain, per-domain | Subdirectory, subdomain, per-domain |
| Self-healing URL rules | ✓ | ✗ |
| GeoIP redirect | ✓ (5 providers, extensible via filter) | ✗ |
| Automatic hreflang tags | ✓ (cached) | ✓ |
| SEO & Modern Web Features | ||
| hreflang in HTML head, XML sitemap, AND HTTP Link header | ✓ (all three) | ✓ (HTML head + sitemap) |
JSON-LD inLanguage + workTranslation schema enrichment | ✓ (integrates with your SEO plugin's schema) | ✗ |
| IndexNow push-indexing (Bing, Yandex, Google via Cloudflare) | ✓ (translation-aware - also pushes siblings) | ✗ |
Content-Language HTTP response header | ✓ | ✗ |
Fallback-content data-nosnippet guard | ✓ | ✗ |
| Speculation Rules prerender on language-switcher hover | ✓ (integrates with WP 6.8+ Core API) | ✗ |
| View Transitions API smooth switching | ✓ (Chrome 126+, Safari 18.2+) | ✗ |
| Integrations | ||
| SEO plugins | Yoast, Rank Math, SEOPress, AIOSEO, TSF, Slim SEO | Yoast, Rank Math, SEOPress, AIOSEO, TSF |
| Page builders | Elementor, Beaver Builder, Bricks, Oxygen | Elementor, Beaver Builder, WPBakery, Divi, Oxygen |
| Custom fields | ACF, MetaBox, Pods | ACF, Toolset, Meta Box |
| WooCommerce | ||
| WooCommerce support | ✓ | ✓ (bundled in CMS+ tier) |
| Product translation | ✓ | ✓ |
| Variation translation | ✓ | ✓ |
| Attribute translation | ✓ | ✓ |
| Category translation | ✓ | ✓ |
| Inventory sync (SKU, stock, weight) | ✓ (automatic) | ✓ (automatic) |
| Multi-currency with auto exchange rates | ✓ (5 providers, extensible via filter) | ✓ (auto + manual rates) |
| Order emails in customer's language | ✓ | ✓ |
| Cart fragment isolation per language | ✓ | ✗ |
| Developer Tools | ||
| REST API | ✓ (full CRUD) | ✓ (limited) |
| Stateless machine-translation endpoint | ✓ (POST /block-translate) | ✗ |
| WP-CLI | ✓ (full command set) | ✓ (limited) |
| Helper API (template functions) | Fluent PHP API (perflocale()) | icl functions |
| Hooks and filters | 200+ | Extensive |
| WordPress Abilities API (WP 6.9+) | ✓ | ✗ |
| WordPress 7.0+ Native Integration | ||
| WordPress AI Client provider (translate via host's configured AI — no second API key) | ✓ | ✗ |
| AI quality scoring (1–5 score + “needs review” badges) | ✓ (opt-in background job) | ✗ |
| AI-grounded glossary auto-suggest as you type | ✓ | ✗ |
| WordPress Connectors API key sharing (env > constant > Connectors > DB) | ✓ | ✗ |
JS Abilities shim (wp.abilities.invoke('perflocale/...')) | ✓ | ✗ |
| Block Hooks auto-insert of language switcher in FSE headers | ✓ | ✗ |
Modern admin theme palette (uses --wp-admin-theme-color tokens) | ✓ | ✗ |
Key Differences
Pricing and licensing
WPML requires an annual subscription starting at €39/year (Multilingual Blog), with WooCommerce, Translation Management, and String Translation bundled into the CMS (€99) and Agency (€199) tiers. PerfLocale is completely free and open source - all features, including WooCommerce integration, machine translation, and workflow management, are included at no cost.
Performance approach
PerfLocale was designed from the ground up with performance as a core principle. Its 3-layer caching architecture (static memory, object cache, transients), batch preloading, and conditional hook registration keep plugin code time around 1 ms per page on typical multilingual sites — under 5 ms across every cache state we measured (see benchmarks). Real-world numbers depend on theme + other plugins. WPML is a mature, feature-rich plugin that has evolved over many years and handles performance differently.
Developer experience
PerfLocale provides a full REST API, comprehensive WP-CLI commands, 200+ hooks and filters, and an addon architecture for extending functionality. The entire codebase is open source and available for inspection. WPML offers its own API and hooks, backed by extensive documentation and a large community.
Migration from WPML
PerfLocale’s bundled WPML importer reads your existing wp_icl_translations and wp_icl_strings tables and reconstructs equivalent translation groups as native PerfLocale rows. Your WPML data is read-only during the import - the tool writes new rows without modifying or deleting anything WPML owns, so you can re-run the import, abandon it, or roll back by restoring a database backup without risk to your source data. Re-running is also idempotent: existing translation groups are reused, so partial runs fill in the gaps instead of creating duplicates. The importer batches its SELECTs so peak memory stays bounded on very large sites - regression-tested at 5,000 translation groups × 3 languages (15,000 link writes) under 32 MB peak delta. See the step-by-step WPML migration guide for pre-flight checks, verification, and troubleshooting.
Frequently Asked Questions
Can I migrate from WPML to PerfLocale?
Yes. PerfLocale includes a built-in WPML importer that covers post translations, term translations, and string translations. Activate PerfLocale, add your languages under PerfLocale → Languages, then trigger the import from PerfLocale → Settings → Export & Import or from the CLI with wp perflocale migrate wpml. See the WPML migration guide for the full walk-through.
Does PerfLocale support all the same languages as WPML?
PerfLocale supports any language - there's no predefined limit. You can add any language with a custom slug, locale, name, flag, and text direction. If a language exists in WordPress, PerfLocale can use it.
Is PerfLocale really free?
Yes. PerfLocale is free and open source under GPL-2.0+. There are no premium tiers, no paid addons, and no feature restrictions. Every feature - including WooCommerce support, machine translation, workflow management, and all integrations - is included.