Joomla SEO: Basics & Checklist
I know there is a lot of information on my site, and I can imagine that this may be a bit too much for beginners, or you need a shorter checklist to see whether you have covered all steps. For those, I wrote this article. It only contains the basic steps to optimize your Joomla website for SEO. It is set up as practical as possible. Note that this article is mainly aimed at setting up a fresh site. For existing sites, you should also be careful not to change your URLs, which is what happens with some of the steps I describe. So, let's jump straight in. Note that the articles on this site are written for Joomla 4!
Contents
Prerequisites
Before you start configuring and filling your site with content, there are some basic pre-requisites that should be met:
- Make sure you have a reliable webhost with good performance (I use and can recommend Siteground).
- Make sure you have a fast template. If you are skilled in HTML and CSS, you can build a light one yourself. Otherwise, look for a supplier that provides good ones. I personally use Yootheme Pro templates, as they are fast out of the box, plus they provide some advanced options you can switch on as well.
- Make sure you know your visitors and what they are looking for. Also make sure to use the keywords that they will be looking for (read more here).
- Write great content. A very important rule is to write for your visitors, not for Google! Otherwise you end up with garbage content that users will turn away from. Use your keywords, but don't over-do it, avoid keyword-stuffing.
About visibility in Google
One thing you should understand: we want to rank high, but we also want people to click on our links in the Google result pages. For this, we need to make sure our snippets in Google look well. The snippet usually consists of three items. The URL (which is usually fine as it is), followed by the Page title (1) and the Meta description (2), as they will appear in Google:
You can easily understand how the eyes of visitors inside Google capture your snippet much easier if the items read well and contain your keywords. This can sometimes lead to more clicks than the item ranked above you, if done well! How this is achieved in Joomla is something I will talk about.
Joomla Global Configuration
After initially installing Joomla (or at any stage when you need to correct things), we need to make sure the global settings are set correctly. Note that this should really be done as soon as possible. If you do this at a later stage, note that your URLs might change, and Google does not like that (unless you cater for this).
One thing that you should do first is to go to the file-system of your Joomla installation and look up a file called htaccess.txt. Then you should rename it to .htaccess. This is a pre-requisite for the next step.
Then the Global Configuration screen, and fill in the required parameters. I only indicate stuff that might need changing. If the default is fine, I will not discuss it in this article.
- Review your Site Name. Make sure it is short but relevant
- Site Meta Description Contrary yo what is often said, I urge you to leave it empty, to prevent the risk of duplicate metadescriptions
- Robots: for live sites, this should be absolutely set to Index, follow. On development sites, you may deviate, but make sure to set it back once the site goes live!
- Use URL Rewriting: Set it to Yes. This ensures the index.php string is removed from your URL's.
- Site Name in Page Titles: Often a good idea (not always). Doing so prepends or appends the Site Name to you Page Titles.
Next, go to the System and Server tabs for some performance options. Note that you only should do this if no caching options are set at the server or hosting level. Set Cache to On – Conservative caching: and set Gzip Page Compression to Yes.
URL Routing
A bit hidden are the options for URL Routing. This sounds complicated, but just follow along: for new sites the described settings are best for clean URLs. In Joomla 4, your initial settings may already be fine, but make sure to check anyhow, as these are extremely important settings:
Go to the Articles overview and click on the Options button (upper right). In the Integration tab, you will see an option called Remove IDs from URLs. Set it to Yes:
Should you still run a Joomla 3 site, you may also see a setting called URL Routing. By default, it is set to Legacy. Set it to Modern.
Article headings (<h1>'s)
Now, prepare your site for correct article headings (meaning the H1, H2 tags, etc in HTML). Your goal is to make sure that every page contains a correct H1-heading (only 1), corresponding to your main message for this page. In most cases, this will be the title of the Joomla article. You can achieve this by:
- Creating a template override. This is often the best option, but it's a bit technical.
- Use an extension to set the correct headings
- Play with the article options, by switching off the display of the article title in the article options, and by typing in an H1 in the article editor.
- Use the Page Display options in the menu-item for the article to set a correct Page Heading (article title should again be switched off)
If all this sounds to complicated, just skip it. This something that can be corrected at any time, without issues.
Apart from correct headings, also make sure to use valid and clean HTML in your site, with correct use of paragraph tags, list tags, etcera.
Metadata for individual articles
At this stage, your default global settings should be fine, and it's time to worry about your individual articles. Let's first look at metadata. Usually, when we talk about basic metadata, we talk about these 3:
- Page title: This is the <title> element in HTML (used for the first line for the snippet of your site in the Google search results). It is usually made up of either the article or menu-item title, possible preceded or appended with the Site Name (if switched on). Make sure the combined length is under 65 characters, while still being as relevant as possible. More information can be found here.
- Meta description: (used for the 2 lines of description for your site in the Google search results): This can be either filled in in article or menu-item, but preferably do it on article level. Maximum length is around 160 characters. Make sure you don't use both, risking article-settings being overridden by Menu-item settings. Only for stuff like blog- or list-views fill in the menu-item meta description. Basically: make sure every URL has a correct meta description. More information can be found here.
- Meta Keywords: Do not use, Google totally ignores it.
You can set your meta description in each article (under the Publishing tab), but you also find the same settings in menu-items (Metadata tab). Note that metadata set in the menu-item override the metadata set in the article. I usually advise to set metadata in the articles:
In many cases, the page title of an article is generated automatically, based on the Site Name and the title of the article. However, sometimes, you need to tune it manually. Then, you can use the Browser Page Title field, which is hidden at the bottom of the article's Options tab:
Using an SEO extension like 4SEO or OSmeta can help you to keep an overview and make further customizations.
Images
Every image should be optimized for both SEO and performance. It already starts when you create the image on your PC: Make sure you give it a file name that is relevant for the image. If it is an image of a bird, name it bird.jpg, etc. Secondly, make sure you make it as light as possible. An image quality of 60% is often good enough for the web, and it can save you many kB's. Also, crop it to the exact size you will use it for. Also, there are dozens of optimization techniques you can use to save further kB's (Smush.it, responsive images, bas64-encoding, etc.).
Then, while adding it to your Joomla article, make sure you add an alternative description for the image. Use the relevant field for this in the TnyMCE editor:
If the filename is already relevant, you may use the JCE-editor, which simply takes the filename (without the extension), and uses it as the alt-text. In HTML view, this should result in something like this:
<img src="/images/image-xxx.jpg" alt="alternative description here">
Note that Google recommends adding the width and height attributes for the image, so make sure to add these too. JCE can automate this for you while adding the image.
<img src="/images/image-xxx.jpg" alt="alternative description here" widht="1000", height="750">
There is a lot more to say about images, read about it here.
Build a nice structure
Make sure you build a proper and logical structure, especially if you have a larger site. Subdivide your articles in categories and also make sure to properly open up these categories in the menu-structure. As an example, here on this site, I have categories for SEO, Speed, Extensions and Blog, and all are collected in a separate menu-item. It sounds so simple, but a proper structure is really the foundation for proper SEO.
Read more about proper structuring here.
Robots.txt file
This file helps Google and other search engines to understand the nature and content of your site. Robots.txt is provided by Joomla, but you may want to check whether it contains the correct values. For older sites, they may contain the following lines:
Disallow: /images/
Disallow: /media/
Disallow: /templates/
This blocks access for Google to folders that are relevant for understanding your site. With new Joomla installs, these lines are no longer active, but if you have an older site, make sure to remove the lines for images, media and templates.
For new installs with Joomla 4, don't worry, the file is fine as it is and you don't have to touch it.
Sitemap
Then Sitemaps. These help Google in indexing your site. Best is to use an extension for this. OSmap is perfect for beginners and it is free and simple. Just install it and look up the URL for your sitemap: Go to Components >> OSmap and lick on the word XML:
The actual sitemap will open up. Copy the URL from your browser and rememeber it for Google Search Console (see lower down this page). More advanced users may need better sitemap extensions, like 4SEO or Jsitemap.
Avoid duplicate content issues
Duplicate content can be a real killer for your SEO efforts. Especially avoid linking the same article to multiple menu-items.
Also something that can often be fixed quite easily, is to avoid access to both the www and non-www version of your website. Using some simple rules in your .htaccess file can easily fix this, making only one of those accessible, and routing traffic from the non-preferred to the preferred one. And, if you SSL, amke sure to enforce the https version.
Other means of avoiding duplicate content can be achieved with further .htaccess tricks and use of canonical URLs. Often this is stuff for advanced users. I see many beginners trying to use these, often doing more harm then good!
More to read about this can be found here.
404 errors and pages
Avoid changing URLs in your website. If you rename an article or a menu-item, make sure to retain the alias, as otherwise your URL will change. If you do have to change this, make sure you create a so-called 301-redirect that leads the old URL to the new one. You can use the Joomla core Redirect Manager for this.
Also make your template displays a nice-looking errorpage to your users instead of the ugly default Joomla error page.
More about 404's can be found here..
Leverage Browser caching for faster loading
This technique is a very simple way to enhance the performance of your site. Simply add some code to the .htaccess file of your website and any user who has once visited your site will have a much faster pageload on subsequent pages and visits. Also, this technique has hardly any serious drawbacks. Note this is a simple version, extend it as needed:
<IfModule mod_expires.c>
expiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 600 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 216000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
</IfModule>
If you use Akeeba AdminTools, you can use the .htaccess-maker and simply tick the box for "Set a long expiration time for static media ".
Further optimization of your website loading time should be attempted if possible. Again: there are numerous techniques, check the performance section of this site (especially about optimizing CSS and Javascript). Also pay attention to mobile performance.
Google Search Console
SEO is often a process of many small steps and optimizations, and there are many more steps to take, but for this I advise you to read the other SEO articles on my site, or read my book. However. One last step I definitely advise you to take is to register your site with Google Search Console. The process is pretty easy to do, and Google will instruct you of the steps to take. Especially with new sites, registering them speeds up the indexing of your site a lot! The one task within the tool you should absolutely perform is to submit the URL of your sitemap.
Read more about Google Search Console here.