PerfLocale vs TranslatePress
A detailed, honest comparison to help you choose the right multilingual plugin for your site.
TranslatePress takes a unique approach to WordPress translation with its visual frontend editor - you translate content directly on your live site. PerfLocale takes a different path with an admin-based approach focused on performance and developer tools. Both are solid choices for different use cases.
Feature Comparison
| Feature | PerfLocale | TranslatePress |
|---|---|---|
| General | ||
| Price | Free, open source (GPL-2.0+) | Free core + Personal €99 / Business €199 / Developer €349 per year |
| Translation approach | Separate posts per language | Single post, translations stored separately |
| Open source | ✓ | ✓ (core only - Pro addons are proprietary) |
| Unlimited languages on free tier | ✓ | ✗ (1 secondary language on free; more via Multiple Languages addon) |
| Multisite support | ✓ | ✓ |
| Performance | ||
| Caching architecture | 3-layer cache (static, object cache, transients) | No dedicated caching layer |
| Batch preloading | ✓ | ✗ |
| Smart query optimization | ✓ | ✗ |
| Conditional hook registration | ✓ (front-end hooks skipped in admin, and vice versa) | ✗ |
| Translation Tools | ||
| Visual frontend editor | ✗ | ✓ |
| String translation | ✓ (scanner + file/database modes) | ✓ (frontend editor for visible strings) |
| Machine translation providers | DeepL, Google, Microsoft, LibreTranslate, External Agency, WordPress AI Client (WP 7.0+) | Google Translate, DeepL (Pro) |
| Translation memory | ✗ | ✓ (Automatic Translation Memory) |
| Translation glossary | ✗ | ✗ |
| Translation workflow (assignments, statuses, deadlines) | ✗ (a Translator role ships, but there is no assignment or status pipeline) | ✗ (Translator Accounts assigns roles, no statuses or deadlines) |
| Publish gate | ✗ | ✓ (publish-language-when-ready, in free) |
| Content sync (images, meta) | ✓ | Single-source by design (no per-language duplication) |
| Content change detection | ✓ | ✗ |
| Language fallback chains | ✓ | ✗ |
| XLIFF export/import | ✓ (XLIFF 2.0) | ✗ |
| Block editor integration | ✓ | ✓ (block-sidebar include/exclude + CSS-selector rules) |
| URL and Routing | ||
| URL modes | Subdirectory, subdomain, per-domain, query-parameter | Subdirectory (free); subdomain/per-domain (Business+ via addon) |
| Self-healing URL rules | ✓ | ✗ |
| GeoIP redirect | ✓ (no lookup service bundled — wire your own via perflocale/geo/lookup_country) | ✓ (Automatic User Language Detection addon, Business+) |
| Automatic hreflang tags | ✓ (cached) | ✓ (SEO Pack addon, Personal+) |
| SEO & Modern Web Features | ||
| hreflang in HTML head, XML sitemap, AND HTTP Link header | ✓ (all three) | Head + sitemap via SEO Pack addon (Personal+); no HTTP Link header |
JSON-LD inLanguage + workTranslation schema enrichment | ✓ (integrates with your SEO plugin's schema) | ✗ |
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 | Own SEO Pack addon (Personal+); also translates output of major SEO plugins |
| Page builders | Elementor, Beaver Builder, Bricks, Oxygen, Oxygen 6 (Breakdance) | Auto-detected via frontend DOM |
| Custom fields | ACF, MetaBox, Pods | Auto-detected (Pro only) |
| WooCommerce | ||
| WooCommerce support | ✓ | ✓ (free core; SEO Pack adds product slugs, Personal+) |
| Product translation | ✓ | ✓ (via visual editor) |
| Variation translation | ✓ | ✓ (via visual editor) |
| Attribute translation | ✓ | ✓ (via visual editor) |
| Category translation | ✓ | ✓ (via visual editor) |
| Inventory sync (SKU, stock, weight) | ✓ (automatic) | Single-source by design (one product, one inventory) |
| Multi-currency with scheduled rate sync | ✓ (no rate provider bundled — supply rates via perflocale/woocommerce/exchange_rates_fetched) | ✗ (recommends third-party plugin) |
| Order emails in customer's language | ✓ | ✓ (gettext-translated) |
| Cart fragment isolation per language | ✓ | ✗ |
| Developer Tools | ||
| REST API | ✓ (full CRUD) | ✗ (no dedicated translation REST API; standard WP REST is language-aware) |
| Stateless machine-translation endpoint | ✓ (POST /block-translate) | ✗ |
| WP-CLI | ✓ (full command set) | ✗ |
| Helper API (template functions) | Fluent PHP API (perflocale()) | trp_ filters & actions |
| Hooks and filters | 200+ | Documented trp_ filter set |
| WordPress Abilities API (WP 6.9+) | ✓ (opt-in via perflocale/abilities/enabled) | ✗ |
| WordPress 7.0+ Native Integration | ||
| WordPress AI Client provider (translate via host's configured AI — no second API key) | ✓ | ✗ |
| WordPress Connectors API key sharing (env > constant > Connectors > DB) | ✓ | ✗ |
JS Abilities API shim (perflocale/*) | ✓ (ships ready; inert until core lands the JS side of the API) | ✗ |
| Block Hooks auto-insert of language switcher in FSE headers | ✓ | ✗ |
Modern admin theme palette (uses --wp-admin-theme-color tokens) | ✓ | ✗ |
Key Differences
Translation philosophy
TranslatePress pioneered the visual frontend translation approach - you browse your live site and click on any text to translate it. This is incredibly intuitive for content editors who aren't comfortable in the WordPress admin. PerfLocale uses a traditional admin-based approach - translators work in the standard WordPress editor with a per-post Translations panel - which is better suited for developer teams and agencies that work in the admin. Neither plugin gives you an assignment-and-deadline pipeline; if that is what your team needs, you'll want a dedicated TMS alongside either one.
Content architecture
TranslatePress stores translations alongside the original content in a single post. PerfLocale creates separate WordPress posts for each language, linked in translation groups. The separate-post approach gives each translation its own revision history, SEO metadata, and custom field values - but requires more database entries.
Free tier scope
TranslatePress's free version supports 1 secondary language plus basic Google-Translate-powered automatic translation and WooCommerce compatibility. SEO Pack (hreflang, sitemaps, slug translation), Multiple Languages, and DeepL ship as paid addons across the Personal (€99), Business (€199), and Developer (€349) tiers - subdomain/per-domain URLs, GeoIP detection, and Translator Accounts are Business+. PerfLocale includes all of its own features - unlimited languages, WooCommerce, SEO integration, machine translation, and string translation - for free. It does not have a translation memory, a glossary, or a publish gate, so TranslatePress wins those rows outright.
Migration from TranslatePress
PerfLocale’s bundled TranslatePress importer reads your wp_trp_* tables and reconstructs full translated post content by substituting matched strings from TP’s dictionary into the original post, then writes a brand-new post per language into wp_posts. Post translations, string translations, and translated slugs are all imported. Everything the source site actually displays (TP status ≥ 1, which includes machine-translated strings) is included by default - filter perflocale/migration/translatepress/min_status to 2 for a reviewed-only import. Your TranslatePress data is read-only during the import, so you can re-run or abandon safely. The importer processes posts in batches with cache flushes between chunks, keeping peak memory flat regardless of site size. See the step-by-step TranslatePress migration guide for pre-flight checks, verification, and troubleshooting.
Frequently Asked Questions
Can I migrate from TranslatePress to PerfLocale?
Yes. PerfLocale includes a built-in TranslatePress importer that reconstructs translated post content from TP’s string dictionary, then imports string translations and translated slugs. Deactivate TranslatePress first — PerfLocale will not start while it is active, and the importer reads TranslatePress’s database tables rather than its runtime, so nothing is lost. Then activate PerfLocale, add your languages under PerfLocale → Languages, and trigger the import from PerfLocale → Settings → Export & Import or from the CLI with wp perflocale migrate translatepress - the CLI path is recommended for larger sites because content reconstruction is the slowest part of the process. See the TranslatePress migration guide for the full walk-through.
Which is better for WooCommerce stores?
Both handle WooCommerce. TranslatePress’s free version covers product translation via its visual editor and stock is naturally single-source (one product per language). PerfLocale separates products per language so each variant has its own slugs, SEO metadata, and revision history, and bundles automatic inventory sync, multi-currency with a scheduled rate-sync job (you supply the rate source), and order emails in the customer’s language — features that aren’t first-party in TranslatePress at any tier.