Skip to main content
SEO in Joomla
On this page
# Topics

SEO in Joomla

07 June 2026

Search engine optimisation (SEO) sounds like a dark art, but most of it is plain housekeeping: clean URLs, honest page titles, a clear description, and pages that load fast. Joomla gives you all of these out of the box, long before you install a single extension.

Many site owners pay for an "SEO plugin" without realising that Joomla core already controls the page title, the meta description, the canonical link, the URL shape, and the robots rules. Used well, the built-in settings cover the large majority of on-page SEO.

This article explains how SEO works inside Joomla. It covers the basics for owners and editors, the daily setup for administrators, and the technical details for developers. You will see where each setting lives, what HTML it produces, and how to avoid the mistakes that quietly cost you search traffic.

How Joomla turns clean settings into clean search results

The goal is simple: help you understand Joomla SEO well enough to rank on your own work, not on hype.

1. The Basics

1.1 What SEO Means in a CMS

SEO is the work of making your pages easy for search engines to find, read, and rank. In a Joomla context it breaks into three layers:

  • Technical SEO - URLs, redirects, sitemaps, speed, crawlability. Mostly administrator work.
  • On-page SEO - titles, headings, descriptions, internal links, images. Mostly editor work.
  • Content SEO - writing pages that answer a real question better than the competition. Everyone's work.

Joomla cannot write your content, but it gives you strong control over the first two layers without touching code.

1.2 What Joomla Controls Out of the Box

Before any extension, Joomla core already sets:

  • The browser page title (the <title> tag).
  • The meta description for each page.
  • The robots instruction (index or not, follow or not).
  • The URL shape (search-engine-friendly URLs, with or without index.php).
  • The canonical link when several menu items reach the same content.
  • hreflang tags on multilingual sites.

The job of this article is to show you each of these and how they fit together.

1.3 The Three Places SEO Settings Live

Almost every core SEO option sits in one of three places. Learn these three and you know where to look:

LevelWhereScope
Site-wide System → Global Configuration → Site Defaults for the whole site.
Per menu item Menus → [item] → Page Display + Metadata One page or one view.
Per article Content → Articles → [article] → Publishing One specific article.

The rule of precedence is "most specific wins". An article meta description overrides the menu item, which overrides the site default.

Back to top

2. Search Engine Friendly URLs

2.1 Three Switches, One Result

Joomla builds its URL shape from three options in System → Global Configuration → Site → SEO Settings:

OptionOffOn
Search Engine Friendly URLs index.php?option=com_content&view=article&id=42 index.php/the-article
Use URL Rewriting keeps index.php/ in the path removes index.php//the-article
Adds Suffix to URL /the-article /the-article.html

The combination almost every site wants is SEF URLs = Yes, URL Rewriting = Yes, Adds Suffix = No. That gives short, clean paths like /about-us.

2.2 The One File You Must Rename

Use URL Rewriting needs the web server to send unknown paths to Joomla. On Apache this means renaming the shipped file:

htaccess.txt   →   .htaccess

If you switch on URL Rewriting without that rename, every clean URL returns a 404. On NGINX you add a try_files rule instead. This is the single most common reason "nice URLs" break right after launch.

2.3 Unicode Aliases

The Unicode Aliases option decides how Joomla turns a title into a URL alias:

  • No (default): transliterate to plain ASCII. "Cafe München" becomes cafe-munchen.
  • Yes: keep the original characters. The alias becomes cafe-münchen in the URL.

ASCII aliases are safer for sharing, copying, and old systems. Keep the default unless you have a clear reason and an audience that expects native-script URLs.

2.4 Include Site Name in Page Titles

The last SEO setting controls the global page title pattern:

No            →  About Us
Before Title  →  My Company - About Us
After Title   →  About Us - My Company

"After Title" is the usual choice: the unique part of the page comes first, where it carries the most weight, and the brand follows.

Back to top

3. Metadata and the Document

3.1 The Site Defaults

In Joomla's configuration Global Configuration → Site → Metadata Settings you set the fallbacks used when a page has nothing more specific:

