Blog

  • Joomla 6.1 vs WordPress 7.1: Latest CMS Comparison

    Joomla 6.1 vs WordPress 7.1: Latest CMS Comparison

    As of September 2026, the latest stable Joomla is 6.1.3 and the latest stable WordPress is 7.1 “Mary Lou.” Neither release makes the other obsolete. WordPress 7.1 deepens the block editor, Site Editor, collaboration, and automation APIs. Joomla 6.1.x continues the modern 6.x line with security fixes, a smoother path from Joomla 5.4, and a product story aimed at multilingual and ACL-heavy sites. Pick by architecture and team, not by version number alone.

    The old “Joomla 5 vs WordPress 6” framing is outdated. Joomla shipped 6.0 with 5.4 as an LTS bridge in October 2025, then moved the current stable line to 6.1.x (6.1.3 security and bugfix, 18 August 2026). WordPress shipped 7.1 on 19 August 2026 (announcement). Joomla 6.2 is next on the Joomla roadmap.

    For a broader non-version comparison, see Joomla vs WordPress. This article stays on what the latest cores actually give you.

    What you will learn

    • What is current on each platform right now
    • Where WordPress 7.1 advances the editor and collaboration story
    • Where Joomla 6.1.x advances upgrade path, ACL, and multilingual estates
    • A fair feature table for 2026 projects
    • When to choose each stack (equal criteria)

    Infyways builds both: Joomla development · WordPress services.

    Current versions at a glance

    Platform Latest stable (Sep 2026) Also relevant Official source
    Joomla 6.1.3 5.4.8 LTS bridge; 6.2 in beta toward ~13 Oct 2026 GA downloads.joomla.org
    WordPress 7.1 (“Mary Lou”) 6.9.x still maintained for sites not yet on 7.x wordpress.org/news

    Market context (not a quality score): W3Techs still shows WordPress far ahead on public install share. Fit still decides the project.

    Quick verdict (both get a fair win)

    Project need Lean WordPress 7.1 Lean Joomla 6.1
    Marketing site / blog / content team used to blocks Strong default Capable; steeper editor learning curve
    Site Editor, responsive block styles, Notes collaboration Clear win in core UX Different admin model (articles, modules, templates)
    Native multilingual + ACL without a plugin maze Plugins / custom roles Core strength
    Plugin density (commerce, SEO, forms, CRM) Clear win Smaller catalog; specialists matter more
    Upgrade from prior major with compatibility bridge Continuous minor culture 5.4 → 6.x upgrade path with BC plugin
    Portal / association / multi-section information architecture Doable with custom post types Often cleaner in core concepts
    Hiring freelancers globally Easier Harder; depth when you find specialists

    What is new in WordPress 7.1

    WordPress 7.1 focuses on how editors and builders work day to day (release post):

    • Admin bar across the full admin experience, so tools stay reachable while writing or designing
    • Responsive styling in the Site Editor (Global Styles and block settings) without custom CSS for many layouts
    • Media editor upgrades: freeform and aspect-ratio crop, flip, rotation, metadata in one flow
    • Notes anywhere in content (not only block-level), with rich text and @mentions for collaboration
    • New blocks such as Playlist and Tabs, plus Icon block API improvements
    • Continued work on Abilities API foundations for integrations and automation (including AI-related tooling patterns introduced across recent majors)

    What that means in practice: WordPress keeps compounding the block/Site Editor product. If your team lives in Gutenberg and wants design control in core, 7.1 is the current tip of that spear.

    What still sits outside core: fine-grained multilingual and complex ACL usually remain plugin territory. Security and performance still depend on hosting and plugin hygiene.

    What is current in Joomla 6.1.x

    Joomla’s latest stable line is 6.1.3, a security and bugfix release on the modern 6.x codebase (announcement). Pair that with what 6.0 already established:

    • Modern PHP-era core after the 6.0 architectural jump
    • Automatic core updates (introduced with 5.4 / 6.0) for safer patch cadence
    • Behaviour – Backward Compatibility 6 plugin to ease many 5.x → 6.x upgrades
    • Native multilingual and ACL as first-class models
    • Custom fields, tags, nested categories for structured content without K2
    • Active release train toward Joomla 6.2 (editor UX, language fallback chain, clearer security update flags in beta notes)

    What that means in practice: Joomla 6.1 is the version you should be on (or targeting) for new Joomla work in late 2026, unless a vendor still requires 5.4 LTS. The “comeback” is release discipline and upgrade confidence, not market-share dominance. See Joomla vs WordPress.

    What still needs care: extension readiness, smaller freelancer pool, and K2-era sites that must migrate content before leaving Joomla 3 (K2 not working fix).

    Side-by-side: latest cores

    Topic WordPress 7.1 Joomla 6.1.3
    Editing model Blocks + Site Editor first Articles, modules, plugins, templates
    Design in core Responsive styles, media editor, new blocks Template styles, child templates, overrides
    Collaboration Notes, @mentions in content Workflow depends on roles/ACL and extensions
    Multilingual Plugins Native
    Permissions Roles + plugins for fine grain Native ACL
    Extensions Massive plugin/theme market Selective extension market
    eCommerce WooCommerce ecosystem VirtueMart and others
    Updates Dashboard updates; frequent minors Installer / auto updates; 6.x + 5.4.x patches
    Headless / APIs REST, GraphQL ecosystem, Abilities API direction Web Services API on modern Joomla
    Best “latest” reason to pick it Editor and design velocity Structured, multilingual, ACL estates on a modern core

    Developer and agency notes

    WordPress 7.1

    • Plan theme and plugin testing for Site Editor and media workflow changes
    • Treat Abilities API / automation hooks as forward-looking for integrations
    • Keep a staging site; block themes and classic themes both still exist in the wild

    Joomla 6.1

    • Prefer 6.1.3 over lingering on unpatched 6.0.x or early 6.1 builds
    • If you are on 5.4.8, schedule a staged move to 6.1 while bugfix support for 5.4 winds down around the 6.2 GA window
    • Audit templates and extensions before production upgrade (Joomla upgrade)

    When to choose WordPress 7.1

    1. Your editors already think in blocks and pages
    2. You need the plugin density WordPress is famous for
    3. Commerce leans WooCommerce
    4. Hiring and hosting options must be easy worldwide
    5. Collaboration Notes and Site Editor responsive controls match how you build

    When to choose Joomla 6.1

    1. Multilingual is a core requirement
    2. ACL and multi-group publishing are non-negotiable
    3. The site is portal-like or multi-section by design
    4. You are modernizing an existing Joomla estate (5.4 → 6.1) instead of rewriting
    5. You want native structure without assembling five plugins for basics

    Key takeaways

    1. Latest today: Joomla 6.1.3 vs WordPress 7.1. The slug still says 5 vs 6; the products have moved on.
    2. WordPress 7.1 wins on editor, design controls, and ecosystem gravity.
    3. Joomla 6.1 wins on native multilingual, ACL, and a clearer modern Joomla upgrade story.
    4. Neither “beats” the other universally. Match the CMS to the content model.
    5. Infyways supports both stacks end to end.

    Frequently asked questions

    What is the latest Joomla version?

    Joomla 6.1.3 is the current stable download as of late August 2026. Confirm on downloads.joomla.org. Joomla 5.4.8 remains the parallel 5.x security/bugfix line.

    What is the latest WordPress version?

    WordPress 7.1 (“Mary Lou”), released 19 August 2026. See the official announcement.

    Is Joomla 5 still relevant vs WordPress 7?

    Joomla 5.4 is still a supported bridge for many sites, but new Joomla work should target 6.1.x. Comparing “Joomla 5 vs WordPress 6” alone is no longer current.

    Is Joomla 6 better than WordPress 7?

    Not universally. Joomla 6.1 is better for native multilingual and ACL. WordPress 7.1 is better for block editing velocity and plugin choice. Use requirements, not brand loyalty.

    Should I upgrade WordPress 6.x sites to 7.1?

    Yes on staging first, then production, after theme/plugin checks. Follow WordPress release notes for 7.1-specific editor and media changes.

    Should I upgrade Joomla 5.4 to 6.1?

    Usually yes when extensions are ready. Test with the compatibility plugin, then harden toward native 6.x. See Joomla upgrade services.

    Where can Infyways help?

    Joomla development, WordPress services, CMS development, and the equal-weight overview Joomla vs WordPress.

  • Joomla CSS Changes Not Showing

    Joomla CSS Changes Not Showing

    Joomla CSS changes are not showing when the browser never loads the file you edited, or it still loads an old copy. On Joomla 4.1, 5, and 6 the live sheet is media/templates/site/{template}/css/user.css on the active template. A child does not load the parent’s user.css. The Joomla 4.0 path templates/cassiopeia/css/user.css is ignored. Cache, Page Cache, and a CDN can keep the previous sheet after the path is already right.

    This is the operator checklist. It is not a design tutorial. Put the file on the template style the public page actually uses, prove the Network tab requests it, then purge every layer in front of PHP. Safe placement (child, not core) is covered in Customize Joomla without editing core. Click-by-click child setup is How to set up a Joomla child template.

    Wrong templates/css path versus media/templates/site child user.css

    The old Joomla 4.0 folder is a dead end. The child media folder is the live sheet. The child does not inherit the parent’s user.css.

    What you will learn

    • Where Cassiopeia actually loads user.css on Joomla 4.1, 5, and 6
    • Why a child looks stock after you already styled the parent
    • How to create the file in Template Manager (filename user, no suffix)
    • How to prove the sheet is requested (or 404) in the browser Network tab
    • Which cache layers still serve yesterday’s CSS after a good save
    • When the file loads and the page still looks unchanged (selector weight)

    Official references: Cassiopeia Template Customisation, Child Templates (User Manual), Cache.

    What you see Likely cause Wrong rabbit hole
    No change anywhere File is on the parent, the old 4.0 path, or a template style that is not assigned Editing template.min.css
    Change on Home, not on a landing page That menu item uses a different template style “Joomla CSS is broken”
    Child site looks stock You styled Cassiopeia. The child does not load parent user.css Recreating the child
    Network 404 on user.css File is missing in that template’s media/…/css/ folder, or you named it user.css.css Clearing cache only
    Network 200, still old colours Joomla cache, Page Cache, browser disk cache, or CDN Rewriting selectors
    File 200, still no visual change Selector does not match, or a later sheet / inline style wins Reinstalling Cassiopeia

    Step 1: Confirm which template style the page uses

    CSS lives on a template, not on “the site.”

    1. Open the public URL that should show the change. Note the exact page, not a random inner article.
    2. System → Site Template Styles. Note the default (star).
    3. Open the menu item for that URL. Template Style may override the default.

    If Home uses cassiopeia_brand and the page you tested uses stock Cassiopeia, you can edit the child all day and the landing page will stay stock. Assigning styles is not the same as creating a child. Creating a child does not switch the frontend until a style is assigned.

    Club templates (Helix, T4, Gantry, YOOtheme) often have their own “custom CSS” fields. Those are not Cassiopeia user.css. If the site is not Cassiopeia, use that template’s documented custom-CSS slot, still on a child if the vendor supports one. Do not paste into compiled Bootstrap in media/.

    Step 2: Put user.css on the media path of that template

    On Joomla 4.1 and later (5 and 6 included), Cassiopeia loads:

    media/templates/site/{template}/css/user.css

    Examples:

    • Parent Cassiopeia: media/templates/site/cassiopeia/css/user.css
    • Child named cassiopeia_brand: media/templates/site/cassiopeia_brand/css/user.css

    The Template Manager css folder is that media folder. It is not templates/cassiopeia/css/ on current Joomla.

    The Joomla 4.0-only path templates/cassiopeia/css/user.css was moved into media/ when child templates landed. A file that still sits there will not run. Copy the rules into the media path, then delete or ignore the old copy so you do not edit the ghost next month.

    In Template Manager:

    1. System → Templates → Site Templates.
    2. Open the active template (the child if you use one).
    3. New File. Select the css folder.
    4. Filename: user with no suffix in the name field. File type: .css.
    5. Create, paste rules, Save.

    If you type user.css in the name field and also pick .css, you often get user.css.css. The template looks for user.css. The extra suffix 404s. Name the file user only.

    Cassiopeia registers user.css with a high asset weight so it loads after the template sheet. Keep !important rare. If a rule still loses, the file is loading and the selector is the problem (Step 7), not the path.

    Do not edit template.min.css, vendor/bootstrap, or files under media/templates/site/cassiopeia/ on the parent if you already assigned a child. Parent updates replace those files. The child media folder is the overlay. Setup: Joomla child template.

    Step 3: Copy parent rules into the child (they do not inherit)

    A child does not load the parent’s user.css.

    That is the usual “I created a child and the site went stock” report. You already had rules in Cassiopeia. You created cassiopeia_brand, assigned it, and left the CSS on the parent. The child starts with an empty css folder. Cassiopeia’s file is still on disk. The public style does not read it.

    Fix:

    1. Open the parent user.css (if it exists).
    2. Copy the rules into media/templates/site/{child}/css/user.css.
    3. Save. Leave the parent stock going forward so the next Cassiopeia update cannot wipe the live sheet.

    Two user.css files on purpose (parent plus child) is not a cascade. Only the assigned template’s file loads. If some menu items still use the parent style, those pages will keep the parent sheet. That can look like “CSS works on Home only.” It is two styles, two files.

    Joomla 6 Cassiopeia Extended is already a child. Put user.css on Extended (or on your child of Cassiopeia), not on the parent. Colour and font params on the style write CSS variables such as --headerbg. You can reuse those variables inside user.css. You still need the child’s file for rules the params cannot do.

    Step 4: Prove the browser requests user.css

    Guessing from “I saved” wastes time. Use the Network tab.

    1. Open the public page. Hard refresh once so you are not looking at a frozen inspector session.
    2. DevTools → Network → filter CSS.
    3. Reload.

    You want a request whose URL contains user.css under /media/templates/site/{the-active-template}/css/.

    Read the status:

    • 404: the file is not in that folder, or the name is wrong (user.css.css, custom.css, user.min.css). Create it again with filename user.
    • 200, tiny file, your rules missing: you are viewing a different template’s sheet, or you edited FTP on the parent while the site uses the child.
    • 200, body has your rules, page still old: cache or CDN (Step 5), or selector weight (Step 7).
    • No user.css request at all: the active template is not Cassiopeia (club template custom-CSS field), or the template’s asset map never registered template.user. Club docs win. Do not invent a Cassiopeia path on Helix.

    View Source and search user.css. If the <link> href points at /media/templates/site/cassiopeia/css/user.css while you edited cassiopeia_brand, the assigned style is still the parent.

    Step 5: Purge Joomla cache, Page Cache, browser, and CDN

    A correct user.css can still look unchanged because something in front of the file is serving bytes from earlier.

    Order:

    1. System → Maintenance → Clear Cache → Delete All. If Cache Handler is Redis or Memcached, emptying cache/ in FTP does nothing. Handler and permissions: Joomla cache not clearing.
    2. If System – Page Cache is enabled, guests get a full HTML snapshot that still points at a hashed or cached CSS URL. Clear cache again, then test logged out. Guest vs login layers: Joomla cache showing old content.
    3. Hard refresh the browser (or a private window). “Use Browser Caching” on the Page Cache plugin will not be fixed by Joomla Clear Cache.
    4. Purge the CDN (Cloudflare, host “Optimize,” a LiteSpeed cache plugin). Origin can already show the new sheet while the orange-cloud hostname does not.

    Conservative Joomla cache does not usually compile user.css into one blob, but page-level HTML can keep an old <link> with a stale query string. Progressive cache can keep an old module wrapper class you were targeting. Clear, then retest as a guest.

    If you use a CSS extension or a page builder “compile” button, that is a fifth store. Joomla Clear Cache does not empty a builder’s CSS cache. Purge that UI too.

    Step 6: Confirm you did not hide the change with CSS

    If Network shows 200 and the response body contains your property, Joomla loaded the file. The cascade lost.

    Check:

    • The class or id you targeted exists on this template. Cassiopeia class names are not Protostar. .container-header is not .header. Inspect the live node.
    • A later rule wins: template params (Joomla 6 colour settings), a custom module with inline style, or a page-builder CSS file loaded after user.css.
    • You set display: none on a parent while testing and forgot. The “change” is that the block is gone, not that colour failed.
    • You edited a print or RTL sheet. Cassiopeia has direction-specific presets. Test the same language and direction as the public page.

    Specificity beats “I used user.css.” Raise the selector to match the live markup. Do not edit core Bootstrap to “make it stick.”

    Need a layout change rather than a colour? That is an html/ override, not more CSS. Decision tree: customize without editing core. Visual work you do not want to own: Joomla design services.

    Five checks: media path, child vs parent, Joomla cache, CDN, selector weight

    Path first. Then child vs parent. Then cache. Then CDN and the browser. Then selector weight. Do not skip to !important.

    Key takeaways

    1. On Joomla 4.1, 5, and 6, Cassiopeia user.css is media/templates/site/{template}/css/user.css on the active template.
    2. A child does not load the parent’s user.css. Copy the rules into the child’s media folder when you switch styles.
    3. The Joomla 4.0 path templates/cassiopeia/css/user.css is a dead file. The Template Manager css folder is media.
    4. New File: name user with no suffix, type .css. user.css.css 404s.
    5. Prove the Network tab requests the sheet under the assigned template name. 404 is a path problem. 200 with old colours is cache or CDN.
    6. Clear Joomla cache, watch Page Cache for guests, hard-refresh the browser, purge the CDN.
    7. If the file body already has your CSS, fix the selector. Do not reinstall the template.
    8. Keep the file on a child template so the next Cassiopeia update cannot wipe the live sheet.

    Frequently asked questions

    Why are my Joomla CSS changes not showing?

    The public page is not loading the user.css you edited. The file is on the parent, on the old templates/…/css/ path, or on a template style that is not assigned. Or cache and CDN still serve the previous sheet. Confirm the Network URL, then purge.

    Where is Cassiopeia user.css on Joomla 5 and 6?

    media/templates/site/{template}/css/user.css. For a child, replace {template} with the child element name such as cassiopeia_brand. Official overview: Cassiopeia Template Customisation.

    Does a Joomla child template inherit the parent user.css?

    No. Cassiopeia loads user.css only from the template that is assigned. Copy parent rules into the child file when you create the child. User manual: Child Templates.

    Why did the Template Manager create user.css.css?

    The name field already had user.css and the type was .css. Joomla concatenated them. Create the file again as user plus type .css.

    I cleared cache and the old CSS is still there. What next?

    Clear Cache only empties Joomla’s handler. Guests may still hit System – Page Cache, the browser disk cache, or Cloudflare. Test a private window against origin, then purge the CDN. See cache not clearing if Delete All does nothing.

    Can I edit template.min.css instead of user.css?

    No. Updates replace compiled template CSS. user.css on the active (child) template is the supported overlay. Same rule as other custom files: customize without editing core.

    My CSS file loads but a module still looks stock. Is that CSS?

    Maybe. Confirm the module actually rendered. Unpublished, Access, and dates are a different diagnosis: Joomla module not showing. If the HTML is present and unstyled, you are still on this article.

    Conclusion

    When Joomla CSS changes are not showing, believe the Network tab before you believe the Template Manager save message. The live sheet is user.css under media/templates/site/ for the assigned template. Children do not borrow the parent file. The old templates/cassiopeia/css/ location is Joomla 4.0 history. After the path is right, purge Joomla cache, Page Cache, the browser, and the CDN. If the response already contains your rules, inspect the node and fix the selector. If the change you wanted was behaviour, not colour, that is user.js: Add custom JavaScript to Joomla and Joomla JavaScript not working.

    If the site is a mix of club CSS fields, a CDN, and a half-assigned child, Joomla support and maintenance is faster than guessing folders on production.

  • Joomla 6.2: What’s New, Release Date & How to Upgrade

    Joomla 6.2: What’s New, Release Date & How to Upgrade

    Joomla 6.2.0 “Mwezi” is the latest Joomla release, published on 13 October 2026. It is a minor release on the Joomla 6 line, so a 6.1 site updates in place, and a Joomla 5.4 site can upgrade straight to 6.2. 6.2 brings TinyMCE upgrades, more control over article images, new Login module options, security flags for extension updates, and XOAuth2 for email. Joomla 5.4.10, released the same day, is the last bugfix release for Joomla 5. This guide covers what 6.2 adds, what 6.x changed from 5.x, and how to upgrade safely.

    Joomla 6.0 shipped in October 2025 and 6.1 followed. 6.2.0 is now the version to run (download 6.2.0, Joomla 6.2 announcement). The project says 6.2 is the result of more than 130 pull requests from volunteers. The next patch, 6.2.1, is planned for 24 November 2026.

    Did the 6.2 update fail or break something? The checksum or JSON error, “not compatible” warnings, the language switcher and override notices are covered in Joomla 6.2 update problems.

    If you need a managed path from 3.x, 4.x, or 5.x onto 6.2, use Infyways Joomla Upgrade services.

    What you will learn

    • Where Joomla 6.x stands after the 6.2.0 release on 13 October 2026
    • What Joomla 6.2 shipped, checked against the official release notes
    • The 6.2 release timeline and the planned 6.2.x patch dates
    • How 6.x differs from 5.x and 4.x
    • A practical upgrade checklist for site owners and developers
    • When to call in Joomla upgrade or support help

    Official schedule source: Joomla Project Roadmap.

    What’s new in Joomla 6.2?

    Joomla 6.2 is a feature release focused on content editing, site-builder options and safer updates. It does not change the architecture. The main changes, from the Joomla 6.2 announcement and the 6.2.0 changelog:

    What is new in Joomla 6.2: TinyMCE, articles, modules, administrator, update security flags and XOAuth2 email
    Area What changed in 6.2 Why it matters
    TinyMCE editor Image and media buttons open the Joomla Media Manager. A unified link selector modal serves the article, contact and menu buttons. Native Read More button. TinyMCE follows Joomla’s text filter by default. TinyMCE updated and untranslated toolbar-builder buttons fixed Fewer clicks for editors. HTML follows your Global Configuration filters instead of TinyMCE’s own allowed elements, so test custom markup
    Articles and categories Separate CSS class fields for an intro or full-text image and its surrounding figure. Subcategory images in category lists and blogs (content, contacts, newsfeeds). Fix for categories that looked empty when their articles were scheduled for the future More styling control without overrides
    Modules Login module options to hide the “Forgot your password?” and “Forgot your username?” links. Submenu toggling fixed for deeper levels in the standard menu layout Removes two common reasons for template overrides
    Administrator Fancy Select search results show their group name (useful for module positions). Redesigned backend Help page Faster admin work
    Installation and updates More precise web installer errors. Developers can flag an extension release as a security update (severity None to Critical). Flagged updates are highlighted in System → Update → Extensions and on the dashboard quick icon You can see which extension updates are security fixes
    Email Generic XOAuth2 for SMTP authentication: Joomla stores a refresh token from the mail provider instead of the account password Relevant for Microsoft 365 and Google Workspace mail
    Developers Reorganised JavaScript and CSS asset build pipeline. Also in the changelog: an Enum form field, a language fallback chain, the option to prefer the highest-severity update, and clearer SVG upload errors Extension developers should rebuild and retest assets

    Article preview without a frontend login is not in 6.2.0. It was added during the betas and then reverted (pull request #48325). Do not plan around it.

    Joomla 6.2 release timeline

    Joomla 6.2 release timeline: betas, RC, 6.2.0 on 13 October 2026, and planned 6.2.1 and 6.2.2
    Milestone Date Status
    Alpha 1 to 3 26 May to 21 July 2026 Done
    Beta 1 (feature freeze) 18 August 2026 Done
    Beta 2 and Beta 3 1 and 15 September 2026 Done
    Release Candidate 29 September 2026 Done
    6.2.0 stable 13 October 2026 Released, latest
    6.2.1 24 November 2026 Planned
    6.2.2 to 6.2.4 5 January, 16 February, 30 March 2027 Planned

    Planned dates can change with volunteer availability (Joomla roadmap). Release managers for 6.2: Viviana Menzel and Martin Kopp.

    Production rule: run Joomla 6.2.0 on live sites once your extensions are verified on staging. If an extension you depend on is not ready, stay on 6.1.4, the newest 6.1 release, while you wait, and keep it patched. Test on a staging copy first. launch.joomla.org is fine for quick experiments.

    Joomla 5.4 after 13 October 2026: 5.4.10 was the last bugfix release for Joomla 5. Security fixes for 5.4 continue until 12 October 2027. The project calls 5.4 to 6.2 an upgrade, not a migration: most extensions work with the Behaviour – Backward Compatibility 6 plugin enabled.

    Upgrade notes for 6.2

    Read the official Joomla 6.1 to 6.2 upgrade notes and the 6.2.0 changelog before you upgrade. Developers should note the deprecations retargeted to Joomla 7, the deprecated CMS Crypt package, and the rebuilt asset pipeline.

    What Joomla 6.x already changed vs 5.x and 4.x

    Joomla 6.0 was the architectural jump. 6.1 and 6.2 are incremental on that base.

    Area Joomla 4.x Joomla 5.x Joomla 6.x
    Focus Bootstrap 5 admin, accessibility Modern PHP, compatibility plugin era Framework cleanup, new packages, stricter future path
    PHP 7.2+ era evolving to 8.x PHP 8+ focus PHP 8.3.0 minimum, 8.4 recommended
    Extensions Many older extensions still ran Compat plugin smoothed upgrades Test every extension; compat is a bridge, not a forever plan
    APIs Mixed legacy Deprecations increasing Renderer, Console, Preload, DB/HTTP modernization
    Support clock Ended 5.4 bugfix ended 13 Oct 2026 (5.4.10) 6.2.0 current; bugfix to 17 Oct 2028

    Core 6.0 themes that still matter for upgrades: stronger database patterns, HTTP / cryptography modernization, console tooling, preload helpers, and the compatibility plugin for migration. Details live in Joomla 6 migration docs and the roadmap.

    Joomla 4, 5 and 6 support timeline (end of life dates)

    Joomla 4 is end of life. Its regular bugfix support ended on 15 October 2024 and security fixes ended in October 2025, so a Joomla 4 site no longer receives patches. Move it to 5.4 and then to Joomla 6.

    Version Released Bugfix support ends Security support ends
    Joomla 3.10 August 2021 Ended 17 August 2023 (end of life)
    Joomla 4.4 October 2023 15 October 2024 October 2025 (end of life)
    Joomla 5.4 14 October 2025 13 October 2026 12 October 2027
    Joomla 6.x 14 October 2025 17 October 2028 16 October 2029

    What Joomla 4 introduced (still in 6)

    Many features people still call “new” arrived in Joomla 4: the Atum administrator and Cassiopeia front-end templates, the Web Asset Manager, the rebuilt Media Manager, Workflows, Web Services API, two-factor authentication and a cleaner routing system. Joomla 5 and 6 kept these and removed the legacy layers around them. Dates from the Joomla roadmap; upgrade steps in How to upgrade Joomla 3 to Joomla 6.

    How do I upgrade to Joomla 6.2?

    Upgrade path to Joomla 6.2 from 6.1, 5.4, 5.0 to 5.3, 4.x and 3.x, with PHP 8.3 minimum

    From 6.1, it is a normal minor update in System → Update → Joomla. From 5.4, disable Behaviour – Backward Compatibility, enable Behaviour – Backward Compatibility 6, and upgrade. Older versions go through 5.4 first. The steps below apply to every path.

    Why you should upgrade now

    1. Support calendar. Joomla 5 bug fixes ended with 5.4.10 on 13 October 2026. Security patches continue until 12 October 2027, but bug debt stacks up if you stay behind.
    2. Extension vendors. Good vendors already ship builds that declare Joomla 6.2. Check each vendor’s changelog before you update.
    3. 6.2 editor and language changes. TinyMCE filter defaults and language fallback can change what editors see. Staging catches that before clients do.
    4. Email security. If your SMTP runs on Microsoft 365 or Google Workspace, XOAuth2 lets you stop storing the mailbox password in Joomla.

    Need hands-on help: Joomla Upgrade, ongoing Joomla support and maintenance, or hire Joomla developers. For K2 sites stuck on old stacks, pair the CMS upgrade with K2 migration services.

    Step 1: Inventory and hosting check

    1. Export installed extensions, templates, custom overrides, and PHP version.
    2. Confirm hosting meets Joomla 6 PHP requirements (modern 8.x). Upgrade hosting before the CMS if needed.
    3. Mark every extension as: J6-ready, needs compat plugin, or replace. A Joomla 6 compatibility check with the free Migration Scanner lists the exact files and lines for each one.
    4. Filter the Joomla Extensions Directory by Joomla 6 where vendors list readiness.

    Step 2: Stage, never upgrade live first

    1. Full backup (files + database).
    2. Clone to staging with the same PHP version you will use in production.
    3. From 5.x, update to the newest 5.4.x first, then upgrade the staging copy to 6.2.0.
    4. From 6.1.x, update the staging copy to 6.2.0 and test editors, menus and multilingual switching.

    Download packages from downloads.joomla.org. Report core issues at issues.joomla.org.

    Step 3: Compatibility plugin, then remove the crutches

    1. Enable the Joomla compatibility / BC plugin only while you patch or replace broken extensions.
    2. Retest logins, checkout, forms, multilingual switching, and search.
    3. Fix or replace templates that assume removed APIs.
    4. Plan to turn the compat plugin off once everything is native-ready. It is a bridge.

    Upgrade notes: Joomla 6.1 to 6.2 upgrade notes. If the update itself fails, see Joomla 6.2 update problems.

    Step 4: QA before production cutover

    1. Frontend: home, menus, articles, category blogs, media, forms.
    2. Admin: article edit (TinyMCE readmore/links), installer update view, language strings.
    3. SEO: SEF URLs, redirects, sitemaps, canonical tags.
    4. Performance: cache, CDN, image formats (WebP converter for Joomla).
    5. Security: install the current 5.4.x or 6.x security releases on whatever you run today. Do not wait for the upgrade to patch.

    When staging is green, schedule production during low traffic, restore plan in hand. Infyways can run that cutover under Joomla Upgrade or white-label via outsource Joomla services.

    Developer action plan for 6.2

    1. Test extensions on 6.2.0 now, and on 6.2.1-dev nightly builds before 6.2.1.
    2. Rebuild and retest any assets that depend on the core JavaScript and CSS pipeline.
    3. Adopt EnumField where enums already model your options.
    4. Re-test TinyMCE integrations after the text-filter default change.
    5. Watch language packs for fallback-chain behavior on incomplete translations.
    6. Flag security releases in your update server so 6.2 highlights them for users.
    7. Read the 6.1 to 6.2 upgrade notes for deprecations now targeted at Joomla 7.

    Agencies maintaining many client sites: outsource Joomla services and Joomla extension development.

    Key takeaways

    1. Latest: Joomla 6.2.0, released 13 October 2026. Next patch 6.2.1 is planned for 24 November 2026.
    2. 6.2 is a minor release: 6.1 updates in place, and 5.4 upgrades directly.
    3. Headline 6.2 changes: TinyMCE Media Manager and link picker, Read More button, article image classes, Login module options, security flags for extension updates, XOAuth2 email.
    4. Joomla 5 bug fixes have ended (5.4.10). Plan the move to 6.2 now.
    5. Upgrade on staging first. Use Infyways Joomla Upgrade if you want a managed migration.

    Frequently asked questions

    When was Joomla 6.2 released?

    Joomla 6.2.0 was released on 13 October 2026 and is the latest version. 6.2.1 is planned for 24 November 2026 on the roadmap.

    Is Joomla 6.2 safe for live sites?

    Yes. 6.2.0 is a stable release. Test your extensions and template on a staging copy first, then update the live site.

    What is the current stable Joomla version?

    Joomla 6.2.0, released 13 October 2026, on downloads.joomla.org. For Joomla 5, the last release is 5.4.10.

    How is Joomla 6.2 different from Joomla 6.0?

    6.0 was the major platform jump. 6.2 is a minor release that adds TinyMCE improvements, article image and figure classes, Login module options, security flags for extension updates and XOAuth2 email, on the same architecture.

    Can I upgrade from Joomla 5.4 directly to 6.2?

    Yes. The project calls it an upgrade, not a migration. Disable Behaviour – Backward Compatibility, keep Behaviour – Backward Compatibility 6 enabled, and test on staging.

    What should I do if the Joomla 6.2 update fails?

    Check for updates again, or upload the 6.2.0 package with Upload & Update. Fixes for the common errors are in Joomla 6.2 update problems.

    Will my Joomla 5 extensions work on Joomla 6?

    Some will, some need the compatibility plugin, some need vendor updates. Inventory and test on staging. Replace abandonware before you cut over.

    Does Joomla 5.4 still get updates?

    Only security fixes. 5.4.10 (13 October 2026) was the last bugfix release, and security support runs until 12 October 2027.

    How do I upgrade to Joomla 6 safely?

    Backup, clone to staging, update hosting/PHP, update or replace extensions, test, then schedule production. Infyways documents and runs this under Joomla Upgrade services.

    Where do I get help if the upgrade breaks?

    Start with staging logs and vendor docs. For a full recovery or multi-site rollout, use Joomla support and maintenance or hire Joomla developers.

  • WebP & AVIF in Joomla 5 & 6: What’s Native and How to Convert

    WebP & AVIF in Joomla 5 & 6: What’s Native and How to Convert

    Joomla 5 and 6 can upload and display WebP and AVIF images (AVIF since Joomla 5.0), and they lazy-load images that have a known width and height. Joomla core does not convert JPG or PNG to WebP or AVIF, and it does not create responsive image sizes. To serve next-gen formats you need one of four things: a Joomla extension, a server rewrite rule, a CDN, or manual conversion. Which one fits depends on how big the site is and what your hosting allows.

    Quick answer

    • Native support: Joomla 5 and 6 accept WebP and AVIF in the Media Manager and render them like any other image. Nothing converts automatically.
    • To convert: an extension is easiest for sites where editors keep uploading. A server rule or CDN suits developers. Manual conversion works for a handful of images.
    • AVIF needs server support: PHP 8.1+ with GD built with AVIF, or Imagick with AVIF. If you don’t have it, start with WebP.
    • Measure it: run PageSpeed Insights before and after, check the LCP element, then watch Search Console’s Core Web Vitals report.

    What Joomla core does with WebP and AVIF by version: 4.0 lazy loading, 5.0 AVIF uploads, 5.1.1 Image class, 6.2 no format features

    Does Joomla support WebP and AVIF natively?

    Yes for displaying them, no for creating them. This is what Joomla core does with images, by version, based on the merged code changes and release notes:

    Version What core does Source
    Joomla 4.0+ Images rendered through the core image layout (for example article intro and full-text images) get loading="lazy", but only when Joomla knows the width and height. Images without dimensions are not lazy-loaded. Editors can also choose lazy loading and alt text when inserting images. PR #30218, PR #30784, Joomla Magazine
    Joomla 4+ The core Media Action – Resize plugin can shrink uploads that are larger than a set width and height. It resizes only; it does not change the format. (Joomla 5.3 fixed it so a blank dimension is ignored.) PR #45311
    Joomla 5.0 AVIF can be uploaded and rendered in the Media Manager. This default applies to new installs only, so older sites may have to allow AVIF themselves (steps below). PR #41381
    Joomla 5.1.1 “Proper support for avif/webp images”: AVIF added to the core Image class. WebP and AVIF files can’t be edited in the media editor (crop, rotate), because browsers handle them inconsistently there. PR #43295
    Joomla 6.x Same behaviour as 5.x. The Media Manager defaults in the current code still list webp and avif as allowed image types. com_media config
    Joomla 6.2 (13 Oct 2026, latest) No image-format features. Its image changes are a TinyMCE picker that opens the Joomla Media Manager, separate CSS classes for the image and its figure on intro/full-text images, and subcategory images. 6.2 release news
    Not in core Converting JPG/PNG to WebP or AVIF, generating srcset sizes, <picture> fallbacks, and fetchpriority for the LCP image. Use an extension, a template override, a server rule or a CDN

    For everything else in the latest release, see our Joomla 6.2 guide.

    How to allow AVIF on a site installed before Joomla 5.0

    If an AVIF upload is rejected, your site probably kept its old Media settings when you upgraded. In Joomla 5 and 6:

    1. Go to System → Global Configuration → Media (or Content → Media → Options).
    2. Add avif to Allowed Extensions and to Legal Image Extensions (File Types). Check that webp is there too.
    3. Add image/avif (and image/webp if missing) to Legal MIME Types.
    4. Save, then upload a test AVIF file in Content → Media.

    These are the field labels in the Joomla 6.2 code. On a fresh 6.2 install, all three fields already include WebP and AVIF.

    Why does it matter for PageSpeed and Core Web Vitals?

    PageSpeed Insights and Lighthouse flag JPG and PNG files that could be smaller (“Serve images in next-gen formats”, or “Improve image delivery” in newer Lighthouse versions). On many Joomla templates the hero or intro image is the Largest Contentful Paint (LCP) element, so its file size affects how fast the page looks loaded. Google’s guidance is that a good LCP is 2.5 seconds or less for at least 75% of page visits.

    Google reports that lossy WebP images are 25–34% smaller than comparable JPEGs at equal SSIM quality, and lossless WebP is 26% smaller than PNG. Your results depend on the image and the quality setting, so compare sizes on your own files. Google also says good Core Web Vitals line up with what its ranking systems seek to reward, but content relevance comes first. Converting images will not by itself move a page up.

    What do you need on the server before converting?

    Goal What you need How to check
    WebP PHP GD with WebP support, or Imagick with WebP phpinfo → GD section shows “WebP Support: enabled”
    AVIF PHP 8.1+ with GD built with AVIF, or Imagick with AVIF phpinfo → GD shows “AVIF Support: enabled”
    Disk Room for a second (and third) copy of each image Your hosting panel’s disk usage
    Memory and time Enough memory_limit and max_execution_time for bulk jobs, which matters most for AVIF System → System Information → PHP Information

    A quick check from the command line, if you have SSH:

    php -r 'print_r(array_intersect_key(gd_info(), array_flip(["GD Version","WebP Support","AVIF Support"])));'

    On our PHP 8.4 test server this printed [WebP Support] => 1 and [AVIF Support] => 1. If AVIF shows as empty, use WebP for now. To raise the limits, see our Joomla PHP.ini settings guide.

    Which conversion method should you use?

    Four ways to serve WebP and AVIF on Joomla: extension, .htaccess or nginx rule, CDN, manual conversion

    Method Best for Converts existing images? Handles new uploads? Watch out for
    1. Joomla extension Sites where editors keep uploading Depends on the extension (bulk or on page view) Yes Server load on the first conversions; check that originals are kept
    2. Server rule (.htaccess / nginx) Developers who control the server Only if you generate the files Only with a script or cron job Caches and CDNs must respect Vary: Accept
    3. CDN / image service Sites already behind a CDN Yes, at the edge Yes Plan requirements; less control per folder
    4. Manual conversion Small sites or a one-off redesign Yes, by hand No You must update every reference

    Method 1: How do you convert images with a Joomla extension?

    Image extensions on the Joomla Extensions Directory work in one of three ways:

    • On page view, plus bulk: rewrites image URLs in the page output, creates WebP/AVIF copies when needed, and can convert whole folders in advance.
    • On upload only: converts files as they’re uploaded through the Media Manager. Images already on the site are left alone.
    • Scheduled bulk optimisers: run as Joomla scheduled tasks, and some send images to an external API.

    Some examples, as described on their JED listings (checked 19 October 2026):

    Extension How it works Formats Joomla Type
    WebP Converter (Infyways / JoomlaX, ours) On page view plus bulk “Generate Images”; keeps originals; optional <picture> fallback WebP, AVIF 4, 5, 6 Paid
    DC jWEBP Converts on first page view, rewrites the HTML, adds native lazy loading WebP 5, 6 Free
    HC Image Optimizer On Media Manager upload, with resizing and multiple size profiles; PHP 8.3+ WebP 5, 6 Free
    Webp converter for Joomla (JoomIQ) On Media Manager upload only; no bulk conversion; can keep or remove originals WebP 5, 6 Paid

    Disclosure: Infyways builds and sells WebP Converter through JoomlaX, our extension store. We’ve built 125 Joomla extensions since 2010. The steps below use it because it’s the one we know first-hand. The other extensions can be a better fit, for example if you only need conversion on upload.

    Setting up WebP Converter, step by step

    1. Install: unzip the downloaded WebPConverter_UNZIP.zip on your computer, then upload only the inner plg_system_webpconverter_…zip in System → Install → Extensions.
    2. Enable: in System → Plugins, search “WebP Converter” and enable System – WebP Converter.
    3. First settings: in General Settings, set Image Format to WebP Only, WebP Quality to about 70–80, and leave Lightweight Processing on and Debug Mode off. Save.
    4. Test one folder: on the Image Management tab, tick one small folder, choose WebP Only and click Generate Images. With the default settings, images/stories/photo.jpg gets a copy at images/webp/stories/photo.webp, and the original stays where it is.
    5. Check: clear the Joomla cache (and the CDN cache), open the page, and search the page source for .webp.
    6. Add AVIF later: once WebP works and your server supports AVIF, switch Image Format to Both. Browsers that support it then get AVIF first, then WebP, then the original.

    If PageSpeed still lists JPG URLs in Open Graph or schema tags, turn on Replace Image URLs Globally. You can exclude logos, animated GIFs, checkout pages or whole folders under Exclusion Settings. Full settings are in the WebP Converter documentation, and plans are on the product page.

    Method 2: Can you serve WebP with .htaccess instead of a plugin?

    Yes, if the WebP/AVIF files already exist next to the originals. The server checks the browser’s Accept header and quietly returns the smaller file at the same URL. Joomla, your articles and your template don’t change.

    How an .htaccess rule serves AVIF, WebP or the original JPG from the same Joomla image URL using the Accept header

    Step 1: create sibling files. This naming keeps photo.jpg and photo.png from colliding:

    cd images
    find . -type f \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' \) | while read f; do
      [ -f "$f.webp" ] || cwebp -quiet -q 80 "$f" -o "$f.webp"
      [ -f "$f.avif" ] || avifenc -q 60 "$f" "$f.avif" >/dev/null   # optional
    done

    Step 2: add the rules to Joomla’s .htaccess, in a block of their own just above the line ## These directives are only enabled if the Apache mod_rewrite module is enabled:

    <IfModule mod_mime.c>
      AddType image/webp .webp
      AddType image/avif .avif
    </IfModule>
    <IfModule mod_rewrite.c>
      RewriteEngine On
      # AVIF first, if the browser accepts it and photo.jpg.avif exists
      RewriteCond %{HTTP_ACCEPT} image/avif
      RewriteCond %{REQUEST_FILENAME}.avif -f
      RewriteRule ^(.+)\.(jpe?g|png)$ $1.$2.avif [T=image/avif,L]
      # Otherwise WebP, if accepted and photo.jpg.webp exists
      RewriteCond %{HTTP_ACCEPT} image/webp
      RewriteCond %{REQUEST_FILENAME}.webp -f
      RewriteRule ^(.+)\.(jpe?g|png)$ $1.$2.webp [T=image/webp,L]
    </IfModule>
    <IfModule mod_headers.c>
      <FilesMatch "\.(jpe?g|png)$">
        Header append Vary Accept
      </FilesMatch>
    </IfModule>

    What we saw when testing it (Apache 2.4, one 1600×900 test JPG): the same /images/hero.jpg URL returned image/avif to an AVIF-capable Accept header, image/webp to a WebP-only header, and the original image/jpeg to */*. All three responses carried Vary: Accept. Try it on staging first, and confirm with curl -I -H "Accept: image/webp" https://example.com/images/hero.jpg.

    • New uploads don’t get siblings until you run the script again, for example as a nightly cron job.
    • Caches: any page or proxy cache must respect Vary: Accept. Otherwise a browser that only handles JPG could be served a cached WebP.
    • Cloudflare: its docs say Polish may not run on responses with any Vary header other than Accept-Encoding. Use either this rule or Polish, not both.
    • nginx has no .htaccess. Use a map $http_accept with try_files $uri$suffix $uri in the server block instead.

    More about Joomla’s rewrite file: Joomla .htaccess guide.

    Method 3: Can a CDN convert Joomla images for you?

    Yes. Image CDNs check what each browser accepts at the edge and return a smaller format, so your server does no conversion work. For example, Cloudflare Polish keeps your image URLs and, with its WebP option on, serves a WebP version when the browser accepts it and the file comes out smaller. Polish is on Pro plans and above, and its docs note it won’t convert a JPEG when that would make the file bigger. Other image services (Bunny Optimizer, imgix and similar) work in a similar way. Check what your plan includes.

    • Pros: no load on your server, no Joomla changes, and new uploads are covered automatically.
    • Cons: it costs money, you get less control per folder, and images on other domains aren’t covered. You also depend on the vendor’s rules about when to convert.

    Method 4: How do you convert images manually?

    For a small brochure site or a redesign with a few dozen images:

    1. Convert in the browser with our free image to WebP converter, shrink files with the bulk image compressor, or use cwebp / avifenc on your computer.
    2. Upload the .webp files in Content → Media.
    3. Update every article image, module and template reference to the new file.
    4. Keep the originals backed up offline.

    This doesn’t scale: every new upload starts the problem again, and older browsers get no fallback.

    How do you keep LCP fast once images are converted?

    Converting the format is only half the job. Joomla core doesn’t handle these steps for you:

    • Give images a width and height. Joomla only adds loading="lazy" when it knows both, and setting them also stops layout shift (CLS). Images picked through the media field store their size in the URL (#joomlaImage://…?width=…&height=…).
    • Don’t lazy-load the LCP image. A hero image that appears straight away should load right away. Use a template override to set loading="eager" and fetchpriority="high", or add a <link rel="preload" as="image">.
    • Size images for the layout. A 4000 px photo in an 800 px column is wasted bytes even as WebP. Joomla’s Media Action – Resize plugin can cap upload sizes. For srcset, use a template override or an extension that creates the extra sizes.
    • Check CSS background images. Templates often load hero images from CSS, where only a server rule, a CDN or an extension that rewrites CSS backgrounds will swap the format.

    For caching, compression and the rest of the stack, see the full Joomla speed guide.

    WebP or AVIF: which should you use on Joomla?

    Question WebP AVIF
    File size at similar quality Smaller than JPEG/PNG (Google: 25–34% vs JPEG) Often smaller than WebP; test on your images
    Encoding on your server Fast Slower and uses more memory, so bulk jobs take longer
    Server requirement GD or Imagick with WebP PHP 8.1+ GD with AVIF, or Imagick with AVIF
    Transparency / animation Yes / yes Yes / yes
    Editable in Joomla’s media editor No No
    Use it for Every site, as the baseline Image-heavy pages (shops, galleries, portfolios), with a fallback

    Gains vary a lot by image, so run a few of your own images through both formats at your chosen quality and compare file size and appearance before converting a whole site.

    How do you check that it worked?

    1. DevTools → Network: reload the page, click an image and check that the content-type is image/webp or image/avif.
    2. PageSpeed Insights: run the mobile test on pagespeed.web.dev. Check the next-gen image and image-sizing audits, and which element is the LCP.
    3. Field data: the “Discover what your real users are experiencing” panel uses Chrome UX Report data, a rolling 28-day window, so it changes slowly.
    4. Search Console → Core Web Vitals: once you’ve fixed the issue, use “Validate fix” and allow about four weeks for the field data to update.
    5. Purge caches: clear Joomla’s cache, your page-cache extension and the CDN, or you may keep testing the old JPG.

    When should you get help?

    Image-heavy shops, sites that use page builders with CSS background heroes, multilingual sites behind a CDN, and template overrides for srcset or fetchpriority are where DIY fixes usually stall. You can hire a Joomla developer from Infyways; a senior engineer replies within 12 hours.

    Frequently asked questions

    Does Joomla convert images to WebP automatically?

    No. Joomla 5 and 6 can upload and display WebP (and AVIF since 5.0), but core doesn’t convert JPG or PNG files. Use an extension, a server rewrite rule or a CDN.

    Does Joomla 6.2 add WebP or AVIF features?

    No. Joomla 6.2 (released 13 October 2026) brought a TinyMCE picker that opens the Media Manager and separate image/figure CSS classes, but no format conversion.

    Can I upload AVIF to the Joomla Media Manager?

    Yes, since Joomla 5.0 on new installs. Older sites may need avif and image/avif added under System → Global Configuration → Media. WebP and AVIF can’t be edited in the media editor.

    Does Joomla lazy-load images?

    Yes. Joomla 4 and later add loading="lazy" to images rendered through the core image layout when the width and height are known. Editors can also choose lazy loading when inserting images.

    What do I need on the server for AVIF?

    PHP 8.1 or later with GD built with AVIF support, or Imagick with AVIF. Check phpinfo for “AVIF Support”. If it’s missing, start with WebP.

    Can I serve WebP without a plugin?

    Yes. Pre-convert the images, then use an .htaccess or nginx rule that serves the .webp file to browsers that accept it, with Vary: Accept. A CDN that converts at the edge also works.

    Will converting delete my original images?

    Not with converters that write separate copies. Some upload-time converters have an option to remove originals, so check that setting before a bulk run and keep a backup.

    Why does PageSpeed still show JPG after converting?

    Usually because of a cached page or CDN, a CSS background image, or Open Graph and schema tags that still point to the JPG. Purge all caches and turn on your converter’s URL-replacement option if it has one.

  • Joomla vs WordPress (2026): An Honest Comparison and Decision Guide

    Joomla vs WordPress (2026): An Honest Comparison and Decision Guide

    Short answer: Choose WordPress for blogs, marketing sites and WooCommerce shops where a large plugin and developer market matters most. Choose Joomla when you need multilingual content, detailed user access levels and more features in core without stacking plugins. If you already run one of them well, upgrading usually costs less than migrating. The decision table below covers the details.

    Joomla and WordPress are both free, open-source PHP content management systems, and neither is better for every site. WordPress is the safer default for blogs, marketing sites, and WooCommerce stores because of its huge plugin, theme, and hiring ecosystem. Joomla is the stronger choice when a site needs several languages, granular user permissions, and many structured sections in core, without stacking plugins to get there.

    I run Infyways, and our team builds, upgrades, and maintains sites on both platforms for clients in the US, UK, and Europe. This guide was rechecked on 8 October 2026 against official sources: WordPress 7.1.3 is the current release (6 October 2026), Joomla 6.1.4 and 5.4.9 are current (29 September 2026), and Joomla 6.2 is scheduled for 13 October 2026. Every figure below links to where it came from.

    What you will learn

    • The real differences between Joomla and WordPress in October 2026, with current versions and support dates
    • A decision table keyed on your site type, so you can pick a CMS in a few minutes
    • Which features each CMS ships in core and which need a plugin or extension
    • What security and maintenance actually cost you each year on each platform
    • What a migration in either direction involves, and when an upgrade in place is the cheaper move
    • Current market share numbers from W3Techs, and what they do and do not tell you

    Already know which way you are leaning? See Joomla development, WordPress services, or CMS development for both.

    Joomla vs WordPress at a glance (October 2026)

    Factor WordPress Joomla
    License and cost Free, GPL Free, GPL
    Current version 7.1.3 (6 October 2026) 6.1.4 and 5.4.9 (29 September 2026); 6.2.0 scheduled for 13 October 2026
    Release rhythm Continuous; three major releases planned for 2026 (7.0 in May, 7.1 in August, 7.2 planned for 10 December) A minor release about every six months; a new major about every two years (5.0 in October 2023, 6.0 in October 2025)
    Support policy Only the latest release series is actively maintained Published bugfix and security end dates for each major version
    PHP 8.3 or newer recommended; still runs on 7.4 Joomla 6 needs 8.3 or newer (8.4 recommended); Joomla 5 needs 8.1 or newer
    Databases MySQL or MariaDB MySQL, MariaDB, or PostgreSQL
    Multilingual content Plugin needed (WPML, Polylang, TranslatePress) Built into core
    Permissions Fixed roles and capabilities; plugins for per-section rules Core ACL with user groups, view access levels, and per-category or per-item permissions
    Editor Block editor (Gutenberg) with site editing and patterns TinyMCE article editor plus modules placed in template positions
    Free extensions Over 74,000 free plugins on WordPress.org A much smaller Joomla Extensions Directory (JED)
    Share of all websites (W3Techs, 8 October 2026) 40.1% 1.1%

    Sources: WordPress release archive, WordPress roadmap, WordPress requirements, Joomla project roadmap, Joomla technical requirements, WordPress.org plugin directory, and W3Techs WordPress vs Joomla.

    Which CMS fits your site: a decision table

    Most comparisons stop at “WordPress for beginners, Joomla for complex sites.” That is true but hard to act on. Use the row that matches your project, then check the item in the last column before you commit.

    Your site or requirement Better default Why Check this first
    Blog, content marketing, or a small business site WordPress Fastest launch, easiest editing, endless themes Who will apply plugin updates every month
    Online store with subscriptions, bookings, or many integrations WordPress WooCommerce and its integrations are far deeper Whether your payment and shipping providers ship a WooCommerce plugin
    Simple catalog store on an existing Joomla site Joomla VirtueMart or HikaShop keeps everything in one CMS Whether your gateway has a maintained Joomla 5 or 6 extension
    Site in three or more languages with per-language menus Joomla Languages, associations, and a language switcher are core Whether every language really gets its own content, or only machine translation
    Association, school, or government portal with departmental editors Joomla Core ACL can limit each group to its own categories Write down which group may create, edit, and publish in which section
    Members-only areas or an extranet with several visibility levels Joomla View access levels are core, no membership plugin needed for visibility Whether you also need paid memberships (WordPress has more payment options)
    Headless front end in Next.js or another framework WordPress REST API in core plus mature GraphQL tooling and examples Joomla’s Web Services API also works; see headless Joomla
    Existing Joomla 3, 4, or 5 site that works well Stay on Joomla and upgrade An upgrade keeps URLs, ACL, and languages; a migration rebuilds them Which extensions have Joomla 6 versions
    Existing WordPress site that runs smoothly Stay on WordPress Switching rarely pays off without a structural reason Whether a multilingual or permissions plugin is the actual pain point
    Team will hire freelancers locally and often WordPress The talent pool is much larger almost everywhere Whether you have a long-term partner instead
    Host only offers PHP 8.1 or 8.2 WordPress, or Joomla 5 for now Joomla 6 needs PHP 8.3 or newer Ask your host for PHP 8.3 or 8.4 before choosing Joomla 6

    Native features vs plugins: what each core ships

    Plugin counts tell you how many options exist. The more useful question is how many plugins your site will need, because every plugin is one more thing to update, license, and test. This table compares what each core includes in October 2026.

    Feature Joomla core WordPress core
    Multilingual content and language switcher Yes, with language associations and over 70 interface translation packs No; on the long-term roadmap as phase 4, so a plugin is needed today
    Granular access control Yes: user groups, view access levels, and permissions per component, category, and item Roles and capabilities; per-section rules need a plugin or custom code
    Custom fields Yes, 15 field types for articles, users, and contacts Basic custom fields; most sites add a fields plugin
    Multi-factor authentication Yes No; a plugin is needed
    Page caching Yes, a core page cache plugin No; a caching plugin or host-level cache is needed
    Redirect manager Yes, core Redirect component No; a plugin is needed
    Contact forms Yes, core Contacts component No; a forms plugin is needed
    Schema.org structured data Yes, core Schema.org plugins since Joomla 5 No; usually added by an SEO plugin
    XML sitemap No; an extension is needed Yes, since WordPress 5.5
    Block or visual page editing No core block editor Yes, block editor and site editor
    Several sites from one install No; an extension is needed Yes, WordPress Multisite
    REST API Yes, Web Services API since Joomla 4 Yes, REST API since WordPress 4.7
    Automatic core updates Yes, since Joomla 5.4 and 6.0 Yes; minor updates by default since 3.7, major updates by default on new installs since 5.6

    Sources: Joomla core features, Joomla Schema.org guide, Joomla 6.0 and 5.4 release notes, WordPress 5.5 sitemaps, WordPress REST API handbook, and WordPress automatic updates.

    The pattern is clear. Joomla puts more site-management features in core. WordPress puts more editing and publishing features in core, then relies on plugins for the rest. A typical multilingual WordPress business site ends up with a multilingual plugin, an SEO plugin, a forms plugin, a caching plugin, a security or 2FA plugin, and often a page builder. The equivalent Joomla site may need only an XML sitemap extension and a template.

    Multilingual sites and user permissions in practice

    Multilingual

    • Joomla: Each article, category, menu, and module can be assigned a language and linked to its translations through associations. The language switcher and language filter are core features, so a three-language site is a configuration task, not a plugin project.
    • WordPress: Multilingual content is on the WordPress roadmap as the fourth phase of the Gutenberg project, but it is not in core in 2026. WPML, Polylang, and TranslatePress are mature, so it works well. The cost is an extra plugin layer, often a yearly license, and more testing on every update.

    Access control

    • Joomla: ACL works on three axes: user groups, view access levels (who can see content), and actions (who can create, edit, publish, or delete). You can set them globally, per component, per category, or per article. A “Regional editor” group that can edit only the Europe category is built in the admin with no code.
    • WordPress: Five standard roles (Administrator, Editor, Author, Contributor, Subscriber), plus Super Admin on Multisite, each with a fixed set of capabilities. Limiting an editor to one category needs a plugin or custom code.

    If neither multilingual content nor per-section permissions is on your requirements list, Joomla’s biggest structural advantages do not apply to you, and WordPress is usually the simpler choice.

    Editing experience and learning curve

    WordPress is easier for most editors on day one. Posts and pages are obvious, and the block editor lets marketers build layouts visually. WordPress 7.0 (“Armstrong”, 20 May 2026) introduced a modernized dashboard and laid foundations for AI features across the admin, according to the official release post.

    Joomla has more concepts to learn: articles live in categories, menu items decide which content appears at which URL, and modules fill template positions around it. New editors often find menu-driven routing confusing at first. Once trained, teams managing many sections tend to like that structure, because the site’s layout and permissions follow the same model everywhere. Joomla 6.1 added a graphical workflow editor, and Joomla 6.2 brings a native read-more button and image and link insertion in TinyMCE, plus menus with more than one dropdown sublevel, per the Joomla roadmap.

    Extensions, themes, and hiring

    WordPress.org lists over 74,000 free plugins (checked 8 October 2026), before counting commercial plugins and themes. The Joomla Extensions Directory is a fraction of that size. The gap is smaller in practice than the raw numbers suggest, because Joomla needs fewer extensions for features it already has in core.

    The gap is real where it counts for many businesses:

    • Integrations: payment, CRM, booking, and marketing tools usually release a WordPress plugin first, and some never release a Joomla extension.
    • Commerce: WooCommerce has no Joomla equivalent in scale. VirtueMart and HikaShop are capable for standard catalogs.
    • Hiring: WordPress developers are easy to find almost everywhere. Joomla specialists are a smaller pool, so most Joomla site owners work with a long-term partner or hire Joomla developers on contract.

    Security and maintenance burden

    Both cores are well maintained, and both have dedicated security teams. Most hacked sites on either platform are running outdated extensions, weak passwords, or unpatched hosting, not a vulnerable core.

    For WordPress, Patchstack’s State of WordPress Security in 2026 counted 11,334 new vulnerabilities in the WordPress ecosystem during 2025, a 42% increase over 2024. Of those, 91% were in plugins, 9% were in themes, and only 6 were in WordPress core, all low priority. The lesson is not that WordPress is unsafe. It is that every plugin you add is part of your attack surface, which is one more reason to count the plugins a site needs before choosing.

    Joomla has fewer third-party components to track, but the same rule applies: abandoned extensions are the usual entry point. Our Joomla security guide covers hardening steps.

    Support windows you can plan around

    Version Released Bugfix support ends Security support ends
    Joomla 3.10 August 2021 Ended Official support ended 17 August 2023
    Joomla 4.4 October 2023 Ended Ended October 2025
    Joomla 5.x 17 October 2023 13 October 2026 12 October 2027
    Joomla 6.x 14 October 2025 17 October 2028 16 October 2029
    WordPress Continuous Only the latest series (7.1 in October 2026) is actively maintained; stay current

    Sources: Joomla roadmap, Joomla 3 end of support announcement, Joomla 4.4 security support notice, and the WordPress release archive.

    One date matters right now: regular bugfix support for Joomla 5 ends on 13 October 2026, the same day Joomla 6.2 is scheduled. Joomla 5 sites keep security fixes until 12 October 2027, so there is time, but that is the window to plan a move to Joomla 6. If you are still on Joomla 3 or 4, you are already past security support. Our Joomla upgrade service starts at $149 and includes a free audit.

    What yearly upkeep looks like

    Task WordPress Joomla
    Core updates Frequent minor and security releases, applied automatically by default Security and bugfix releases roughly every six weeks; automatic core updates available since 5.4 and 6.0
    Major upgrades Several majors a year; usually low friction if plugins are maintained A new major about every two years; plan a staged upgrade and extension audit
    Extension updates Usually the bulk of the work, because sites run more plugins Fewer extensions, but check each one for Joomla 6 support
    PHP upgrades Wide PHP range; plugins are usually the blocker Joomla 6 needs PHP 8.3 or newer, so plan hosting changes with the upgrade
    Security monitoring Track plugin vulnerability disclosures closely Follow Joomla security announcements and extension vulnerability notices

    If you would rather hand this off, see Joomla support and maintenance or WordPress support and maintenance.

    SEO, performance, and headless use

    Both platforms can rank well. Search engines reward helpful content, fast pages, clean URLs, and good internal links, not a CMS logo.

    • Joomla SEO: search-engine-friendly URLs, menu-level meta descriptions and robots settings, automatic aliases, and core Schema.org structured data since Joomla 5. You add an XML sitemap extension. Multilingual SEO is simpler because languages and associations are core. See our Joomla SEO services.
    • WordPress SEO: clean permalinks and core XML sitemaps, with plugins such as Yoast SEO or Rank Math for titles, schema, and on-page checks. Those plugins put SEO guidance right in the editor, which helps non-technical teams. See WordPress SEO services.
    • Performance: Joomla has a core page cache. WordPress relies on a caching plugin or host-level caching, and managed WordPress hosts usually provide it. With either CMS, hosting, image handling, and the number of extensions decide speed more than the core.
    • Headless: WordPress has a core REST API and a mature GraphQL ecosystem, so it is the more common headless backend. Joomla’s Web Services API covers content, users, and more for a decoupled front end.

    Market share: what the numbers tell you and what they do not

    W3Techs, 8 October 2026 WordPress Joomla
    Share of all websites 40.1% 1.1%
    Share of websites with a known CMS 58.6% 1.6%
    Share of known-CMS sites in the top 1 million 48.5% 1.2%

    Source: W3Techs WordPress vs Joomla usage statistics, updated daily.

    Older figures, often 2% to 3% for Joomla and 43% for WordPress, still circulate in comparison posts. Check the date on any market share number you see. What share does tell you: how easy it is to hire, how many integrations exist, and how many hosts tune for each CMS. What it does not tell you: whether a CMS fits your content model, languages, or permissions. Popularity decides the size of the ecosystem, not the right tool for your project.

    What changed in 2025 and 2026

    Joomla

    • Joomla 6.0 and 5.4 shipped together on 14 October 2025, according to the release announcement, giving sites a long-term bridge release and a new major in one window.
    • Automatic core updates arrived in Joomla 5.4 and 6.0, building on the secure TUF update system added in 5.1.
    • Upgrading from 5.4 to 6 is “an upgrade, not a migration”, in the project’s own words, helped by the Backward Compatibility 6 plugin.
    • Joomla 6.1 (14 April 2026) added a graphical workflow editor, a proof-of-work captcha, and audio, video, and document media fields.
    • Joomla 6.2 reached release candidate on 29 September 2026, with general availability planned for 13 October 2026 (announcement). Our Joomla 6 guide covers what is new.

    Joomla is not regaining market share. It is a modern, actively released CMS with a predictable calendar, which is what teams running multilingual and permission-heavy sites need. For a longer view, read the future of Joomla.

    WordPress

    • WordPress 7.0 shipped on 20 May 2026 and 7.1 on 19 August 2026, with 7.1.3 released on 6 October 2026.
    • The project’s 2026 goals focus on collaboration features, client-side media handling, responsive styling controls, and AI across the editing experience, per the WordPress roadmap.
    • Multilingual in core is still the future fourth phase of that roadmap, so multilingual sites keep relying on plugins.

    Migrating between Joomla and WordPress: cost drivers

    Migration cost depends far more on what the site contains than on how many pages it has. This table shows what moves cleanly and what has to be rebuilt.

    Item Joomla to WordPress WordPress to Joomla
    Articles, posts, categories, tags Usually automated with migration tools Usually automated, with fewer tools available
    Images and media Moves well; inline image paths need rewriting Moves well; inline image paths need rewriting
    Users Accounts move; users may need to reset passwords Accounts move; users may need to reset passwords
    Menus and modules or widgets Rebuilt by hand Rebuilt by hand
    Permissions Joomla ACL has no direct WordPress equivalent; rebuilt with roles and plugins Roles are mapped to Joomla groups and access levels
    Multilingual content Re-linked inside a multilingual plugin Re-linked as Joomla language associations
    Extension or plugin data (shop, events, directory, forms) Custom migration or rebuild Custom migration or rebuild
    Design New theme New template
    URLs and SEO 301 redirect map, metadata transfer, and a Search Console check 301 redirect map, metadata transfer, and a Search Console check

    Three things drive most of the cost: extension data such as orders or registrations, permissions and languages that need rebuilding, and the redirect map that protects your rankings. If your Joomla site works and the only problem is an old version, an upgrade in place is almost always cheaper than a platform switch. If WordPress is a better fit for your team, our Joomla to WordPress migration service handles content mapping, redirects, and SEO checks.

    When to choose WordPress

    1. Speed to launch and easy editing matter most
    2. You plan to sell online with WooCommerce or need integrations that only exist as WordPress plugins
    3. You want a large local market of freelancers and agencies
    4. The site is mostly pages, posts, and landing pages in one language
    5. You want managed hosting that handles updates, backups, and staging

    WordPress can handle multilingual sites and complex permissions too. It usually takes more plugins, more licenses, and more testing.

    When to choose Joomla

    1. The site must work in several languages from day one
    2. Different groups need to create, edit, or see different sections
    3. The structure is portal-like, with many sections and roles
    4. You already run Joomla well and want to modernize on Joomla 6 instead of rebuilding
    5. You want fewer third-party plugins and a published support calendar

    Joomla will not give you WordPress’s plugin density. Choose it for its architecture, not for one-click add-ons. Our Joomla development team can help scope a build.

    What thinner articles leave out

    Topic Typical comparison post This guide
    Choosing “WordPress for beginners, Joomla for complex sites” A decision table by site type, with the item to check before you commit
    Features “Joomla has more built in” A feature-by-feature core vs plugin map, including where WordPress core wins (sitemaps, Multisite, block editing)
    Support “Both are actively maintained” Dated bugfix and security end dates for Joomla 3 to 6 and WordPress’s latest-only policy
    Joomla 5 timing Rarely mentioned Joomla 5 bugfix support ends 13 October 2026; security ends 12 October 2027
    Hosting “Both run on any PHP host” Joomla 6 needs PHP 8.3 or newer; WordPress still runs on PHP 7.4
    Security “WordPress is targeted more” Patchstack’s 2025 breakdown (91% plugins, 9% themes, 6 core issues) and what it means for plugin count
    Market share Undated or outdated percentages W3Techs figures dated 8 October 2026, including the top 1 million sites
    Migration “Use a migration plugin” What moves automatically, what is rebuilt, and when an upgrade in place is cheaper

    Related guides and services

    Key takeaways

    1. Neither CMS is universally better. WordPress leads on ecosystem, editing, commerce, and hiring. Joomla leads on core multilingual, ACL, and structured sections.
    2. Count the plugins you will need, not the plugins available. Joomla covers more site management in core; WordPress covers more editing in core.
    3. Current versions (8 October 2026): WordPress 7.1.3; Joomla 6.1.4 and 5.4.9, with Joomla 6.2 scheduled for 13 October 2026.
    4. Joomla 5 leaves bugfix support on 13 October 2026 and security support on 12 October 2027. Joomla 3 and 4 are already past security support.
    5. Market share measures ecosystem size, not fit. W3Techs shows WordPress on 40.1% of all websites and Joomla on 1.1% (8 October 2026).
    6. Upgrading in place is usually cheaper than migrating unless the other CMS solves a structural problem you actually have.

    Frequently asked questions

    Is Joomla or WordPress better in 2026?

    Neither is better for every site. WordPress is the better default for blogs, marketing sites, and online stores. Joomla is better for multilingual sites and sites where different groups need different permissions.

    What is the main difference between Joomla and WordPress?

    Joomla includes multilingual content, granular access control, and custom fields in core. WordPress keeps core focused on editing and publishing, and adds most other features through its much larger plugin ecosystem.

    Is Joomla better than WordPress for multilingual sites?

    Usually, yes. Joomla handles languages, translations, and a language switcher in core, while WordPress needs a plugin such as WPML, Polylang, or TranslatePress. Both can run excellent multilingual sites.

    Which is easier to use, Joomla or WordPress?

    WordPress is easier for most beginners. Its dashboard and block editor are simple to learn. Joomla’s model of articles, categories, menus, and modules takes longer, but it scales well for large structured sites.

    Is Joomla more secure than WordPress?

    Not inherently. Both cores are well maintained. WordPress sees more reported vulnerabilities because it has far more plugins, and Patchstack found 91% of 2025’s WordPress ecosystem vulnerabilities were in plugins. Keeping everything updated matters more than the CMS you choose.

    Is Joomla dead in 2026?

    No. Joomla 6.1.4 and 5.4.9 were released on 29 September 2026, and Joomla 6 has security support planned until 16 October 2029. Its market share is small, but the project ships on a published schedule.

    Which is better for SEO, Joomla or WordPress?

    Both can rank equally well. Joomla includes SEF URLs, menu-level metadata, and Schema.org data in core. WordPress includes XML sitemaps in core and relies on SEO plugins for the rest. Content, speed, and site structure matter more than the CMS.

    How long is Joomla 5 supported?

    Regular bugfix support for Joomla 5 ends on 13 October 2026, and security fixes continue until 12 October 2027, according to the official Joomla roadmap. Plan an upgrade to Joomla 6 before then.

    Should I migrate my Joomla site to WordPress?

    Only if WordPress solves a real problem, such as integrations or hiring. If your Joomla site works and is simply out of date, upgrading to Joomla 6 keeps your URLs, permissions, and languages and usually costs less.

    Is Joomla free like WordPress?

    Yes. Both are free, open-source software under the GPL. Your costs come from hosting, premium extensions or plugins, design, and ongoing maintenance.

    Conclusion

    Pick WordPress when ecosystem, editing speed, and hiring matter most. Pick Joomla when languages, permissions, and structured sections are core requirements. Whichever you choose, keep core and extensions current, test major upgrades on staging, and plan around the support dates above. If you want a second opinion on your project, Infyways works on both platforms through CMS development.

  • Joomla Redirect Guide: 301, com_redirect, and .htaccess

    Joomla Redirect Guide: 301, com_redirect, and .htaccess

    Joomla Redirect Guide: 301, com_redirect, .htaccess, and nginx

    A Joomla redirect sends visitors and crawlers from an old URL to a new one with an HTTP status code (usually 301). Joomla gives you three practical layers: server rules (.htaccess, nginx, or IIS) that run before PHP, the com_redirect component that runs after a 404, and Global Configuration switches that control how Joomla builds links. Pick the layer that matches whether the old URL still returns 200 or already 404s.

    Redirects are not a cosmetic tweak. They are how you keep rankings when you rename an article, retire K2, force one hostname, or move HTTP to HTTPS without splitting authority across two URLs. Google treats a proper 301 as a strong signal to consolidate to the destination: Consolidate duplicate URLs.

    This guide is the full map for Joomla 4, 5, and 6. For the "I saved a 301 and nothing happened" checklist, see Joomla 301 redirects not working.

    Three redirect layers in Joomla: server, com_redirect on 404, and Global Configuration link building

    Server rules run first. com_redirect only fires when Joomla has already decided the path is a 404.

    What you will learn

    • What 301, 302, and 307 mean in Joomla
    • When to use .htaccess, nginx, com_redirect, or neither
    • How to enable System – Redirect and publish rows in System → Redirects
    • Exact .htaccess rules for www, non-www, and HTTP to HTTPS
    • nginx and IIS equivalents when there is no .htaccess
    • How to test headers, avoid redirect chains, and protect SEO after a migration

    301, 302, and what Joomla actually sends

    Code Name Use in Joomla
    301 Moved permanently Default for SEO migrations, retired aliases, www/HTTPS canonicalization
    302 Found (temporary) Short campaigns, A/B tests, maintenance you will reverse
    307 Temporary redirect Rare in Joomla admin; some server modules use it instead of 302

    com_redirect defaults to 301 unless your Joomla version exposes per-row status codes under Redirects → Options. Server rules use [R=301] in Apache or return 301 in nginx.

    A Menu Item Alias is not a redirect. It shows the same article at a second menu path while both URLs can still 200. Aliases are navigation. Redirects are HTTP responses. If two real menu items point at one article, you have duplicate URLs until you unpublish one or 301 the loser: Joomla duplicate URLs.

    Pick the right layer

    Layer When it runs Use it for
    .htaccess (Apache / LiteSpeed) Before PHP boots www ↔ bare host, HTTP → HTTPS, /index.php/alias → /alias, folder moves, anything that still 200s
    nginx server / location Before PHP Same jobs on nginx hosts (no .htaccess)
    IIS web.config Before PHP Windows hosts
    com_redirect + System – Redirect plugin After Joomla returns 404 Old article aliases, retired menu paths, K2 URLs after uninstall
    Global Configuration → Server → Force HTTPS Link generation in Joomla Makes Joomla emit https:// links. Pair with a server 301 for typed http:// visits
    System – SEF Rewrites URLs in HTML Cleaner paths. Not a substitute for 301 when an old URL still resolves

    Official component help: Redirects: Links (Joomla 5) and Redirects: New or Edit. Stock Apache snippets live in preconfigured htaccess.

    Decision flow: still 200 use server rules, already 404 use com_redirect

    If the old URL still loads a page, com_redirect never runs. Fix that at the server or unpublish the route.

    Step 1: Set up com_redirect (Joomla 4, 5, and 6)

    Use the component when the expired path is already a 404 and you want to manage dozens of mappings in the administrator.

    Enable the plugin (not optional)

    1. System → Plugins → search System – Redirect → Enable.
    2. On fresh installs this plugin is often disabled. Rows in System → Redirects do nothing until it is on.

    Do not confuse it with System – SEF. SEF builds pretty links. It does not send 301s for dead paths.

    Create a redirect row

    1. System → Redirects → New.
    2. Expired URL: the full old address as you would type it (https://www.example.com/old-alias).
    3. New URL: the full destination.
    4. Status: Enabled (published). Collected 404s stay disabled until you add a New URL and publish.
    5. Save.

    Optional: turn on Collect URLs in the plugin so 404s appear in the list for you to map. Collection is logging, not redirecting.

    Regex and bulk work

    • Enable Regular expressions on a row when you need a pattern (example: all /blog/2019/ paths). Test one URL before importing hundreds.
    • After a K2 removal, map /component/k2/... to new com_content URLs as part of Migrate K2 to Joomla articles. Do not leave public 404s while you "collect later."
    • Joomla expects Use URL Rewriting on and a working rewrite file, or matching is unreliable. See Joomla index.php still in URLs.

    If a row is published and the old URL still shows the old page, a menu item or alias is still serving it. com_redirect cannot help until that route 404s or you move the job to .htaccess.

    Step 2: Redirect www and non-www in .htaccess

    Pick one canonical host (www or bare) and 301 everything else. This belongs in server config, not in com_redirect.

    Joomla ships a commented block in .htaccess labeled custom redirects. Place rules after RewriteEngine On and before the Joomla core rules, or inside the documented custom section from preconfigured htaccess.

    Bare → www (replace example.com):

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^example.com [NC]
    RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
    

    www → bare:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.example.com [NC]
    RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
    

    Notes:

    • Use your real domain. Escape dots in the host (example.com).
    • If you also need HTTP → HTTPS, chain both conditions or use one rule that targets the final https:// host.
    • [NC] makes the host match case-insensitive. [L] stops processing. [R=301] sends the permanent redirect.

    After editing, purge CDN cache and test in a private window. The address bar should show your chosen host on the first hop.

    Step 3: Force HTTPS at the server and in Joomla

    Server (Apache / LiteSpeed)

    Below RewriteEngine On, when SSL is working:

    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
    

    Better: combine host canonicalization and HTTPS in one rule set so you do not create a chain (http://example.com → https://example.com → https://www.example.com).

    Joomla Global Configuration

    System → Global Configuration → Server → Force HTTPS: set to Entire Site once the certificate is valid. That makes Joomla generate https:// links in HTML. It does not always redirect a visitor who manually types http://. Keep the server rule for that.

    Step 4: Single-path and migration redirects in .htaccess

    When one old path still 200s but must point elsewhere:

    Redirect 301 /old-folder/page https://www.example.com/new-alias
    

    Or with mod_rewrite:

    RewriteRule ^old-alias/?$ https://www.example.com/new-alias [L,R=301]
    

    Use this for:

    • Renamed menu aliases while the old menu item still exists
    • /index.php/seo-tips → /seo-tips after SEF is fixed
    • Retired microsite folders

    For large content moves, pair server rules for structural changes with com_redirect rows for long-tail aliases that already 404.

    Step 5: nginx and IIS when Joomla has no .htaccess

    nginx (inside the server block for the site):

    # bare to www + HTTPS (adjust host names)
    if ($host = example.com) {
        return 301 https://www.example.com$request_uri;
    }
    if ($scheme = http) {
        return 301 https://$host$request_uri;
    }
    

    Official Joomla nginx notes: Nginx. You still need try_files so SEF works: details in Joomla index.php URLs.

    IIS: rename web.config.txt to web.config, install URL Rewrite, and add equivalent rules. Joomla documents IIS rewriting alongside Apache in Enabling SEF URLs.

    Step 6: Test headers, chains, and loops

    1. Browser Network tab → first document request → Status should be 301 (or 302 if intentional) with a Location header pointing at the final URL.
    2. Command line: curl -I https://www.example.com/old-path and read HTTP/1.1 301 plus Location:.
    3. Avoid chains longer than one hop (/a → /b → /c). Google will follow them but dilutes signals. Point /a straight to /c.
    4. Loops (/old → /new → /old) crash the browser. Usually a com_redirect New URL points back at the expired path.
    5. Clear Joomla cache and any CDN. Cached 404 HTML can hide a redirect you just published.

    Canonical tags complement redirects but do not replace them when both URLs still 200: Joomla canonical URL problems.

    Redirect mistakes that still waste SEO

    Mistake Why it hurts Fix
    302 instead of 301 for a permanent move Search engines may not consolidate equity Use 301 in server rules or Redirect options
    Old URL still 200 com_redirect never runs Unpublish menu item or use .htaccess
    Plugin off, rows published Looks configured Enable System – Redirect
    Slash / www / HTTP mismatch Row does not match request Add rows for each variant or force one host at server
    Only fixing canonical, not 301 Two indexable URLs remain 301 losers after duplicate audit
    Leaving K2 404s public Crawl budget on dead paths 301 map during K2 migration

    Key takeaways

    1. 301 is the default for permanent Joomla URL changes that should pass ranking signals.
    2. Server rules handle www, HTTPS, and paths that still return 200. com_redirect handles paths that already 404.
    3. Enable System – Redirect. The component UI alone is not enough.
    4. Publish redirect rows. Collected 404s are a log until Enabled with a New URL.
    5. Match the full expired URL (scheme, host, slash) or canonicalize host at the server.
    6. Test with response headers, not only whether the browser lands on the right page.
    7. After migrations, map old aliases before you declare SEO done. Broader cleanup: Joomla on-page optimization and Joomla SEO services.

    Frequently asked questions

    What is a 301 redirect in Joomla?

    An HTTP response that tells browsers and crawlers a URL moved permanently. Joomla can send it via com_redirect after a 404, or via .htaccess, nginx, or IIS before PHP runs.

    Should I use com_redirect or .htaccess?

    Use .htaccess (or nginx/IIS) for www, HTTPS, and any old URL that still loads. Use com_redirect when the old path already 404s, such as retired article aliases.

    How do I redirect non-www to www in Joomla?

    Add Apache rewrite rules after RewriteEngine On in .htaccess, or the nginx/IIS equivalent. Do not rely on com_redirect for hostname changes while both hosts still 200.

    How do I redirect HTTP to HTTPS in Joomla?

    Force HTTPS in Global Configuration → Server for link generation, and add a server 301 from http:// to https:// so manual HTTP visits redirect too.

    Why is my Joomla 301 redirect not working?

    Usually the System – Redirect plugin is off, the row is unpublished, or the old URL still returns 200. Full checklist: Joomla 301 redirects not working.

    Does Joomla redirect preserve SEO?

    A correct 301 tells search engines to consolidate signals to the new URL. Chains, 302s, and duplicate 200 URLs undermine that.

    Can I bulk import redirects in Joomla?

    Yes on many Joomla 4/5/6 builds via System → Redirects import (CSV). Test a few rows, then import. Regex rows need extra care.

    Is a menu alias the same as a redirect?

    No. An alias serves the same content at a second menu path. Both can 200. A redirect returns 301/302 and stops serving the old URL.

    What about IIS servers?

    Rename web.config.txt, install URL Rewrite, and add host and HTTPS rules there. com_redirect still works for 404 paths on IIS.

    Where do I put custom .htaccess redirects?

    Use the custom redirects section documented in Joomla's preconfigured htaccess, after RewriteEngine On, without breaking the core Joomla rewrite block.

  • How to Create a Custom 404 Page in Joomla

    How to Create a Custom 404 Page in Joomla

    To create a custom 404 page in Joomla 5 or 6, publish a Custom HTML (or other) module in the error-404 position on Cassiopeia or a child of Cassiopeia. Joomla still returns HTTP 404. The module replaces the default message inside error.php. Do not header('Location: …') to a normal article. That turns a missing URL into a 302 or 200, which is what the 2019 version of this page did, and it is the wrong signal for Google.

    On Joomla 4 there is no error-404 position in core Cassiopeia. You copy error.php into a child template and edit that copy, or you add the same module include that Joomla 5 shipped. Known broken URLs that should move, not 404, belong in the Redirect component.

    Missing URL stays a 404. The template error page shows branded content

    A custom 404 is still a 404. Pretty HTML does not mean a 200 OK.

    What you will learn

    • Why a redirect to an article is not a 404 page
    • How Cassiopeia error-404 and error-403 modules work (Joomla 5.0+)
    • How to put the same pattern in a child template or a club template
    • What to put on the page (search, home, useful links)
    • How to test status codes, not only the design
    • When to 301 instead of 404

    Official module positions: Custom Error Pages (Joomla 5.4 manual). Magazine walkthrough: The 404 That Could (JCM, November 2025).

    The 2019 method, and why to stop using it

    The old Infyways steps were: create a 404 article, noindex it, copy error.php, then:

    header('Location: /index.php?option=com_content&view=article&id=292');
    exit;
    
    What you wanted What that code does
    “Page not found” for humans A second request to a real article
    HTTP 404 for Google Usually 302 then 200 on the article
    One branded error view A normal com_content URL that can get indexed unless you fight robots

    Search engines need 404 (or 410) for URLs that are gone with no replacement. Soft 404s (200 with “not found” text) waste crawl time. If the URL moved, use a 301 in System → Redirects, not a custom error page.

    If your site still has that Location block in error.php, delete it before you add a module. Put the file in a child so the next Cassiopeia update does not restore a hack, and so your fix is not wiped. Rule: customize Joomla without editing core.

    Joomla 5 and 6: the error-404 module (preferred)

    Cassiopeia since Joomla 5.0 reads modules in:

    • error-404 for not found
    • error-403 for forbidden

    If no module is published there, visitors still get the default language strings. Debug output still appears under the module when debug is on.

    Publish a module in error-404, then test a fake URL

    No error.php edit is required on stock Cassiopeia 5+. A child still needs the same include if you copied a thin error.php.

    Step 1: Use a child template

    Create and assign a Cassiopeia child if you do not have one. How to set up a Joomla child template.

    Club templates: check whether they already declare error-404. If not, you will add the include in Step 4.

    Step 2: Create the 404 content as a module

    1. Content → Site Modules → New
    2. Type: Custom (Custom HTML). Search, Latest Articles, or a menu module also work.
    3. Title: something you can find later, for example 404 message. You can hide the title.
    4. Write the message: short apology, home link, search, two or three real destinations. Keep it useful, not a joke that hides the next click.
    5. Position: type error-404 if it is not in the dropdown. Cassiopeia 5+ accepts it even when the style UI is thin.
    6. Status: Published. Menu assignment: On all pages. The error document is not a normal menu item. All pages is the safe assignment.
    7. Save.

    Use absolute https:// URLs for images and the home link. Relative src="images/…" often breaks on nested missing paths (/category/no-such-page). That is a known error-page path issue. Prefer full URLs until your Joomla patch level includes the error-page SEF fixes.

    Step 3: Test the status, then the design

    Open a URL that does not exist, for example https://www.example.com/this-page-is-not-real.

    You should see your module. Then check the status:

    • Browser Network tab, or
    • curl.exe -sI https://www.example.com/this-page-is-not-real

    You want HTTP/1.1 404 (or 404 from HTTP/2). If you see 200 or 302 to /404 or to an article, you still have a redirect in error.php or in .htaccess.

    Step 4: Joomla 4, or a template without error-404

    Copy parent error.php into the child (same filename at the child template root), then add the official include. Do not edit the parent Cassiopeia file.

    <?php
    $errorCode = $this->error->getCode();
    ?>
    <?php if ($this->countModules('error-' . $errorCode)) : ?>
      <div class="container">
        <jdoc:include type="modules" name="error-<?php echo $errorCode; ?>" style="none" />
      </div>
    <?php else : ?>
      <?php // keep the template's original default message here ?>
    <?php endif; ?>
    

    That snippet is the Joomla custom error pages pattern. Wrap it around the default heading so you do not delete fallback text.

    A full branded layout is still error.php in the child: logo, user.css, maybe a search module. Same child rule as any other PHP file.

    Step 5: 403, Redirects, and language strings

    Need Tool
    Forbidden (logged-out vs ACL) Module in error-403, same idea as 404
    Old URL has a new home System → Redirects, 301. Not a 404 page
    Default “page not found” wording only Language override, if you are not using a module
    Pretty CSS Child user.css, not a core Cassiopeia sheet

    Do not noindex a real 404 URL in an article. There should not be a public article acting as the 404 document.

    Key takeaways

    1. A custom 404 page must keep HTTP 404. Do not redirect error.php to a com_content article.
    2. On Joomla 5 and 6 Cassiopeia, publish a module in error-404.
    3. Put PHP and CSS in a child template. Parent updates will replace error.php if you edited Cassiopeia itself.
    4. Use absolute URLs for images and home on the error document.
    5. Test with a fake path and with the response code.
    6. Moved content is a 301. Gone content is a 404. Soft 200 is the worst of both.

    Need a branded error page built into a client template? Joomla design services. Ongoing 404 cleanup: Joomla SEO services.

    Frequently asked questions

    How do I create a custom 404 page in Joomla 5?

    Publish a Custom HTML module in the error-404 position on Cassiopeia (or a child that includes that position). Visit a missing URL and confirm HTTP 404.

    Should a Joomla 404 page return HTTP 200?

    No. 200 on a not-found URL is a soft 404. Keep 404. Redirects belong in the Redirect component when the page moved.

    Does the error-404 module work on Joomla 4?

    Not in core Cassiopeia 4. Copy error.php into a child and add the error-{code} module include, or run Joomla 5+ Cassiopeia.

    Why are images broken on some 404 URLs?

    The missing path is nested, and the image used a relative URL. Use absolute https:// links. Update Joomla when error-page SEF path fixes are in your branch.

    Can I use an article as the 404 page?

    You can, if you redirect to it. You should not. You lose a clean 404. Use a module on the error document instead.

    Will a Cassiopeia update delete my 404 module?

    No. Modules live in the database. A parent error.php you edited by hand can be overwritten. Keep PHP in a child.

  • Joomla Maintenance Mode: How to Take Your Site Offline (Tested)

    Joomla Maintenance Mode: How to Take Your Site Offline (Tested)

    Updated 15 October 2026 · By Abhilash Sahoo, Founder, Infyways

    Quick answer: To put a Joomla site into maintenance mode, log in to the admin and go to System → Global Configuration → Site, set Site Offline to Yes, type an offline message, and save. Joomla then serves every visitor a themed offline page with a genuine HTTP 503 “Service Unavailable” status, while you and other Super Users keep full access to the live site after logging in. The admin area (/administrator/) stays reachable the whole time. This works the same in Joomla 4, 5 and Joomla 6.2, the latest version.

    The 503 status is the right signal for temporary downtime: Google keeps the page indexed instead of treating it like a removed page. Joomla does not add a Retry-After header, which you can add yourself with a template override or .htaccess (shown below).

    Every result below was tested on a real Joomla 5.4.10 site (PHP 8.2) and a Joomla 6.2.0 site (PHP 8.4) running on our own machine — the status codes, headers and screenshots are the actual output, not documentation copy. If you’d rather hand ongoing upkeep to a team, we run Joomla support and maintenance plans, but you don’t need us to flip the switch — this guide covers it.

    How do I turn on maintenance mode in Joomla?

    Joomla 6.2 Global Configuration Site Offline toggle in the admin
    1. Log in to your Joomla administrator at yoursite.com/administrator/.
    2. Open System → Global Configuration (the Site tab).
    3. Set Site Offline to Yes.
    4. Under Offline Message, choose Use Custom Message and type what visitors should see, or pick the site’s default.
    5. Optionally set an Offline Image (your logo).
    6. Click Save. The site is now offline for the public.

    That’s the whole task. Everything else on this page is about doing it well — keeping your SEO intact, branding the page, and not locking yourself out.

    What do visitors actually see?

    Default Joomla Cassiopeia offline page with login form shown to visitors

    Guests get the template’s offline.php layout — in the default Cassiopeia template that’s a centred card with your message, your offline image, and a login form. The login form is there on purpose: it’s how you (a Super User) get back into the live site without touching the admin. The page is rendered by Joomla, so it still carries your template’s styling.

    Does maintenance mode return the right HTTP status for SEO?

    curl showing Joomla offline mode returns HTTP 503 with no Retry-After header

    Yes. We requested the offline front page with curl -I and Joomla returned:

    HTTP/1.1 503 Service Unavailable
    Content-Type: text/html; charset=utf-8

    503 is exactly what you want. It tells search engines “the site is temporarily down, come back later” so they keep the URL in the index rather than dropping it. A page that returned 200 (normal) with a “we’re offline” body would risk Google indexing the offline notice; a 404 or 403 would risk losing rankings. Joomla sets the status in core — in SiteApplication::render() it calls setHeader('Status', '503 Service Temporarily Unavailable') whenever the site is offline and the visitor isn’t an authorised user.

    The one thing Joomla doesn’t send is a Retry-After header. That header is optional and Google treats a 503 correctly without it, but if you want to hint when you’ll be back, you can add it — see the override section below.

    Who can still use the site while it’s offline?

    Who sees the Joomla site while offline: guests 503, Super User 200, API 401

    We tested each type of request against the offline Joomla 5.4 site:

    Request Status Result
    Guest / search engine bot 503 Sees the offline page
    Super User logged in via the offline form 200 Sees the full, live site
    Administrator area (/administrator/) 200 Works normally
    REST API (/api/index.php/...) 401 Blocked (not public)

    So you can keep working on the front end while the public is held out. Access is controlled by the core.login.offline permission — by default only Super Users have it, but you can grant it to a group (e.g. a client’s reviewer) in Global Configuration → Permissions so they can preview the site while it’s offline.

    What does the Site Offline toggle write to configuration.php?

    configuration.php offline, offline_message and offline_image settings in Joomla

    The toggle just edits plain PHP variables in your site’s configuration.php:

    public $offline = true;
    public $offline_message = 'This site is down for maintenance.<br>Please check back again soon.';
    public $display_offline_message = 1;   // 0 = none, 1 = custom message
    public $offline_image = '';

    This matters for the most common emergency: if you ever can’t log in on the offline page, you don’t need the admin at all. Open configuration.php over SFTP or your host’s file manager, change $offline = true; to $offline = false;, save, and the site is back. (More on that in the lockout section.)

    How do I brand the offline page or add a Retry-After header?

    Custom Joomla offline.php template override adding a Retry-After header

    For a simple logo + message, the Offline Image and Offline Message fields are enough. For a fully custom page, override the template’s offline.php. In Cassiopeia the file is templates/cassiopeia/offline.php; copy it into your child template and edit it there so an update won’t overwrite your work. (If a template has no offline.php, Joomla falls back to templates/system/offline.php.)

    Because the override is a normal PHP file, you can also set a Retry-After header from it. We tested this on the real site — adding one line produced the header:

    <?php
    http_response_code(503);
    header('Retry-After: 3600');   // tell crawlers: try again in 1 hour
    ?>

    Result:

    HTTP/1.1 503 Service Unavailable
    Retry-After: 3600

    You can do the same at the server level in your .htaccess file if you prefer a maintenance page that bypasses Joomla entirely (useful during an upgrade when Joomla itself is being replaced).

    Is this the same in Joomla 6.2?

    Yes. We installed a clean Joomla 6.2.0 (the latest version) on PHP 8.4 and ran the same tests: the Site Offline toggle lives in the same place, guests get a 503, the admin stays on 200, and the offline page behaves identically. The only platform note is that Joomla 6.x requires PHP 8.3 or newer (Joomla 5 runs on PHP 8.1+), so a very old server may need a PHP bump before you upgrade. If you’re planning that move, our Joomla migration guide covers doing it without downtime.

    Maintenance mode vs. a real upgrade or migration

    Joomla’s offline switch is for short interruptions — pushing content, swapping a template, a quick extension update. It is not a backup or a staging environment. Before any risky change:

    • Take a full Joomla backup (files + database) first.
    • For bigger work, do it on a staging copy and only flip the live site offline for the final cut-over.
    • If you’re changing the template or layout, use overrides instead of editing core so updates don’t undo your changes.

    Troubleshooting: common maintenance-mode problems

    Fixing a Joomla offline lockout by editing offline to false in configuration.php
    Problem Cause Fix
    Offline page won’t let me log in Wrong Super User password, or caching Edit $offline = false; in configuration.php, then clear cache/
    Site still shows live after turning offline Full-page cache / CDN serving old copy Clear Joomla cache and your CDN (Cloudflare “Purge Everything”)
    Visitors see offline page after I’m done Browser or CDN cached the 503 Set offline to No, purge caches; 503 is marked no-cache so it clears fast
    Offline message shows raw HTML tags Message typed with escaped tags Use plain <br> in the field; Joomla renders it
    Need the whole site down during a core upgrade Joomla can’t serve its own offline page mid-upgrade Use an .htaccess maintenance rule instead

    Help, I locked myself out

    This is the one that scares people, and it’s genuinely a 60-second fix. Maintenance mode never touches your database, so you can always undo it from the files:

    1. Connect over SFTP, SSH, or open your host’s file manager (cPanel, Hostinger, Plesk).
    2. Open configuration.php in the site root.
    3. Change public $offline = true; to public $offline = false; and save.
    4. Delete the contents of cache/ and administrator/cache/.

    The site is back instantly. There’s no database flag and no “maintenance table” to repair — a relief if you’ve just come from cleaning up a hacked Joomla site, where offline mode is step one of containment.

    Frequently asked questions

    Does Joomla maintenance mode hurt my SEO?

    No, as long as it’s temporary. The offline page returns HTTP 503, which tells search engines the downtime is temporary and keeps your URLs indexed. Problems only appear if a site stays on 503 for weeks — then Google may start treating it as gone.

    What status code does Joomla’s offline mode return?

    503 Service Unavailable, set in core. We confirmed it with curl -I on both Joomla 5.4 and 6.2. The admin area and logged-in Super Users still get 200.

    Does Joomla send a Retry-After header?

    No, not by default. Google handles 503 correctly without it, but you can add one via a custom offline.php override or an .htaccess rule if you want to hint a return time.

    Can I still log in while the site is offline?

    Yes. The offline page itself has a login form. Super Users (and any group you grant the core.login.offline permission) can log in there and browse the live site; everyone else sees the offline page. The /administrator/ login also works normally.

    Where is the maintenance-mode setting in Joomla?

    System → Global Configuration → Site tab → Site Offline. It’s the same location in Joomla 4, 5 and 6.2.

    Can I customise the offline page?

    Yes. Set an offline message and image in Global Configuration for a quick change, or override templates/<your-template>/offline.php (fallback templates/system/offline.php) for full control, ideally in a child template.

    Will my REST API still work during maintenance mode?

    No. We tested the API endpoint and it returned 401 while the site was offline, so integrations that rely on the public API will pause until you’re back online.

    How do I take the site offline for a full Joomla upgrade?

    During a core upgrade Joomla is mid-replacement and can’t reliably serve its own offline page, so use a server-level maintenance page via .htaccess instead, and always take a full backup first.

    Does maintenance mode block logged-in registered users?

    By default yes — only Super Users bypass it. If you want a specific group (e.g. client reviewers) to see the site while it’s offline, grant that group the “Offline Access” (core.login.offline) permission in Global Configuration → Permissions.

    Is there a plugin for scheduled maintenance windows?

    Joomla’s built-in toggle is manual. If you want unattended, scheduled maintenance — updates, backups, security monitoring handled for you — that’s exactly what our Joomla support and maintenance service does.

  • Add a Favicon in Joomla on Any Template

    Add a Favicon in Joomla on Any Template

    To add a favicon in Joomla, change what the active site template (or a system plugin) prints in the page head as rel="icon". That is not always Cassiopeia, and it is not always three Joomla-named files. Helix, T4, Gantry, YOOtheme, and most club templates have their own favicon field or their own filenames. Cassiopeia is only the core default. View source, find the current href, then use that template’s option, replace that file, or inject a pack and strip the old tags.

    A favicon is the mark in the browser tab, bookmarks, and (with extra sizes) on a phone home screen. Joomla 4, 5, and 6 all work the same way at the HTTP level: whatever is in <head> wins. This guide starts with that, then covers template options, Cassiopeia’s media files as one special case, cache, and when a generator plugin is easier than fighting five different template UIs.

    Browser tab icon, phone icon, and template media files

    The tab shows whatever the assigned template or a plugin put in the head. Cassiopeia is one of those templates, not the only one.

    What you will learn

    • How to see which URL Joomla is actually using for the icon
    • Where commercial templates usually store the favicon (style options)
    • The Cassiopeia-only three-file names, if that is your template
    • Why Atum (administrator) is a separate pack
    • How cache hides a correct upload
    • When Easy Favicon is the template-agnostic manager

    Do not edit parent index.php to hard-code a <link>. Same rule as CSS: customize Joomla without editing core. Prefer a child template when you must change files.

    Step 1: See what is in the head

    Open the public site. View source. Search for rel="icon", apple-touch-icon, and shortcut icon.

    Write down:

    • The href (that is the file you must replace, or the tag you must override)
    • Whether there is more than one icon link (SVG plus ICO plus Apple is normal)
    • Whether the path is media/templates/…, templates/…, images/…, or a CDN

    If Helix (or another club template) prints a tag after Cassiopeia’s, the later tag often wins in the browser. Replacing Cassiopeia files then looks like “Joomla ignored me.” You were on the wrong template.

    Also check System → Site Template Styles. The style with the star (and any menu assignment) is the one that must receive the change.

    Step 2: Use the template’s own favicon control

    Most paid templates never use joomla-favicon.svg. They expect an upload in Template Styles.

    Template family Where to look first
    Helix Ultimate / JoomShaper Template Options → a logo or favicon / favicon ICO field (name varies by version)
    T4 (Joomlart) Template style → theme / site identity
    Gantry 5 Outline → Page Settings or atom for favicon
    YOOtheme Pro Customizer → favicon / apple-touch
    Other club templates Search the style for “favicon”, “icon”, or “site identity”
    Cassiopeia (core) No favicon field. Use the media files in the next section
    Atum (core admin) Separate administrator template. Frontend files do not change the backend tab

    Upload a square PNG or ICO, 512×512 or larger if the field accepts PNG. Save the style. Then skip to cache (Step 4) and prove the new href in view source.

    If the field only stores one ICO, you still will not get Apple 180 or Android adaptive icons unless the template generates them. That gap is why a pack plugin exists.

    Step 3: Replace files only when the head points at files

    This is the right move when view source shows a path under your template’s images or media folder.

    Cassiopeia (and a Cassiopeia child) is the documented core case. It loads three names:

    • joomla-favicon.svg (rel="icon")
    • favicon.ico (rel="alternate icon")
    • joomla-favicon-pinned.svg (rel="mask-icon")

    Path on Joomla 4.1, 5, and 6:

    media/templates/site/{template}/images/

    If the assigned style is a child cassiopeia_brand, that folder is media/templates/site/cassiopeia_brand/images/. Replacing files only on parent Cassiopeia does nothing while the child is default.

    If you replace only favicon.ico, Chrome can keep the SVG. Replace all three. Official map: Cassiopeia Template Folders and Files.

    Any other template: do not invent those three Joomla filenames. Replace the file the href already names, or use the template option in Step 2. Joomla 4.0-era templates/{name}/images/ still appears on old forks. Match the live href, not a blog from 2017.

    Root /favicon.ico: some bots still request it. It does not override a later SVG in Chrome.

    Create the icon files, put them where the template already points, clear cache, check the tab

    Wrong template style, or the wrong filename, is why the Joomla mark remains.

    Step 4: Clear cache and test in a clean browser

    1. System → Maintenance → Clear Cache
    2. Purge CDN cache if you use one
    3. Private window, or a browser profile that has not seen the old icon

    Chrome on phones caches favicons hard. View source again. The href must change. If it did not, you edited the wrong style or the template is still injecting the old URL.

    Pick the method

    Situation Do this
    Club template with a favicon upload Step 2. Then view source.
    Cassiopeia or Cassiopeia child Three named files in that template’s media images/ folder
    Head shows a path you do not recognise Replace that file, or the template option that wrote it
    Several icon tags from the template plus a plugin Strip or disable one source. Two systems fighting is the usual mess
    Apple, Android, dark mode, different admin tab Pack plugin (next section), or a full generator ZIP plus template fields
    Administrator tab still Joomla Atum media files or an admin pack. Frontend changes never touch it

    Managing icons across templates with Easy Favicon

    Template options and Cassiopeia files are enough when you have one ICO and a cooperative theme. They are a poor manager when every client site uses a different template, or when Helix keeps printing the old apple-touch link.

    Easy Favicon is a JoomlaX system plugin for Joomla 4, 5, and 6. It is template-agnostic: one master image, generate the pack, inject tags, optionally strip competing favicon and apple-touch tags so Helix, T4, or Cassiopeia defaults lose. That is the point of mentioning it here. It is not required to “add a favicon.”

    From System → Plugins → System – Easy Favicon you can manage:

    Need What it does
    One upload, usual sizes 16, 32, 48, Apple Touch 180, Android 192 and 512, optional ICO
    Site vs administrator Site pack, optional admin pack (reuse or a second master)
    Dark OS theme Optional dark masters
    Android cropping Maskable padding and background
    Template still winning Strip level for foreign icon tags
    Mobile chrome theme-color meta
    Another PWA owns the manifest Off, Generate, or Defer
    Handoff Preview, regenerate, ZIP. Files under images/easyfavicon/

    PHP 8.1+, GD or Imagick. No jQuery. Icons stay on your server.

    First run: install the inner plugin zip, enable it, choose a square master (512×512+ PNG or SVG), Generate all icons, clear cache, check the public tab, then the admin tab if the admin pack is on. If generate fails, check GD/Imagick. If the old icon remains, raise strip strength and purge CDN. If a PWA extension owns the manifest, set Defer or Off.

    Docs: Easy Favicon documentation. Demo: Easy Favicon demo. JED listing. JoomlaX is Infyways’ extension store.

    Key takeaways

    1. The favicon is whatever the assigned template or plugin puts in <head>. Start with view source.
    2. Most commercial templates use a style option, not Cassiopeia’s three filenames.
    3. Cassiopeia is the core default: joomla-favicon.svg, favicon.ico, joomla-favicon-pinned.svg in that template’s media images/ folder, preferably a child.
    4. Atum (admin) is a second template. Frontend files do not change the backend tab.
    5. Prove the new href, then fight cache.
    6. A pack plugin is for multi-size, admin, dark mode, and stripping template tags, not for every simple ICO swap.

    Client branding across club templates: Joomla design services.

    Frequently asked questions

    How do I add a favicon in Joomla 5 or 6?

    Find the assigned template style. Use its favicon option if it has one. On Cassiopeia, upload the three named files to that template’s media images/ folder. Clear cache and check view source.

    Does this only work with Cassiopeia?

    No. Cassiopeia is the core default and uses three specific filenames. Most live sites use Helix, T4, Gantry, YOOtheme, or another club template. Start from view source and that template’s style options.

    Why does Chrome still show the old icon?

    Wrong template style, a later tag from a club template, only one of several files replaced, or favicon cache. View source before you upload again.

    Do I need a plugin?

    No, if the template option or file replace already updates rel="icon". Yes, if you need a full size pack, a separate admin icon, or to strip Helix (or similar) tags.

    Where do Easy Favicon files live?

    Under images/easyfavicon/. The plugin injects head tags. You do not have to name Cassiopeia’s three files when it is managing the pack.

    Will a template update delete my favicon?

    A parent template media file can come back. A child, a template-style upload in the database, or plugin files under images/easyfavicon/ are safer.