Short answer: You can’t jump straight from Joomla 3 to Joomla 6. The supported path is 3.10 → 4.4 → 5.4 → 6.x, with a backup, a Pre-Update Check, and an extension review at every step. Joomla 3 and Joomla 4 no longer get security fixes. Joomla 5 bug fixes end on October 13, 2026, and Joomla 6 is supported until October 2029. The core update is usually the easy part. Most of the work goes into extensions, templates, and hosting.
Current versions (as of September 30, 2026)
- Joomla 6.1.4 and Joomla 5.4.9: security and bugfix releases, published September 29, 2026 (release announcement).
- Joomla 6.2: Release Candidate 1 is out for testing only. General availability is planned for about October 13, 2026 (RC announcement).
- The last releases for the older lines are 3.10.12 and 4.4.14 (from Joomla’s official update feed).
This guide brings together what we’ve learned from running this upgrade path on client sites. It points you to the official Joomla documentation for exact, button-by-button steps, and focuses on the decisions and problems those docs assume you’ve already worked out.
1. Which Joomla version are you on, and why upgrade now?
In the administrator, open System → System Information and write down three things: your Joomla version, your PHP version, and your database type and version. Everything else in this guide depends on those three numbers.
| Version line | Status | Key dates (official) |
|---|---|---|
| Joomla 3.x | End of life | Support ended in August 2023 |
| Joomla 4.x | End of life | Security support ended in October 2025 (Joomla version support table) |
| Joomla 5.x | Security fixes only, soon | Bugfix support ends October 13, 2026; security-only support ends October 12, 2027 (Joomla roadmap) |
| Joomla 6.x | Current major | Released October 14, 2025; bugfixes until October 17, 2028; security until October 16, 2029 (Joomla roadmap) |
What this means in practice:
- On Joomla 3 or 4? You’re running a CMS that no longer gets security patches. The September 29, 2026 release alone fixed 16 core security issues in 5.4 and 6.1 (release notes). Joomla 3 and 4 sites don’t get fixes like these.
- On Joomla 5.4? You’re fine for now, but bug fixes stop in October 2026. Plan the move to 6.x on staging while you still have time.
- Hosting pressure: Joomla 6 requires PHP 8.3. Hosts are phasing out old PHP versions, so a Joomla 3 site on PHP 7.x can break when your host upgrades PHP, whether or not you’re ready.
2. Know the path before you start
| Stage | You must be on | You move to | Official guide |
|---|---|---|---|
| 1 | Latest Joomla 3.10.x | Joomla 4.4.x | Joomla 3.x to 4.x Step by Step Migration |
| 2 | Joomla 4.4.x | Joomla 5.4.x | Joomla 4.4.x to 5.x Planning and Upgrade |
| 3 | Joomla 5.4.x | Joomla 6.x | Joomla 5 to 6 Planning and Upgrade |
Joomla calls 3.10 → 4 a “mini-migration” because the core upgrades with one click, while third-party extensions may not. It calls 4.4 → 5 and 5.4 → 6 upgrades. If you’re on 3.9 or older, update to 3.10.12 first. On Joomla 1.5 or 2.5, you’re doing a rebuild or data migration, not an in-place upgrade.
A note on jUpgrade: Some older videos still recommend jUpgrade. It was built for Joomla 1.5-era migrations and plays no part in the 3 → 4 → 5 → 6 path, which runs through the core Joomla Update component.
Server requirements for each hop
| Target | PHP (minimum) | Database (minimum supported) | Source |
|---|---|---|---|
| Joomla 4.x | 7.2.5 | MySQL 5.6 / PostgreSQL 11 | 3.10 → 4.0 notes |
| Joomla 5.x | 8.1.0 (8.3 recommended) | MySQL 8.0.13 / MariaDB 10.4 / PostgreSQL 12 | Joomla 5 requirements |
| Joomla 6.x | 8.3.0 (8.4 recommended) | MySQL 8.0.13 / MariaDB 10.6 / PostgreSQL 14 | Joomla 6 requirements |
Joomla 6 also needs the PHP modules json, simplexml, dom, zlib, gd, and a database driver (mysqlnd, pdo_mysql, or pdo_pgsql), plus a memory limit of at least 256 MB. If your host can’t run PHP 8.3, you’ll stop at 5.4 until you change hosts, so sort out hosting before you spend a weekend on 3 → 4. Our Joomla PHP.ini settings guide covers memory and execution limits.
3. Pre-upgrade audit: extensions, templates, and custom code
Most upgrade failures come from third-party code, not the Joomla core. Before you touch anything:
- Export an inventory. Go to Extensions → Manage and filter by type: Package, Component, Module, Plugin, Template, Library. For each item, record the name, version, developer, and whether it’s in use.
- Label every extension with one of these:
- Keep: the developer offers Joomla 5.4 and Joomla 6 builds.
- Replace: abandoned, or Joomla 3-only. If it’s dead on Joomla 4, it’s dead on Joomla 6.
- Remove: installed but not used. Uninstall packages first, so their modules and plugins go with them.
- Check against Joomla 6, not just Joomla 4. An extension that only supports Joomla 4 means paying for the same migration twice.
- Find custom code. Look for custom components,
templates/YOUR_TEMPLATE/html/overrides, and CLI or cron scripts. You can test extension and template ZIPs for Joomla 6 problems with our free Joomla Migration Scanner, which runs in your browser, and look up replacements for each finding in the Joomla Migration Reference. - Clean up the content. The official 3.10 guide recommends emptying the trash (articles, categories, menu items) and fixing the database schema before you migrate.
If the audit turns up more rewrites than you have time for, that’s the part of the job a Joomla upgrade team usually takes on. Everything else in this guide you can still do yourself.
| Extension | Type | Version | Developer | In use? | Decision (Keep/Replace/Remove) | Notes |
|---|---|---|---|---|---|---|
| Akeeba Backup | Component | Joomla 3 build | Akeeba Ltd | Yes | Keep | Update to the Joomla 4, 5 and 6 builds at each hop. Take a backup before every hop. |
| K2 | Component | 2.x | JoomlaWorks | Yes | Replace | Move items to core articles while still on Joomla 3. Map extra fields to custom fields and 301-redirect changed URLs. |
| sh404SEF | Component | Joomla 3 build | Weeblr | Yes | Replace | Install 4SEF + 4SEO on Joomla 3 and run their sh404SEF import before the 3 → 4 migration. |
| Site template (Helix3) | Template | Joomla 3 build | JoomShaper | Yes | Replace | Rebuild the layout in Helix Ultimate on staging, then remove Helix3 and its plugins. |
| ChronoForms | Component | v6 | ChronoEngine | Yes | Replace | Install ChronoForms v8 alongside v6, rebuild the forms, and test email and custom PHP actions. |
| JComments | Component | 3.x | Original project (no longer developed) | Yes | Replace | Back up the _jcomments tables, then move to the JComments 4 community fork. |
| Old slideshow module | Module | 1.x | Third-party | No | Remove | Not published on any page. Uninstall it before the upgrade. |
4. Backups and staging: never upgrade the live site first
- Take a full backup (files and database) before every hop, not just once at the start. Akeeba Backup is the tool most Joomla professionals use. See how to back up a Joomla website.
- Test the restore. Restore the backup to a staging location at least once. An untested backup isn’t a rollback plan.
- Build staging on a subdomain, a subfolder, a local stack, or a temporary hosting account, as the official guide suggests. Match the PHP and database versions you’ll run in production.
- Keep your Joomla 3 backup until the site has been stable on Joomla 6 for a while. You’ll want the original data if an extension vendor turns out to have no Joomla 6 build.
- Go live last. Do every hop on staging, test it, and then promote the finished site.
5. Step by step: 3.10 → 4.4 → 5.4 → 6
Step 1: Joomla 3.10 → 4.4
- On staging, update to the latest 3.10.x and fix the database schema (Extensions → Manage → Database → Fix).
- Go to Components → Joomla Update → Options and set Update Channel to Joomla Next. This shows the Pre-Update Check. Don’t click update yet.
- Read both parts of the check: Required/Recommended Settings and Extensions. Update what you’re keeping and uninstall what won’t survive. The official guide also lists old core leftovers to remove:
plg_content_geshi, and the templates Beez_20, Beez5, Atomic, and Bluestork. Protostar disappears in Joomla 4. - Switch to a core template (Protostar or Beez3) so Joomla 4 has a working default. You’ll replace it after the upgrade.
- Run the update. Then go to System → Maintenance → Database, check the schema, clear the cache, and test.
- Move to the latest 4.4.x before going further.
What the Pre-Update Check really tells you: it reads each developer’s compatibility tag. It doesn’t run the code. “Missing Compatibility Tag” means the developer never told Joomla anything, so ask the developer. An extension can show as compatible and still crash with your overrides.
Step 2: Joomla 4.4 → 5.4
- Once 4.4 is stable, switch PHP to 8.1 or newer (8.3 is recommended). Joomla 4.4 runs on PHP 8.1, so change PHP while you’re still on 4.4 and retest.
- Update your extensions to their Joomla 5 builds.
- Set the channel to Joomla Next, run the Pre-Update Check, and upgrade to 5.x. The Behaviour – Backward Compatibility plugin is enabled during this upgrade, which lets older extension code keep working for now.
- Work through the official 4.4 → 5 guide’s notes on removed or changed core pieces. For example, the old Search component should give way to Smart Search.
- Update to the latest 5.4.x. Joomla 6 will only install from 5.4.
Step 3: Joomla 5.4 → 6.x (the plugin step most guides skip)
Joomla 5.4 ships with two plugins with almost identical names (official compatibility plugin notes):
| Plugin | Required state before upgrading to 6 |
|---|---|
| Behaviour – Backward Compatibility (no number) | Disabled, and your site must still work with it off |
| Behaviour – Backward Compatibility 6 | Enabled (Joomla 5.4 installs it enabled by default) |
The official procedure:
- On staging, disable Behaviour – Backward Compatibility. Click through the whole site and the administrator.
- If something breaks, turn the plugin back on, find the extension that depends on it, and update, replace, or remove that extension, all while you’re still on 5.4. Joomla’s reasoning: it’s much safer for an incompatible extension to fail on 5.4, where you can re-enable the plugin, than halfway through the 6 upgrade.
- Once the site works with that plugin off, confirm PHP 8.3+ and a supported database, then take a fresh backup.
- Set the channel to Joomla Next, run the Pre-Update Check, and upgrade to the current 6.1.x. Once 6.2.0 is out, you can move to it.
If the administrator won’t load after you disable the plugin, re-enable it directly in the database (use your own table prefix):
UPDATE jos_extensions SET enabled = 1
WHERE type = 'plugin' AND folder = 'behaviour' AND element = 'compat';
Behaviour – Backward Compatibility 6 is a bridge, not a permanent fix. Joomla says Joomla 7 won’t provide the same compatibility layer for Joomla 5-era extensions, so treat any extension that still needs it as technical debt.