SettingWhat it does
Site Meta Description Default <meta name="description"> when a page has none.
Robots Default crawl rule: index, follow and the three opposites.
Content Rights A rights statement exposed as metadata.
Author Meta Tag Show or hide a <meta name="author"> tag.

The old Site Meta Keywords field still exists, but search engines have ignored the keywords tag for many years. Leave it empty and spend the effort on the description instead.

3.2 The Meta Description That Actually Shows

The meta description rarely changes your ranking directly, but it often becomes the snippet under your title in the results. A good description earns the click. Set it per article in Content → Articles → [article] → Publishing → Meta Description.

Practical rules:

  • Keep it around 150 to 160 characters. Longer text gets cut.
  • Write a sentence that sells the page, not a keyword list.
  • Make every important page unique. Duplicated descriptions waste the snippet.

3.3 The Robots Instruction

The Robots dropdown writes a <meta name="robots"> tag and accepts four values:

ValueMeaning
index, follow Index this page and follow its links (the normal case).
noindex, follow Keep out of the index, but still crawl the links. Good for thin tag or search pages.
index, nofollow Index the page, ignore its links. Rarely useful.
noindex, nofollow Hide the page completely from search.

Robots cascades like everything else: an article value overrides its menu item, which overrides the site default. Setting an article to noindex while the menu item says index is fine - the article wins on its own page.

Back to top

4. Page Titles and Headings

4.1 Title vs Heading: Two Different Things

New editors often confuse these. They are separate:

  • The browser page title is the <title> in the page head. It shows in the browser tab and in search results.
  • The page heading is the visible <h1> at the top of the content.

They can differ on purpose. The title can read "Joomla SEO Guide - My Company" while the on-page heading reads simply "SEO".

4.2 Setting Them on a Menu Item

Open any menu item and look at Page Display:

FieldControls
Browser Page Title The <title> tag. Empty falls back to the menu item title.
Show Page Heading Whether the <h1> appears at all.
Page Heading Override text for the <h1>.

For SEO, every important page should have exactly one clear <h1> and a descriptive title.

4.3 The Heading Hierarchy

Search engines read your heading structure to understand the page. Keep it ordered:

h1   One per page - the main topic
h2   Major sections
h3   Subsections under an h2

Inside article bodies, use the editor's paragraph format to pick Heading 2 and Heading 3 rather than just making text big and bold. Visual size is not structure; the tag is. A page with five <h1> tags or with headings that jump from h2 to h4 reads as messy to a crawler.

Back to top

5. Aliases, Canonicals, and Duplicate Content

5.1 The Alias Is Your URL

Every article, category, and menu item has an Alias. It becomes the slug in the URL. Joomla fills it automatically from the title, lowercased and hyphenated, but you should review it:

  • Keep it short and readable: joomla-seo-guide, not joomla-seo-guide-2026-final-v2.
  • Set it once and leave it. Changing an alias changes the URL and breaks inbound links (see section 10).
  • Never reuse the same alias inside one category - Joomla will append a number and you lose the clean slug.

5.2 How the Full URL Is Built

A clean Joomla URL is not one field. The router stitches it together from the aliases along the path:

/services/seo/joomla-seo-guide
   │        │        │
   │        │        └─ article alias
   │        └─ category alias (or sub-menu alias)
   └─ menu item alias

This means a tidy menu and category tree produces tidy URLs for free, while a messy tree produces deep, confusing paths. Plan the structure before you publish hundreds of articles.

5.3 Why Duplicate Content Happens in Joomla

Joomla can legitimately reach the same article through several routes:

/seo-guide                         (its own menu item)
/blog/seo-guide                    (through a blog category menu)
/component/content/article/42      (the routeless fallback)

Three URLs, one article. Left alone, search engines may index all three and split the ranking signal between them.

When several menu items point at the same content, Joomla emits a canonical tag that names the URL it considers primary:

<link rel="canonical" href="https://site.tld/seo-guide">

This tells the crawler "index this one, treat the rest as copies". The catch: Joomla picks the primary itself, and after a menu refactor that choice can flip. Always verify the canonical on key pages after you reorganise navigation. To force one clean path with several navigation entries, use a menu item of type System Link → Menu Item Alias instead of two real items pointing at the same content.

