Alternate page with proper canonical tag
Nothing to doGoogle found an alternate of a page it has already indexed, and your canonical points at that page.
Nothing. Google says so in the report itself.
It sits in the table headed “Why pages aren’t indexed”, which is why people arrive looking for a fix. Google’s own description of the status ends with the words “there is nothing you need to do”.
The question worth answering first is whether this is the row you are actually looking at. Three other rows in the same report look much the same in a list of counts, and two of them ask you to make a decision.
This page is marked as an alternate of another page (that is, an AMP page with a desktop canonical, or a mobile version of a desktop canonical, or the desktop version of a mobile canonical). This page correctly points to the canonical page, which is indexed, so there is nothing you need to do. Alternate language pages are not detected by Search Console.
Most of the work in that paragraph is done by its list and its last sentence. The list says what counts as an alternate: an AMP page, a mobile version of a desktop page, or a desktop version of a mobile page. Nothing else is named.
Then the last sentence. If you run a site in several languages and expected your hreflang set to show up here, it will not: Search Console does not detect alternate language pages at all. Whatever is in this row on a multi-language site is one of the three kinds above, or the row you are reading is a different one.
Open the Page indexing report, read the exact wording of the row, and find it here. The column that matters is the last one.
Google found an alternate of a page it has already indexed, and your canonical points at that page.
Nothing. Google says so in the report itself.
The page is a duplicate of another and names no canonical, so Google chose the other page as canonical.
Google calls this working as intended. If it chose the wrong page, mark the canonical yourself. If it chose the right one, adding that canonical anyway turns its guess into your stated choice.
You named a canonical and Google picked a different URL.
Inspect the URL, compare your canonical with the one Google selected, and look at all three pages. Google gives the reason in the report: it thinks this page is not a duplicate of the canonical you declared.
The URL redirects somewhere else, so this one will not be indexed.
Nothing, if the redirect is intended. The target may be indexed on its own.
The report has a column for this too. “The Source value in the table shows whether the source of the issue is Google or the website.” The same page adds that, in general, you can fix only the rows whose source is Website.
If a URL in the “Page with redirect” row is one you redirected yourself, the status code you chose tells Google whether the move is permanent, and the guide to 301 vs 302 redirects lists which codes Google treats as permanent and which as temporary.
A shop with a separate mobile URL for every product page can see one of these for every product. The number tracks how many alternates your site has, so it grows with the catalogue and says nothing about quality. Google puts it plainly:
Having a page marked duplicate or alternate is usually a good thing; it means that we've found the canonical page and indexed it.
The same page lists full coverage under what not to look for: “You should not expect all URLs on your site to be indexed, only the canonical pages, as described above.” A site where every URL is indexed is a site with no alternates and no duplicates, which almost nothing real is.
What would be worth acting on is the canonical target being wrong. That is a different row, and the guide to canonical tags for duplicate content has the decision table for choosing one.
Google ignores a canonical that carries attributes describing an alternate version:
rel="canonical" annotations that suggest alternate versions of a page are ignored; specifically, rel="canonical" annotations with hreflang, lang, media, and type attributes are not used for canonicalization.
So a link element that tries to be a canonical and an hreflang at once is not used as a canonical. If the page declares no other, it has no canonical Google will use, and a duplicate with no declared canonical belongs in the duplicate row. Nothing in a count of rows shows that this is why. Use link rel="alternate" with hreflang for languages and a separate plain canonical, as canonical vs hreflang sets out.
Which canonical Google selected is only in Search Console. Which canonical you declared is in the page, and you can read it without signing in to anything. Paste the page source into the canonical tag checker and it finds every canonical in the markup, resolves relative ones, and says when two of them disagree.
ShownTrue does the same thing across a whole site: every page a crawl fetches has its canonical recorded, so the declared half of this question is answered for every URL at once rather than one at a time.
Its honest state: the crawl reads and stores canonicals, and that is the part this page is about. It does not read the Page indexing report, so it cannot tell you which canonical Google selected. The capability page says exactly what is built.