On this page
Joomla sites have a particular life cycle. Someone builds one, it works well for years, and then that someone moves on. What is left is a site the owner depends on but cannot really touch: a PHP server that needs patching, a dozen extensions of uncertain origin, a template nobody has the files for, and an admin panel that assumes you know what a “module position” is.
The good news is that your content is fine. Joomla is a proper CMS and keeps articles as real data. Moving is mostly about getting that data out cleanly, working out what the extensions were doing, and rebuilding the look. The shape is similar to a WordPress migration, but Joomla’s structure has quirks worth knowing before anyone quotes you a price.
Set expectations first
The realistic one line version of any Joomla migration:
- Your content carries over, once it has been converted.
- Your URLs can be preserved, if that is planned before the switch, not after.
- Your template and extensions do not carry over. That part is a rebuild, always.
Where it goes is a separate decision. Cloudflare hosting is the common modern answer for content sites: fast everywhere, no server to patch, and cheap at small business traffic. What runs on top can be a plain fast site, a familiar CMS, or one of the newer serverless options such as EmDash, Cloudflare’s own open source CMS (MIT licensed, built on Astro, running on Workers with content in D1 and files in R2), which Cloudflare calls a spiritual successor to WordPress. It is one option among several. The rest of this guide applies whichever you pick.
Step 1: Get your content out of Joomla
Joomla keeps articles in a database, organised into a category tree. There are two realistic routes out.
The technical route is a direct database export, pulling the articles and categories tables. That is a job for a developer, or for us, and takes minutes rather than days. If you have hosting access and someone competent, it is the cleanest option because nothing is lost in translation.
The no-database route is a migration or export extension from the Joomla directory; several produce structured output without anyone touching a database. Slower and slightly lossier, but it works when all you have is a login.
Either way, what you want is the substance: titles, intro and full text, categories, authors, publish dates, and which images each article uses. The template, module positions and configuration are not coming with you.
If you have no access at all (this happens more often than you would think, when the original builder has vanished) the site can still be rescued from its public pages, working from the sitemap. More work, but a locked out owner is not a dead end.
Step 2: Map Joomla’s structure to the new site
Joomla’s model translates fairly cleanly. These are the decisions to make up front, and they are decisions about your content, not about code, so they are yours to make:
- Articles become pages or posts. One article, one entry.
- Categories become the new site’s structure. Joomla lets categories nest inside categories, sometimes four or five deep. Decide early whether to keep that hierarchy or flatten it. Deep trees rarely survive a redesign intact, and flattening now saves pain later.
- Authors become author names. If your articles carry bylines readers see, they need mapping across. If everything is by “Administrator”, this is a good moment to fix that.
- Intro text plus full text becomes body plus summary. Joomla splits each article into a teaser and the rest. Most modern systems use one body plus a short summary, so the two parts get joined and the teaser is reused as the summary.
Step 3: Convert the HTML, which is the real work
This is the bulk of any Joomla migration, and where the time and money actually go. Joomla articles are stored as HTML, usually with a decade of editor cruft mixed in. What you want on the other side is clean, structured content: headings that are headings, images that are images, and no leftover formatting from an editor retired in 2016.
Joomla specific things that need catching:
- Plugin tags in the article text. Anything wrapped in curly braces, such as
{loadmodule}or{gallery}or a third party tag. These are Joomla only instructions and render as literal nonsense anywhere else. Each one either gets removed or gets replaced with something real. {readmore}markers. Joomla’s teaser split marker. It can go, because the split is already handled by the field mapping above.- Inline editor styles. Years of hardcoded fonts, colours and sizes buried in the text. Strip them out so the new design controls how things look, rather than fighting old markup on every page.
The routine 90 percent converts automatically and the oddballs get fixed by hand. It is also the part most worth handing to somebody else, developer or service, because it is slow, repetitive and easy to get subtly wrong.
Step 4: Move the images
Joomla media usually lives in an images/ folder on the server, typically with years of duplicates in it. All of it gets downloaded, the still-used files get uploaded to the new host’s storage (on Cloudflare that is R2, which charges nothing for serving traffic out), and every reference gets rewritten. A migration is a good excuse to drop the 400 megabytes of images nothing links to any more.
Step 5: Work out what the extensions were doing
This is the part only you can answer. Go through the extensions list and write down in plain words what each one does for visitors. Not its name, its job. “Shows the contact form.” “Makes the gallery on the about page.” “Nobody knows, it has been off for years.”
Each item then lands in one of three buckets:
- Already built in. Content management, menus, categories and search are standard everywhere. Most of the list falls here.
- Needs an equivalent. Forms, SEO helpers, newsletter signups, galleries. All have modern versions, but they are separate pieces to choose and set up.
- Needs building. A one-off an extension used to handle, usually simpler to rebuild than to replace.
Be ruthlessly honest with that inventory, especially about shops. If your Joomla site leaned on a commerce component such as VirtueMart or HikaShop, the ecommerce story on newer serverless platforms is still thin (EmDash, for example, has no official ecommerce plugin yet). Confirm there is a path for your shop before committing to the move, not after.
Step 6: Rebuild the front end and keep your URLs
Your Joomla template does not come along. For most content sites rebuilding the design is faster than dragging an old template into a new system, and the result works properly on phones, which a lot of ageing Joomla templates never quite did.
The part that must not be skipped is URLs. Joomla addresses vary wildly with how the site was configured, from tidy /about-us paths to index.php?option=com_content&view=article&id=42. Whatever yours look like, they carry your search rankings and every link anyone has made to you. Before the switch, get a complete list of the old addresses, keep the ones you can, and set up permanent redirects (301s) for the ones that change. Doing this afterwards is painful and partly impossible.
The sharp edges
- Content conversion is the bulk of the work. Budget for that, not for the launch.
- Extension parity is not guaranteed. Inventory first, migrate second.
- Newer platforms are newer. Serverless options like EmDash are young, with a young ecosystem and docs still being written. A more established destination is a perfectly reasonable choice if you want boring and proven.
If you want a fast, secure, low maintenance home for a content site and your Joomla install has become a liability, this move is worth making. Weigh the destinations with our EmDash vs WordPress comparison and the best WordPress alternatives roundup; the trade-offs are much the same wherever you land.
At 2emdash we do this for people who would rather not do it themselves: we rebuild your existing site on Cloudflare and hand you a simple panel to run it from. We’re an independent service, not affiliated with Cloudflare or the EmDash project.