Back to top

6. Images, Media, and Accessibility

6.1 Alt Text Is SEO and Accessibility at Once

The image alt attribute describes a picture for screen readers and for image search. Joomla's editor and the article Images tab both have an Image Alt field. Fill it with a short, honest description:

<img src="/joomla-dashboard.jpg"
     alt="The Joomla 6 administrator dashboard">

Leave it empty only for purely decorative images, where Joomla offers an "alt empty" option so screen readers skip them correctly.

6.2 File Names and Size

  • Name files in words: red-running-shoes.jpg, not IMG_4821.jpg.
  • Resize before upload. A 4000px photo on a 600px slot wastes bandwidth and hurts speed.
  • Prefer modern formats. Joomla's media tools and many templates support WebP and AVIF, which are far smaller than JPEG at the same quality.

6.3 Lazy Loading

Joomla can add loading="lazy" to images below the fold so the browser defers them until needed. This improves the Largest Contentful Paint score that Google measures. Many templates and the core editor add it automatically; check your output and do not lazy-load the single most important image at the top of the page.

Back to top

7. Internal Linking and Breadcrumbs

Internal links are the quiet workhorse of SEO. They do three jobs at once:

  • Discovery - crawlers follow links to find new pages. An article nobody links to is an orphan that may never get indexed.
  • Link equity - ranking strength flows along links. Pointing strong pages at important ones lifts the targets.
  • Context - the words you use in a link (the anchor text) tell search engines what the target page is about.

7.2 Joomla's Internal-Linking Tools

You do not need an extension for solid internal linking. Joomla core gives you several routes:

ToolWhat it links
Category Blog layout Lists articles in a category, each linked - a natural hub page.
Tags Group related articles across categories; each tag page links them together.
Articles - Related module Shows articles that share tags with the current one.
Editor link button Link words inside the body to other articles by search, not by raw URL.

Always link from inside the body text with descriptive words ("read our Joomla redirects guide"), not a bare "click here". The anchor text is free SEO signal.

7.3 Topic Clusters

The strongest internal-linking pattern is the topic cluster: one broad "pillar" page links down to several detailed pages, and every detail page links back up to the pillar and across to its siblings.

Pillar:  /joomla-seo            (broad overview)
  ├─ /joomla-seo/sef-urls       (detail)
  ├─ /joomla-seo/redirects      (detail)
  └─ /joomla-seo/multilingual   (detail)

In Joomla you build this with one category (the pillar) plus a shared tag, so the Related module wires the siblings together automatically.

7.4 Breadcrumbs

Breadcrumbs are the small "Home → Services → SEO" trail near the top of a page. Joomla generates them from the menu and category path through the Breadcrumbs module (publish it to a module position in your template):

Extensions → Site Modules → New → Breadcrumbs

They help two audiences. Visitors see where they are and can climb back up. Search engines read the trail as site structure, and with BreadcrumbList structured data (section 8) they can show the trail directly in the results instead of a raw URL.

Back to top

8. Structured Data and Social Sharing

8.1 What Structured Data Does

Structured data (usually JSON-LD) describes your page in a machine-readable form: this is an Article, here is its author, its date, its image. Search engines use it to build rich results - star ratings, FAQ drop-downs, breadcrumbs, article cards.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Joomla SEO Guide",
  "datePublished": "2026-06-06",
  "author": { "@type": "Person", "name": "Peter Martin" }
}
</script>

Useful schema types for a Joomla site include Article and BlogPosting for content, BreadcrumbList for the trail, FAQPage for question lists, and Organization or Person for the author and brand.

8.2 Open Graph and Twitter Cards

When someone shares your link on social media, the preview comes from Open Graph tags:

<meta property="og:title"       content="Joomla SEO Guide">
<meta property="og:description" content="How Joomla handles SEO out of the box.">
<meta property="og:image"       content="https://site.tld/images/seo.jpg">

8.3 Where This Comes From in Joomla

