One of the main concerns when choosing a WordPress translation plugin is how it affects your website speed. A slower website will negatively affect your page rankings, traffic and eventually revenue.
We compared the page load time of the same page when using different multilingual plugins to translate it. Only one translation plugin was active and configured for any given test.
Translation Loading Time based on Page Size
For the first setup, we aimed to see how the page size affects the translation loading time.
The test features a page with about 1600 words, with Twenty Fifteen theme active and no other plugins, but the one being tested. The following graph shows the average original page load time that was obtained in our test.
Due to the variable nature of software execution time, which is influenced by parameters out of human control (like CPU, OS, network lag), the page load time varies slightly for each refresh.
To combat this, each plugin had the page load time measured 30 times, from which we calculated an average. We used Chrome DevTools for measuring the load time.
We can see that TranslatePress and WeGlot have fairly good load times, due to the minimal intervention they have when displaying the original page. Polylang and WPML seem to take a longer time to load the page.
Remember, the comparison is made on the original page (not translated), so all the plugins should be displaying similar page load times as vanilla WordPress (without any active plugins).
For the average translated page load time, things are a bit different.
We can see that in this test, WeGlot has an increased page load time when displaying a large translated page. This is probably due to the fact that WeGlot plugin uses more time resources to communicate with the WeGlot servers, to provide translation for this large amount of words.
TranslatePress is not so affected by the number of words, because the translations are stored in the local database, therefore it retrieves the translations faster.
For this test, TranslatePress and Polylang have similar loading times, while WPML is the slowest to deliver the translated page.
WooCommerce Shop Translation Loading Time
Moving on to a different test setup, each plugin was set to translate the home page of the Storefront theme by Automattic, using the dummy WooCommerce data provided by the theme. In total there are about 250 words on the Shop page.
Premium versions of the translation plugins were used in order to effectively translate WooCommerce products.
In the next graph you can see how each line representing a plugin, has some variation in the load time, measured in seconds, over the course of these 30 page refreshes.
But even from this graph of raw results, you can observe clear differences between the load times of each plugin, in comparison with the default loading time of WordPress (without any translation plugin installed).
If we take a look at the average page load time of the original page, meaning the default language it was written in, you can see that each plugin adds a bit of load time to WordPress. TranslatePress and WeGlot came pretty close, and only add a fairly small load time of about a quarter of a second. However, WPML seems to take more time to load.
If we have a look at the averages when loading a translated page, all plugins add a bit more time compared to loading the original page. This is normal because extra work is done to render a translated version of the page.
Summing it up
So far we have seen various results depending on the setup and whether we are viewing the original or the translated page. For a final graph, I chose to sum up the page load time for the original page as well as the translated page for the 1600 words page size test.
I think it is worth considering as equally important the speed for both visitors viewing the original content and the ones viewing the translated version.
Therefore, you should take into account the page loading speed for both the original and the translated page, when choosing the WordPress translation plugin that works best for your project.