Joomla SEO
Joomla has its own SEO problems. Most SEO people have never seen them.
Duplicate URLs from ?Itemid=. SEF settings that behave differently on every host. Meta descriptions that vanish between the menu item and the article. A template quietly loading eighteen font weights before anything renders.
None of that is a content problem, and no amount of keyword research fixes it. It is a Joomla problem, and it is what I fix.
- The same article reachable at four different URLs
- No canonical tag anywhere on the site
- Meta description identical on 60+ pages
- Search results pages indexed by Google
- No Open Graph tags — links look bare when shared
- Mobile LCP over 4 seconds, mostly fonts
Where the rankings actually go
Four things Joomla does that quietly cost you traffic
Every one of these is invisible to a visitor and obvious to a crawler. All four are on most Joomla sites I open.
The same page at four addresses
An article reached through two menu items gets two URLs, plus the raw index.php?option=com_content&id= version, plus the www variant. Google picks one and splits the ranking signals across the rest — usually picking the wrong one.
SEF that works here and not there
URL rewriting depends on .htaccess, on RewriteBase, and on what the host allows. A site that was fine for years starts returning 404s on every page after a move, and nothing in the Joomla interface says why.
Metadata that disappears
Joomla lets you set a title and description on the article, on the menu item, and in Global Configuration — and they override each other in an order almost nobody knows. The result is dozens of pages sharing one description, or none at all.
A template that outweighs the content
Helix and most commercial templates load font weights, icon sets and sliders you never use. On mobile that is often the single largest thing standing between you and a green Core Web Vitals score.
The work itself
The Joomla SEO checklist I work through
Not every item applies to every site, and I will tell you which ones do not. This is the list — nothing hidden behind “and more”.
Configuration and indexing
- SEF URLs and URL rewriting enabled,
htaccess.txtrenamed and live RewriteBaseset for the actual document root — the single most common cause of sitewide 404s after a host move- “Adds suffix to URL” switched off, so pages stop ending in
.html - Global Configuration robots setting checked — sites sitting on
noindex, nofollowsince launch are not rare - HTTPS forced in Joomla itself, not only in
.htaccess - One canonical host: www or bare, http or https, everything else 301'd to it
- Unicode alias handling decided for Serbian or other non-Latin content
Duplicate content and routing
- Every article audited for multiple reachable URLs via
?Itemid= - Canonical tag on every page, pointing at the address you actually want ranked
- Category, tag and author archive pages set to index or noindex on purpose, not by default
- Pagination handled so page 2 onwards does not compete with page 1
- Search result pages and print views blocked in
robots.txt - Trailing slash behaviour made consistent
- Redirect map built and verified after any migration, with the Redirect component watching for what was missed
Metadata and structured data
- Browser page title and meta description written for every indexed page — on the menu item where the menu item wins, on the article where it does not
- Titles kept under 60 characters and descriptions under 158, so Google stops rewriting them
- Duplicate descriptions found across the whole site and rewritten, in bulk via the database where there are hundreds
- Open Graph and Twitter card tags added — Joomla core ships none, so shared links look bare
- Structured data: Organization, BreadcrumbList, Article, and FAQPage where the content supports it
- Image alt text filled in at scale, including bulk fixes for imported content
- XML sitemap generated, submitted, and actually checked in Search Console rather than assumed
Speed and Core Web Vitals
- Google Fonts call cut to the weights the design uses — loading eighteen weights and an unused subset is worth 150ms on its own
- Template CSS and JS compression and preload enabled in Helix
- Images converted to WebP with explicit width and height, so layout stops shifting
- Lazy loading below the fold,
fetchpriority="high"on the LCP image, no lazy loading on it - Joomla cache and a page cache plugin configured — and excluded correctly on pages with forms and tokens
- Unused plugins that inject CSS and JS on every page identified and switched off
- Result measured on throttled mobile, not on your desktop connection
Content structure
- Exactly one H1 per page — SP Page Builder's Heading addon defaults to H3, so pages ship with nine H3s and no H2 more often than not
- Heading hierarchy corrected so the page outline reads as a structure
- Internal links added between related articles, with anchor text that says what is on the other end
- 404s monitored after the work, not just before
What you actually receive
An audit you can read, and the fixes already applied
The audit
The audit
The fixes
The fixes
Before and after
Before and after
Pricing
One project, one price
No monthly SEO retainer. A Joomla site has a finite set of technical problems, and once they are fixed they stay fixed — paying someone every month to re-check them is how agencies bill, not how the work actually goes.
Joomla SEO audit & fixes
For any Joomla site that has never had its technical SEO looked at properly — or has just been migrated.
- Full checklist audit, delivered as a document
- All applicable fixes applied on staging, then live
- Meta titles and descriptions written for every indexed page
- Structured data and Open Graph added
- Speed and Core Web Vitals work included
- Search Console set up and verified if it is not already
- Re-measured after 30 days
Before you ask
What I don't do
Three things I get asked for and turn down, because doing them well is not possible and doing them badly is worse than not doing them.
No link building
Bought and exchanged links are the thing Google has spent fifteen years learning to detect, and the penalty lands on you, not on whoever sold them. Links you earn from real work are the only ones worth having.
No promises about position
Anyone guaranteeing you first place for a competitive term is either lying or planning to rank you for a phrase nobody searches. I can promise the technical work is done properly and measured — the ranking is Google's to give.
No monthly retainer for the same audit
Technical SEO is a project, not a subscription. Once your site is clean, keeping it clean is part of a maintenance plan, and costs a fraction of an SEO retainer.
Questions
Frequently asked
How long does the audit take?
The audit itself is 2–4 working days depending on how many pages the site has. Applying the fixes is usually another 3–7, because everything goes onto a staging copy for you to approve before it touches the live site.
Will you break anything while fixing URLs?
That is exactly the risk, which is why redirect work is the part I rehearse most. Every URL that changes gets a 301 to its new home, the map is tested before go-live, and Joomla's Redirect component stays on afterwards to catch anything the map missed.
Do I need this if my site was just migrated?
That is the best moment for it. A migration is when URLs move, metadata gets dropped and duplicate routes appear — and it is much cheaper to fix in the same month than a year later when Google has settled on the wrong version of every page.
Can you do the content side too?
I write meta titles and descriptions as part of this, and I will tell you where the content structure is working against you. Writing the articles themselves is not what I do, and I would rather say so than do it badly.
What if the audit finds almost nothing?
Then you get a short document saying so and I bill for the audit, not for fixes that were not needed. It happens, and it is a good outcome — you now know instead of suspecting.
Not sure whether any of this applies to your site?
Run it through the free check first — it takes seconds and tells you the version, the speed score and the security headers. If the technical SEO looks like the bigger problem, say so when you write and I will look at that instead.


