---
title: "PerfLocale vs TranslatePress - Migration Guide - PerfLocale"
description: "Compare PerfLocale and TranslatePress for WordPress multilingual. Feature comparison, translation approach, and migration guide."
canonical: "https://perflocale.com/compare/translatepress/"
source: "https://perflocale.com/compare/translatepress/"
format: "markdown"
---
# 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](https://perflocale.com/docs/migration/translatepress/) 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](https://perflocale.com/docs/migration/translatepress/) 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.

[← Back to comparisons](https://perflocale.com/compare/)