6. Common blockers and their replacements
| Extension | Status | What to do |
|---|---|---|
| K2 | JoomlaWorks announced K2 won’t be released for Joomla 4/5 (May 2024). There’s an unofficial community fork (K2ForJ4). | Move K2 content to core articles while you’re still on Joomla 3 (see K2 to Joomla articles). Map extra fields to custom fields and add 301 redirects for changed URLs. For large sites, see our K2 migration service. |
| sh404SEF | Joomla 3-only; discontinued August 17, 2023. | While you’re still on Joomla 3, install 4SEF (SEF URLs) and 4SEO (metadata, redirects) and use their sh404SEF import wizards. The imports need sh404SEF data on the site, so they must happen before the 3 → 4 migration. |
| T3 Framework templates | Built for Joomla 3. JoomlArt’s current framework is T4, and there’s no direct conversion. | Rebuild on a Joomla 5/6 template: T4, another maintained framework, or Cassiopeia with a child template. Budget it as a redesign, not a setting change. |
| Helix3 templates | JoomShaper’s current framework is Helix Ultimate. It’s a separate framework, with no one-click upgrade from Helix3 (JoomShaper forum). | Recreate the layout in Helix Ultimate on staging, then remove the Helix3 template and its plugins. |
| ChronoForms v5/v6 | ChronoForms v8 supports Joomla 3 to 6 and requires PHP 8+. | Install v8 alongside the old version on Joomla 3, rebuild or import forms, and test email and custom PHP actions before upgrading the core. |
| JComments | The original is no longer developed. The community fork JComments 4 supports Joomla 4.2+ and 5, and a Joomla 6/PHP 8.3 beta has been released. | Back up the _jcomments tables, uninstall v3 (your comments stay in the database), install the fork, then repair the database and reset permissions (steps in the fork’s README). |
| VirtueMart | VirtueMart 4.6.x supports Joomla 3.10, 4, and 5. VirtueMart’s developer says the unnamespaced 4.x line will never run on Joomla 6, and a namespaced VirtueMart 5 is in development/beta. | Upgrade VirtueMart to the build for each target Joomla version before each core hop. For stores, 5.4 may be the sensible stopping point until a stable Joomla 6 VirtueMart release exists. Test checkout, payment, and shipping plugins every time. See VirtueMart upgrades. |
Verify each vendor’s status yourself on the day you start. This list reflects what we could confirm on September 30, 2026. When a site has two or more of these blockers, the extension work usually takes longer than the core upgrade. Plan for that, whether you handle it in-house or through a Joomla upgrade service.
7. Fixing templates and layout overrides
Joomla 4 replaced Bootstrap 2 and MooTools with Bootstrap 5 and the Web Asset Manager, so a Joomla 3 template, or an override copied across from one, will break layouts, module chrome, or the whole page.
- Isolate the template first. Set the site template to Cassiopeia. If the site renders correctly, the CMS is fine and the problem is your old template.
- Update commercial templates to the vendor’s release for your Joomla version (Helix Ultimate, T4, Gantry, and so on).
- Compare each override in
templates/YOUR_TEMPLATE/html/with the new core layout it replaces. Treat old overrides as rewrites, not file copies. - For the 6.x hop, search overrides for patterns Joomla 6 removed. Items returned as
stdClassbreak$item->get('title')(use$item->title), and$appis no longer available in plugin layouts (use$this->getApplication()). See the official removed and backward-incompatible list. - Put your real template back only after you’ve clicked through the whole site.
If an override stops applying after the upgrade, work through why Joomla template overrides stop working.
8. Common errors and how to fix them
| What you see | Usual cause | Fix |
|---|---|---|
| White screen or 500 error right after upgrading | A PHP fatal error in an extension, template, or .htaccess | Read the host error log and administrator/logs/joomla_update.php, then disable the extension named there. Don’t click Update again. |
Class "JTable", "JFactory", "JPlugin" or "JText" not found | The backward compatibility layer is off. On Joomla 6, that’s Backward Compatibility 6 or its Classes Aliases setting | Enable the plugin (using SQL if you’re locked out), then find and update the extension still using the old class names. |
Class "JRequest" not found | Removed in Joomla 4; no compatibility plugin restores it | The extension code has to be rewritten to use the application input object. |
| “Unknown column” or “table doesn’t exist” | A database schema step didn’t finish | System → Maintenance → Database → Update Structure. |
| The next major version never appears | Update channel is still Default, or PHP is below the minimum | Switch to Joomla Next and meet the PHP minimum for the target version. |
| Unstyled site, modules missing | A Joomla 3 template or overrides | Switch to Cassiopeia to confirm, then update or replace the template. |
| Homepage works but every other URL gives a 404 or 500 | .htaccess or URL rewriting mismatch | Rename .htaccess, turn off URL rewriting, rebuild from htaccess.txt, then re-add your custom redirects (mod_rewrite 500 fix). |
| Login loop | Session table, cookie domain, or $live_site setting | Empty #__session and confirm the site URL in Global Configuration. |
| Download failed, out of memory, or the progress bar stalls | Updater transport or server limits, not compatibility | Raise the memory and time limits, or use Upload & Update. See how to fix Joomla update errors. |
For recovery SQL, schema repair when the Database screen shows nothing, and the full Joomla 6 removals list, use our Joomla upgrade issues runbook.
9. Post-upgrade checks: SEO, redirects, and speed
Once the final hop is on staging and working, check these before and just after go-live:
- Functionality: homepage, login, registration, contact and other forms, search, checkout and payments, multilingual switching, ACL-restricted pages, and scheduled tasks (old
cli/scripts need rewriting as console commands on Joomla 6). - URLs: crawl the old site and the staging site with any SEO crawler, then compare. Every old URL should return 200 or a single 301 to its new equivalent. Pay special attention to K2 and sh404SEF URLs.
- Redirects: a fresh
.htaccessdrops hand-written rules (www, HTTPS, legacy aliases). Use the core Redirect component or your server config for 301s. Our Joomla .htaccess guide covers the common rules. - Indexing signals: check the robots meta tags (staging is often set to noindex, and that setting sometimes goes live with the site), canonical tags, your XML sitemap, and structured data. Joomla 5 and 6 include a core Schema.org system plugin, so check it doesn’t duplicate markup from an SEO extension.
- Search Console: submit the sitemap and watch Coverage and 404 reports for the first few weeks.
- Speed: test key templates with PageSpeed Insights before and after, enable caching, and remove leftover jQuery or legacy assets you no longer need.
- Security: remove unused extensions and old admin accounts, and make sure you’re on the latest 6.1.x or 5.4.x security release.
10. Managing upgrades across many Joomla sites
Agencies and IT teams with dozens of sites run into the same problem as the Stack Exchange question on managing updates for multiple sites: doing every site by hand doesn’t scale.
- Standardize first. Group sites by Joomla version, template framework, and key extensions. Sites with the same stack can share one tested runbook.
- Use a central dashboard for version and extension status and routine updates. Options include self-hosted Akeeba Panopticon and hosted services like Watchful or mySites.guru. Compare their current features, since this guide doesn’t endorse any of them.
- Use the CLI where you can. Joomla 4 and later include a command-line tool (
php cli/joomla.php) for checking and applying core updates, which fits scheduled or scripted maintenance. Keep major-version upgrades as a staging-first process per site. - Pilot, then batch. Upgrade the simplest site in each group first, record every fix, then roll out to the rest.
- Track support dates. Put October 13, 2026 (end of Joomla 5 bug fixes) and October 12, 2027 (end of Joomla 5 security fixes) on the calendar for every Joomla 5 site you manage.
For ongoing patching after the upgrade, see Joomla support and maintenance.
11. DIY or hire help?
You can reasonably do this yourself if:
- The site runs mostly core Joomla and a few well-maintained extensions
- Your host already supports PHP 8.3 and MySQL 8.0.13+ or MariaDB 10.6+
- You’re comfortable restoring a backup and editing a database row
Consider a professional Joomla upgrade if:
- You’re still on Joomla 3 with K2, sh404SEF, a T3/Helix3 template, or custom components
- The Pre-Update Check lists extensions you can’t replace
- Disabling the Joomla 5 Backward Compatibility plugin breaks the site and you can’t find the cause
- Two attempts have already left the database or the administrator broken
- Checkout, memberships, or bookings bring in revenue and downtime costs money
Whoever does the work, insist on the same things: a written extension plan, a tested backup, a staging site you can review, a redirect map, and a rollback plan.
FAQ
Can I upgrade Joomla 3 directly to Joomla 6?
No. The supported path is 3.10 → 4.4 → 5.4 → 6.x. Joomla 6 only installs from 5.4, and each hop needs its own backup and Pre-Update Check.
Should I stop at Joomla 5 or go all the way to Joomla 6?
Go to Joomla 6 when your hosting runs PHP 8.3 and your key extensions have Joomla 6 builds. Stopping at 5.4 makes sense only as a temporary step (for example, while waiting for a stable Joomla 6 VirtueMart). Joomla 5 bug fixes end on October 13, 2026, and security fixes end on October 12, 2027.
Is Joomla 4 still supported?
No. Joomla 4’s security support ended in October 2025. The last release was 4.4.14.
How long does a Joomla 3 to 6 upgrade take?
It depends almost entirely on your extensions, templates, and custom code. A mostly core site can be done fairly quickly, while sites with K2, e-commerce, or custom components take much longer. Do an inventory before you commit to a timeline.
Will upgrading Joomla hurt my SEO?
Not if URLs are preserved or 301-redirected, robots and canonical settings are checked, and the sitemap is resubmitted. Most SEO losses come from changed K2 or sh404SEF URLs, or from a noindex setting carried over from staging.
What’s the difference between a Joomla update and an upgrade?
An update stays within one major version (for example, 6.1.3 → 6.1.4) and uses the Default update channel. An upgrade changes the major version (for example, 5.4 → 6) and needs the Joomla Next channel, a Pre-Update Check, and an extension review.
Do I need the Backward Compatibility plugin?
When going from 4.4 to 5, the Behaviour – Backward Compatibility plugin helps older extensions keep working. Before upgrading from 5.4 to 6, it must be disabled, and Behaviour – Backward Compatibility 6 must be enabled.
Can I still use jUpgrade?
No. It was built for Joomla 1.5-era migrations. The 3 → 4 → 5 → 6 path runs through the core Joomla Update component.
Need a hand? If your site has blockers you’d rather not untangle yourself, our Joomla upgrade service handles the audit, staging, and each hop, with you signing off before anything goes live.