Joomla core does not emit JSON-LD or Open Graph automatically. You get them from one of three sources:

  • Your template - many modern Joomla templates output Open Graph from the active article.
  • A plugin or component dedicated to structured data.
  • A small custom plugin that hooks onBeforeCompileHead and adds the tags from the current document.

Because they are not core, audit them. A template that hard-codes the same og:image on every page is worse than none.

8.4 Custom Fields Feed Schema

Joomla's Custom Fields are a clean source of structured data. When you add fields such as Rating, Author Bio, or FAQ Question/Answer to an article type, a template override or plugin can read those values and emit matching schema. The editor fills a normal form field; the page gains a precise, consistent @type without anyone hand-writing JSON. This keeps the structured data up-to-date as content changes.

Back to top

9. Sitemaps and robots.txt

9.1 robots.txt Ships With Joomla

Joomla includes a file called robots.txt.dist in the site root. Rename a copy to robots.txt to use it. The default blocks crawlers from system folders:

User-agent: *
Disallow: /administrator/
Disallow: /api/
Disallow: /cache/
Disallow: /cli/
Disallow: /components/
Disallow: /includes/
Disallow: /installation/
Disallow: /language/
Disallow: /libraries/
Disallow: /logs/
Disallow: /tmp/

Two warnings. First, do not disallow /images/ or /media/ if you want image search to work. Second, robots.txt blocks crawling, not indexing - to truly hide a page from results use the robots meta tag (section 3.3), not just Disallow.

9.2 The XML Sitemap

An XML sitemap is a list of your URLs that you submit to Google Search Console so crawlers find every page. Joomla core does not generate one. You add it with a well-known extension such as OSMap or JSitemap. Once generated, reference it at the bottom of robots.txt:

Sitemap: https://site.tld/index.php?option=com_osmap&view=xml&id=1

9.3 Google Search Console

Whatever extension you choose, connect the site to Google Search Console. It is free and it tells you what no setting can: which pages are indexed, which queries bring visitors, which URLs return errors, and where crawlers get stuck. SEO without Search Console is guessing. Submit the same sitemap to Bing Webmaster Tools as well, so Bing and Copilot discover your pages too.

Back to top

10.1 Why Moved URLs Matter for SEO

When you rename an article or restructure the site, the old URL stops working. Every external link and every bit of search ranking that pointed at it now lands on a 404. That accumulated value, often built over years, simply evaporates.

10.2 The Redirects Component

Joomla solves this with the core Redirects component (com_redirect). It logs every 404, lets you map the old URL to a new one, and sends the correct status code:

Old URL:  /old-seo-article
New URL:  /joomla-seo-guide
Code:     301 Moved Permanently

A 301 tells search engines the move is permanent and passes the old page's ranking to the new URL. Enable the System - Redirect plugin first, because the component does nothing until that plugin is on.

10.3 The Custom Status Code Trap

By default the component forces every redirect to 301, ignoring the code on each row. To honour your per-row choice, switch on Components → Redirects → Options → Use Custom Redirect Status Codes = Yes before you import a migration file. (For the full workflow, see the separate Focus On article on Redirects.)

Back to top

11. Performance and Core Web Vitals

11.1 Speed Is a Ranking Factor

Google measures real-world loading speed through the Core Web Vitals and uses them as a ranking signal:

MetricMeasuresGood
LCP (Largest Contentful Paint) Time to render the main content under 2.5s
INP (Interaction to Next Paint) Responsiveness to clicks under 200ms
CLS (Cumulative Layout Shift) Visual stability while loading under 0.1

11.2 The Built-in Levers

Joomla gives you several speed controls without an extension, in Global Configuration and the system plugins:

  • Caching (System → Global Configuration → System → Cache) plus the System - Page Cache plugin for full-page caching.
  • Gzip Page Compression (Server tab) to shrink the HTML sent over the wire. On servers that support it, Brotli at the web-server level compresses even better.
  • The HTTP Headers plugin to set caching headers for static assets.
  • A modern PHP version. Each major PHP release runs noticeably faster, so keeping the server on a current, supported PHP is free speed.

11.3 The Bigger Wins

