Skip to content

Moving between Joomla and WordPress: what carries over and what doesn't

There is no export button that turns a Joomla site into a WordPress site, or a WordPress site into a Joomla one. Both systems store the same kinds of things, pages, images, users, menus, but in different shapes. A move between them is part data transfer and part rebuild, and it helps to know which part is which before asking anyone for a quote.

The list below applies in both directions unless it says otherwise.

Content: carries over, with decisions

Article and page text moves across by script, along with titles, dates, authors, categories and tags. The work is in the places where the two systems disagree about structure.

WordPress separates posts from pages. Joomla has one content type, the article, sorted into nested categories. Going to WordPress, someone has to decide which articles become pages and which become posts. Going to Joomla, pages and posts both become articles, and a category tree has to be designed for them.

Custom fields carry over when they are mapped one by one. Joomla's custom fields and WordPress post meta (often managed with ACF) hold the same kind of data. Custom post types in WordPress have no direct twin in Joomla; they usually become a category with its own set of fields. Joomla content built on a third-party content component goes the other way, into a custom post type.

Images need more care than text. The files copy easily, but Joomla keeps them as plain files under images/ while WordPress registers every file in its media library and sorts them into folders by year and month. Every image address inside every article has to be rewritten to match. A script does this. When the step is missed, the new site looks fine on recent posts and shows broken images on older ones, so it is worth checking a few old articles on the staging site.

Page builder pages: do not carry over

If pages were made with a page builder, SP Page Builder on Joomla or WPBakery and Elementor on WordPress, their content is not ordinary text. It is stored in the builder's own format, as shortcodes or structured data that only that builder can read. It means nothing to the other platform, and often nothing to a different builder on the same platform.

Those pages are rebuilt by hand. On many business sites this is the home page, the service pages and the landing pages, so it is worth counting them early. The blog or news archive, which is usually plain text, is the part that moves by script.

Users and passwords: usually carry over

User accounts, names, email addresses and registration dates move across. Groups and permissions are mapped by hand, because Joomla's access levels and WordPress's roles are built differently.

Passwords are stored as hashes, and the two systems do not read each other's formats out of the box. There are two ways to handle that. A small plugin on the new site can check the old hash the first time each person logs in and then save the password in the new format, so nobody notices anything. Or everyone is asked to set a new password after launch. For a site with a dozen editors the second is fine. For a membership site the first is worth the extra work.

URLs: do not carry over, and this is the part that protects your search traffic

The two systems build addresses differently. A Joomla address usually follows the menu and category structure. A WordPress address follows the permalink setting and belongs to the post itself. Some addresses can be kept identical on the new site, and where that is possible it is the best outcome.

Every address that changes needs a permanent (301) redirect to its new home. The list of old addresses comes from the XML sitemap, from the pages report in Google Search Console and from the server's access logs, which also catch old addresses that are still linked from other websites. Page titles and meta descriptions move with the content. Joomla keeps them in the article, WordPress keeps them in the fields of its SEO plugin, and the script carries them from one to the other.

Nobody can promise that rankings stay where they are. A complete redirect map keeps the links and history that search engines already know, and that is the part that can be controlled.

Multilingual sites: carry over, with care

Joomla handles languages in its core and links translations of the same page to each other. WordPress does it with a plugin. In either direction the text moves easily. The links between translations are the fragile part: if they are lost, the language switcher sends visitors to the home page instead of the same page in their language, and search engines lose the connection between the versions.

Design: is rebuilt

A Joomla template and a WordPress theme are different things technically, and neither runs on the other system. The design itself can stay exactly as it is. It is rebuilt as a new template or theme from the existing pages. If a redesign is planned anyway, doing it in the same project avoids building the old design twice.

Extensions, plugins and forms: are replaced

Nothing installable moves across. Each extension or plugin gets a counterpart on the other side, and most common functions (forms, SEO, caching, galleries, backups, cookie consent) have several. Where there is no counterpart, the choice is between a near match and a custom-built piece.

Forms are rebuilt, and their notification emails are tested again. Stored form submissions can be exported to a spreadsheet if they need to be kept. Menus, modules on the Joomla side and widgets or blocks on the WordPress side are set up again by hand.

Online shops: a project of their own

Products, customers, order history, tax rules, payment gateways and stock make a shop migration a separate piece of work with its own risks. It should be assessed and quoted separately from the rest of the site.

What is better left behind

A move is a good moment to drop things. Old revisions, spam user accounts, tables left behind by extensions removed years ago, unused images and pages nobody has visited in five years do not need a new home. A smaller site is cheaper to move and easier to run.

The last week

The new site is built and checked on a staging address while the old one stays live. Shortly before launch, editors stop making changes on the old site, the content is imported one final time and the redirects go live with the new site. In the days after, the server log is checked for addresses that return "page not found", and those get redirects too.

Which platform is the right one depends on who will run the site after the move and what they already know. We build on both and describe how we handle the move in either direction on our Joomla and WordPress migration page. Sometimes the honest result of an assessment is that an upgrade on the current platform does the job for less.

Tell us what you’re working with.

Send the site address and what’s bothering you.

Let’s talk