Joomla SEO checklist for 2026
Twenty checks for a Joomla site before launch or in an audit, covering crawling, structured data, social previews, analytics and AI search.
How to use this list
SEO is cheaper to set up before launch than to repair after it. Once Google has crawled the wrong version of your pages, you wait for it to come back before a fix counts. Work through these twenty checks before you go live, or use them to audit a site that is already running.
Crawling and indexing
1. Check robots.txt
Open yoursite.com/robots.txt. The robots.txt that Joomla ships blocks the administrator area and system folders such as /cache/ and /tmp/, which is fine. Make sure nothing in it blocks the pages you want found, and that it has a Sitemap: line with your sitemap's full address.
2. Submit your sitemap to Google Search Console
Joomla does not make a sitemap on its own, so you need an extension for one. Once it exists, open Sitemaps in Search Console and submit the address. Google then reports how many of the listed pages it has indexed, and which ones it has trouble with.
3. Do the same in Bing Webmaster Tools
Bing keeps its own index, and Microsoft Copilot draws on it. Bing Webmaster Tools can import a site you have already verified in Google Search Console, which saves most of the setup.
4. Check canonical tags
View the source of a few pages and look for <link rel="canonical">. Joomla can reach one article at several addresses, through a menu item, through a category listing, and with or without query parameters. The canonical tag names the one address search engines should count.
5. Check for a stray noindex
Search the source of your home page for noindex. A site launched with the staging setting still on is more common than it should be. In Joomla the site-wide value is the Robots setting under Metadata in Global Configuration, and each article and menu item can override it.
6. Check page speed
Run your home page and a typical article through PageSpeed Insights. Google's thresholds for a good Core Web Vitals score are a Largest Contentful Paint under 2.5 seconds, an Interaction to Next Paint under 200 ms and a Cumulative Layout Shift under 0.1. Google says a good score aligns with what its core ranking systems seek to reward, though a fast page that answers the question badly still loses to a slower one that answers it well.
Structured data
7. Describe the business
Your site should carry Schema.org markup for the business behind it. That is Organization for most sites, or LocalBusiness or one of its subtypes if customers visit you. Give it the name, logo, contact details and sameAs links to your social profiles. A business with premises adds its address, opening hours and coordinates.
8. Mark up your articles
Article pages should carry Article or BlogPosting with headline, author as a Person, datePublished, dateModified and image. Change dateModified only when the content has actually changed.
9. Mark up questions and answers
A page with a real question and answer section can carry FAQPage. Google retired the FAQ rich result for almost all sites in 2023 and stopped showing it for the rest on 7 May 2026, so do this because it states the questions and answers plainly for any machine that reads the page, not for a bigger search listing.
10. Validate the markup
Test a few pages in Google's Rich Results Test at search.google.com/test/rich-results for the types Google supports, and in the Schema Markup Validator at validator.schema.org for everything else. Fix missing required fields first.
AI search
11. Decide which AI crawlers may visit
Rules in robots.txt apply per crawler, and the large AI companies run more than one. OpenAI's GPTBot collects training data. OAI-SearchBot is what ChatGPT search uses, and ChatGPT-User fetches a page when a person asks ChatGPT about it. Blocking GPTBot keeps your pages out of training and leaves you in ChatGPT search. Google-Extended works the same way on Google's side. Blocking it opts you out of Gemini training and has no effect on Google Search. Whatever you decide, check that a broad Disallow line written years ago is not blocking crawlers you want.
12. Publish llms.txt, and expect little
llms.txt is a proposed plain-text file at your site root that summarises the site for language models. Google has said it does not use it. It costs little to publish, so publish it, and put your effort into the other items first.
13. Set up IndexNow
IndexNow lets you tell the search engines that take part the moment a page is published or changed, instead of waiting for their next crawl. Bing, Yandex and Seznam take part. Google does not.
Social previews
14. Add OpenGraph tags
Every page needs og:title, og:description, og:image and og:url. Make the image 1200×630 pixels. Without these tags, Facebook, LinkedIn and messaging apps build the preview from whatever they can scrape.
15. Add Twitter Card tags
Add twitter:card, with summary_large_image for pages that have a good picture. X falls back to the OpenGraph tags for the title, description and image, so the card type is the one tag you cannot skip.
16. Check a real article's preview
Test a blog article, not the home page, and confirm it shows its own image rather than the site-wide default. Facebook's Sharing Debugger and LinkedIn's Post Inspector show what each of them sees, and refresh their copy.
Ownership and measurement
17. Verify the site in Search Console and Bing
The HTML meta tag method is the quickest on Joomla. Keep in mind that the tag has to stay on the page. If it lives in your template and you change templates, the verification goes with it. DNS verification takes longer to set up and survives any template change.
18. Install analytics
Set up a GA4 property and add its tag directly or through Google Tag Manager. Open the Realtime report and load a page to confirm the visit arrives. If you have visitors in the EU or the UK, analytics cookies need their consent first.
Content
19. Write meta descriptions for the pages that matter
Google does not use the meta description for ranking and often writes its own snippet instead. When your description fits the query, though, it is what people read under your title. Write one for the home page, the main category pages and your best articles, at roughly 150 to 160 characters.
20. Add hreflang if the site has more than one language
Every language version must list every other version, itself included, plus an x-default. Joomla's Language Filter plugin can write these links for pages you have linked as translations through associations.
What AI Boost for Joomla covers
AI Boost for Joomla takes care of part of this list, each part once you switch it on.
- For items 1 and 11, it adds its own block of crawler rules to your robots.txt and leaves your own lines alone. You allow or block 25 AI crawlers one by one, and the block carries a
Sitemap:line while the sitemap is on. - For items 2 and 3, it publishes the sitemap. Submitting it stays with you.
- For item 4, it writes canonical tags.
- For item 5, it writes a noindex robots tag on search results pages, tag pages and any address you list. A stray noindex set elsewhere in Joomla is still yours to find.
- For items 7 to 9, it writes the Schema.org structured data, including
FAQPagebuilt from the question headings it finds on your pages, and, with the YOOtheme extension, from a YOOtheme accordion whose every title is a question. Validating, item 10, stays with you. - For items 12 and 13, it publishes llms.txt and sends an IndexNow notice when you save an article or change whether it is published.
- For items 14 to 16, it writes OpenGraph and Twitter Card tags, with overrides per article and per category.
- For item 17, it writes the verification meta tags for Google, Bing and Meta.
- For item 18, it adds GA4, Google Tag Manager and the Meta Pixel.
- For item 19, it fills in meta descriptions from templates you write for each type of page.
It does nothing for page speed, item 6, and leaves hreflang, item 20, to the Multilang extension, included in every plan. Once you switch Multilang on, it writes the links. While it is off, Joomla's own Language Filter plugin can write them.