The largest gains usually live outside settings:

  • Right-sized, modern-format images (section 6).
  • A lean template that does not load five icon fonts and three sliders.
  • HTTP/2 or HTTP/3 and a good host.
  • A CDN in front of images, CSS, and JavaScript, so static assets load from a server near the visitor.
  • Fewer third-party scripts. Each analytics or chat widget adds blocking JavaScript.

11.4 Keep the Database Healthy

A slow database drags every page down. A little routine maintenance keeps Joomla fast:

  • Uninstall extensions you no longer use, rather than just disabling them.
  • Clear old data: expired cache, the redirect 404 log, action logs, and stale sessions.
  • Run an occasional OPTIMIZE TABLE on large tables such as #__content and #__finder_links.

Measure with Google PageSpeed Insights or Lighthouse before and after each change, so you know which one helped.

Back to top

12. Multilingual SEO

12.1 hreflang Done For You

On a multilingual Joomla site, search engines need to know which page is which language. The hreflang link tag tells them. The good news: when you associate translated content in Joomla and run the System - Language Filter plugin, Joomla emits these tags automatically:

<link rel="alternate" hreflang="en-GB" href="https://site.tld/en/seo-guide">
<link rel="alternate" hreflang="nl-NL" href="https://site.tld/nl/seo-gids">

This only works when each article is correctly associated with its translations in the article's Associations tab. Miss the association and the hreflang tag is missing too.

12.2 One Language Per URL

Keep each URL inside its own language. A Dutch page should link to and redirect within /nl/, an English page within /en/. Cross-language redirects and mixed-language pages confuse both visitors and crawlers.

12.3 Translate the Metadata Too

Per-language SEO is not only the body text. Translate the meta description, the alias, and the browser page title for each language. A Dutch page with an English description and an English slug looks half-built to a Dutch searcher.

Back to top

13.1 What E-E-A-T Is

E-E-A-T stands for Experience, Expertise, Authoritativeness, and Trustworthiness. It is not a single ranking dial, but it shapes how Google's quality systems judge your content, especially for topics where bad advice can cost money or harm. For a specialist site, it is the difference between "a page about the topic" and "a page by someone who clearly does this work".

13.2 Building E-E-A-T in Joomla

Joomla gives you the building blocks without an extension:

  • Author pages - use the Contacts component (com_contact) and link a contact to a user. Joomla can then show a real author box with a biography, photo, and links.
  • The trust pages - a clear About, Contact, Privacy Policy, and Terms page. Simple articles, but search engines and visitors look for them.
  • Freshness signals - the publish_up and modified dates on each article. Show "Published" and "Last updated" so readers and crawlers see the content is maintained.
  • Evidence of experience - case studies, screenshots from real projects, and measured results. This article style, explaining how Joomla actually behaves, is itself an E-E-A-T signal.

13.3 Trust and Security Are SEO Too

Trust is the foundation of E-E-A-T, and a chunk of it is technical. A site that leaks data or runs old code does not look trustworthy:

  • Serve everything over HTTPS.
  • Set modern security headers with the core HTTP Headers plugin (see the separate Focus On article on HTTP Headers).
  • Keep Joomla and every extension up to date, and protect admin logins with multi-factor authentication.

Search now includes AI answers - Google's AI Overviews, ChatGPT Search, Perplexity, and Bing Copilot. They pull from clear, well-structured pages and cite the sources they trust. To be quotable:

  • Answer the question directly in the first paragraph, then expand.
  • Use plain, descriptive headings that match how people ask questions.
  • Add an FAQ section with FAQPage schema (section 8) for the short, direct answers these systems prefer.
  • Be consistent about names and entities - your brand, your author, your products - so the systems can connect them.

The same habits that make a page good for E-E-A-T make it good for AI search: clear structure, honest expertise, and machine-readable signals.

Back to top

14. Under the Hood (Developer View)

14.1 The Document Object

Almost every SEO tag comes from Joomla's Document object. A component, plugin, or template override can set them directly:

use Joomla\CMS\Factory;

$doc = Factory::getApplication()->getDocument();

