Canonical URL field missing in back-end

Common problems:

Problem Solution
The Custom Canonical plugin is not Installed. Install Custom Canonical.
The plugin is not Enabled. Enable the plugin.
The plugin access is not set to Public. Set the plugin access to Public.
The content type is not enabled in Custom Canonical. Set the content type to On.

Canonical link missing on front-end

Common problems:

Problem Solution
The plugin is missing proper permissions. See section Canonical URL field missing.
The Canonical URL field is empty. Enter your custom canonical URL.
Another extension is overriding Custom Canonical. Check installed components, plugins, and template to verify they are not overriding the canonical tag. More info here.

Wrong canonical link served on front-end

Common problems:

Problem Solution
The plugin is missing proper permissions. See section Canonical URL field missing.
The Canonical URL field is empty. Enter your custom canonical URL.
Another extension is overriding Custom Canonical. Check installed components, plugins, and template to verify they are not overriding the canonical tag. More info here.
Menu item canonical tag served on child item Child item missing canonical tag. Read Canonical Tags Hierarchy.
Joomla core is creating the canonical tag Set Remove Default Canonical Tags to On.

There are two canonical links served on the front-end

Common problems:

Problem Solution
Another extension is setting a canonical tag. Check installed components, plugins, and template to verify they are not inserting a canonical tag. More info here.
You are using a Helix Ultimate template. Check your templates index.php file for canonical tag code. More info here.
Joomla core is creating the canonical tag Set Remove Default Canonical Tags to On.

It's your extensions' fault

From time to time Joomla extension developers who do not understand SEO will write canonical tag "solutions". A great example of this is JoomlShaper's Helix Ultimate canonical URL mess. Some well-meaning developer put the following code in the template's index.php file.

<link rel="canonical" href="/<?php echo JUri::current(); ?>">

I informed them of the issue and they "fixed" it with the following "solution".

<link rel="canonical" href="/<?php echo JUri::getInstance()->toString(); ?>">

If you know a little bit about SEO and Joomla development, you know both of these are equally broken! As of writing this, it is still broken.

I have seen other canonical tag fiascos, but this is the most infuriating.

Search your site files for 'canonical'

Fortunately, the word "canonical" is not used very often in the Joomla core. You will find it in the SEF plugin and third-party extensions.

A quick query of your sites' files for "canonical" will give you a good idea of where the problem is coming from. When I troubleshoot this issue on a site I usualy use a remote command line or download a copy of the site to my local machine and search that.

Depending on what page the issue is on you can quickly sift through the search results and find the culprit.