$doc->setTitle('Joomla SEO Guide');
$doc->setMetaData('description', 'How Joomla handles SEO out of the box.');
$doc->setMetaData('robots', 'index, follow');

// Canonical link
$doc->addHeadLink(
    'https://site.tld/joomla-seo-guide',
    'canonical',
    'rel'
);

The same setMetaData() call writes Open Graph if you pass an attribute flag:

$doc->setMetaData('og:title', 'Joomla SEO Guide', 'property');

14.2 Where the Values Are Stored

For articles, the SEO fields live as columns on #__content:

metadesc     the meta description text
metakey      the legacy meta keywords (rarely used)
metadata     a JSON blob: robots, author, rights
attribs      per-article display params (JSON)

Menu items store the same idea in the params JSON column: menu-meta_description, robots, page_title, and so on. Categories carry their own metadesc and metadata columns. The router merges these by precedence at render time.

14.3 The SEF Router and Plugins

The clean URL you see is built by each component's router (for example ContentRouter for articles) and finished by the System - SEF plugin, which rewrites relative links and absolute paths in the final HTML. To add tags globally, a plugin can hook the head-compile event:

public function onBeforeCompileHead(): void
{
    $doc = Factory::getApplication()->getDocument();
    $doc->setMetaData('og:site_name', 'My Company', 'property');
}

This is the clean place to inject site-wide Open Graph or JSON-LD without editing the template.

Back to top

15. Web Services and Headless SEO

15.1 SEO Fields Through the API

When you run Joomla as a headless backend for a separate front-end (React, Vue, a mobile app), the SEO metadata travels through the Web Services API. Enable the Web Services - Content plugin and the article endpoints return the SEO columns:

curl -H "X-Joomla-Token: <token>" \
  https://site.tld/api/index.php/v1/content/articles/42

The JSON response includes metadesc, metakey, metadata, and the alias - everything the front-end needs to render its own <title>, description, and canonical.

15.2 SEO Moves to the Front-End

The key shift with headless: Joomla no longer renders the HTML head, so Joomla's automatic canonical and hreflang tags do not appear. Your front-end must rebuild them from the API fields. A few rules for a headless setup:

  • Render real server-side HTML (SSR or static generation) so crawlers see the tags. A blank page hydrated only by JavaScript indexes poorly.
  • Map the API alias to your front-end route, and emit your own canonical from it.
  • Build JSON-LD on the front-end from the structured fields the API returns.

Headless gives you total control of the output. The trade is that every SEO tag Joomla used to add for free becomes your responsibility.

Back to top

16. Common Mistakes and Pitfalls

16.1 Clean URLs Return 404 After Launch

Symptom: you switched on URL Rewriting and now every page is a 404.

Fix: rename htaccess.txt to .htaccess (Apache) or add the try_files rule (NGINX). See section 2.2.

16.2 Every Page Has the Same Title or Description

Symptom: search results show the same snippet for many pages.

Fix: the site default is leaking through because individual pages have no value. Set a unique meta description and browser page title per important page.

16.3 The Wrong Page Ranks (Duplicate Content)

Symptom: Google indexes /component/content/article/42 instead of your clean URL.

Fix: give the content a real menu item so it has a stable route and canonical. Check the canonical tag after any menu change (section 5.4).

Symptom: you edited an alias for clarity and inbound links now 404.

Fix: create a 301 redirect from the old alias to the new one in com_redirect. Better still, decide the alias once and stop changing it.

16.5 robots.txt Used to Hide a Page

Symptom: a page you "blocked" in robots.txt still appears in search, sometimes with no snippet.

Fix: Disallow stops crawling, not indexing. To remove a page from results, set its robots meta tag to noindex and let crawlers reach it.

16.6 Noindex Left On After Launch

Symptom: a brand-new site gets no traffic and is not indexed at all.

Fix: check Global Configuration → Metadata → Robots. A development site is often set to noindex, nofollow and the switch is forgotten at go-live.

16.7 Orphan Pages and Broken Schema

Symptom: some pages never get indexed, or rich results never appear.

Fix: link every important page from at least one other page (section 7), and validate structured data with Google's Rich Results Test before relying on it.

16.8 Trusting an SEO Extension Blindly

Symptom: two extensions and the template all write an og:image, so the social preview is random.

Fix: pick one source for each tag. View the page source and confirm each SEO tag appears exactly once.

Back to top

17. Best Practices

If you only remember a few things from this article, remember these:

  • Turn on SEF URLs with URL Rewriting, and rename htaccess.txt to .htaccess.
  • Write a unique browser title and meta description for every important page.
  • Use one clear <h1> per page and an ordered heading structure below it.
  • Set the alias once; never rename it without a 301 redirect.
  • Link your pages together with descriptive anchor text, and publish breadcrumbs.
  • Use the robots meta tag, not robots.txt, to keep a page out of the index.
  • Fill in image alt text and ship right-sized, modern-format images.
  • Add an XML sitemap extension and connect Google Search Console.
  • Measure speed with PageSpeed Insights and chase the Core Web Vitals.
  • On multilingual sites, associate translations so hreflang works.
  • Show real authorship, keep the site updated and secure, and add FAQ schema for AI search.
  • Verify the final HTML: each SEO tag should appear once and only once.
Back to top

18. Quick Reference

SEF URLs       Global Configuration → Site → SEO Settings
URL REWRITE    rename htaccess.txt → .htaccess  (Apache)
TITLE PATTERN  Include Site Name in Page Titles: After Title
SITE META      Global Configuration → Site → Metadata Settings
PER ARTICLE    Articles → [item] → Publishing → Meta Description
PER MENU       Menus → [item] → Page Display + Metadata
ROBOTS META    index,follow / noindex,follow / ...
H1 / TITLE     one h1 per page; title can differ from heading
ALIAS          short, set once, 301 if changed
URL PATH       menu alias / category alias / article alias
CANONICAL      Joomla picks primary menu item; verify after changes
INTERNAL LINK  descriptive anchors + tags + Related module
BREADCRUMBS    Site Modules → Breadcrumbs + BreadcrumbList schema
IMAGES         alt text + resized + WebP/AVIF + lazy-load below fold
SCHEMA / OG    not core: template, plugin, or Custom Fields
ROBOTS.TXT     copy robots.txt.dist; blocks crawl, not index
SITEMAP        extension (OSMap / JSitemap) + Search Console
REDIRECTS      com_redirect, 301, enable System - Redirect plugin
SPEED          Page Cache + Gzip/Brotli + CDN + lean template + HTTP/2
MULTILINGUAL   associate translations → automatic hreflang
E-E-A-T        author pages + trust pages + updated dates
AI SEARCH      direct answers + FAQ schema + consistent entities
DEVELOPER      $doc->setMetaData() / setTitle() / addHeadLink()
DB FIELDS      #__content: metadesc, metakey, metadata
HEADLESS       API returns metadesc; front-end emits the tags
Back to top

19. Summary

Joomla SEO is less about secret tricks and more about using the controls that already ship in core. Without installing any 3rd party extension, you can already:

  • Shape clean URLs with the three SEO settings and a renamed .htaccess.
  • Control the snippet through per-page titles and meta descriptions.
  • Steer crawlers with the robots meta tag and a clean heading structure.
  • Avoid duplicate content with sensible menus, stable aliases, and canonicals.
  • Connect your pages with internal links, tags, and breadcrumbs.
  • Protect ranking through 301 redirects when URLs move.
  • Serve every language correctly with automatic hreflang from associations.
  • Build trust with real authorship, security, and content that shows experience.

Extensions add the pieces core leaves out - an XML sitemap, structured data, and Open Graph - but they sit on top of a foundation Joomla already gives you for free. Start with the core settings, verify the HTML they produce, and connect Google Search Console so you can see the result.

If your search traffic is flat, or a site move has scattered your rankings, it pays to check these core settings before buying another plugin. The fix is often a forgotten noindex, a missing .htaccess, or a duplicate canonical - small things in Joomla that make a large difference in search.

Back to top
SEO in Joomla
Peter Martin
Peter Martin

Joomla specialist and Linux admin for fast, secure and scalable websites.