Audit my site
ArchitectureIntermediateChecked against Google docs · Oct 2026

Internal linking and orphan pages: anchors, placement and fixes

Internal links are how Google finds most of your pages and learns what they are about. This lesson covers crawlable links, anchor text, where links belong, and how to find and fix pages nothing links to.

Author: Eugene Serbin, Head of SEO at Semalt Updated: 30 October 2026 Reading time: 18 min Visuals: 4

In short

Internal links are how Google finds most of the pages on your site and how it learns what each of them is about. Write descriptive anchor text, link from strong pages to the pages you care about, and make every link a plain <a href>. A page with no internal links pointing to it is an orphan page: find it by comparing your crawl with your sitemap, analytics and logs, then link it, merge it or remove it.

Why internal links matter

Internal links do three jobs at once. They help Google find pages, they tell Google what those pages are about, and they show which pages you consider important.

Discovery

Google's starter guide is direct: “Google primarily finds pages through links from other pages it already crawled.” It adds that “the vast majority of the new pages Google finds every day are through links”. A new page that nothing links to has to be found some other way, through the sitemap, an external link or a manual request, and it starts life without any context from your own site.

Context

The anchor text and the words around a link describe the target before anyone opens it. Google: “With appropriate anchor text, users and search engines can easily understand what your linked pages contain before they visit.” A link with the anchor trail running shoes says far more about https://example.com/shoes/trail/ than a link that says click here.

Importance

Google describes links as a signal, not just a path: “Google uses links as a signal when determining the relevancy of pages and to find new pages to crawl.” In practice, the pages you link to from your home page, your menu and many relevant articles are the ones you are telling Google matter most. Pages buried deep, with one weak link, are telling the opposite story. Keep this in proportion, though. Google also says: “We have many ranking signals, and PageRank is just one of those.” Internal links help good pages get found and understood; they do not rescue weak content.

Diagram · A small site's link graph with one orphan
Internal link graph with an orphan page The home page links to two hubs, /guides/ and /shoes/. Each hub links to its articles and products, and one contextual link connects /guides/care/ to /shoes/trail/. The page /old-sale/ has no internal links at all and is listed only in sitemap.xml, so a crawler starting at the home page never reaches it. / (home) /guides//shoes/ /guides/wax//guides/fit//guides/care/ /shoes/trail//shoes/road/ sitemap.xml /old-sale/ HUBHUB contextual link DISCOVERY ONLY ORPHAN reached only via sitemap
Every page except /old-sale/ can be reached by following links from the home page; the orphan is known only from the sitemap.

What Google officially says

“Every page you care about should have a link from at least one other page on your site.”

Google Search Central — Link best practices for Google

“Think about what other resources on your site could help your readers understand a given page on your site, and link to those pages in context.”

Google Search Central — Link best practices for Google

“If your site's pages are properly linked, Google can usually discover most of your site.”

Google Search Central — Learn about sitemaps. Google defines it: “Proper linking means that all pages that you deem important can be reached through some form of navigation, be that your site's menu or links that you placed on pages.”

Three more statements frame the whole lesson:

What makes a link crawlable

A link only helps if Google can read it. The rule is short: “Generally, Google can only crawl your link if it's an <a> HTML element (also known as anchor element) with an href attribute.” And the flip side: “Most links in other formats won't be parsed and extracted by Google's crawlers.”

JavaScript itself is not the problem. “Links are also crawlable when you use JavaScript to insert them into a page dynamically as long as it uses the HTML markup shown above.” The risk is links that exist only after a click, a scroll or a script event that Googlebot never triggers. Google's advice for script-inserted anchors: “If you are using JavaScript to insert anchor text, use the URL Inspection Tool to make sure it's present in the rendered HTML.” Rendering, raw versus rendered HTML and framework routers are covered in depth in the lesson "JavaScript SEO and rendering".

How to write anchor text

“Anchor text (also known as link text) is the visible text of a link.” Google's standard for it fits in one sentence: “Good anchor text is descriptive, reasonably concise, and relevant to the page that it's on and to the page it links to.” The examples below are Google's own, from its link best practices page.

Code · Anchor text, bad vs better (Google's examples)

✕ Bad

<!-- empty link text -->
<a href="https://example.com"></a>

<!-- too generic -->
<a href="https://example.com">Click here</a> to learn more.

<!-- empty alt on an image link -->
<a href="/add-to-cart.html"><img
  src="enchiladas-in-shopping-cart.jpg"
  alt=""/></a>

<!-- chained links -->
I've written about cheese
<a href="/page1">so</a> <a href="/page2">many</a>
<a href="/page3">times</a> …
  • Nothing for people or Google to read
  • "Click here" makes no sense on its own
  • Links run together, no surrounding text

✓ Better

<!-- descriptive -->
<a href="https://example.com/ghost-peppers">
  ghost peppers</a>

<!-- specific, in a sentence -->
For a full list of cheese available for
purchase, see the <a href="…">list of
cheese types</a>.

<!-- alt text works as anchor -->
<a href="/add-to-cart.html"><img
  src="enchiladas-in-shopping-cart.jpg"
  alt="add enchiladas to your cart"/></a>

<!-- links spaced out with context -->
… who can forget the <a href="/blue-cheese-vs-gorgonzola">
controversy over blue cheese and
gorgonzola</a>, the <a href="/worlds-oldest-brie">
world's oldest brie</a> …
  • Tells the reader what is behind the link
  • Makes sense when read out of context
  • Each link has its own words around it
All snippets are taken from Google's link best practices page; only the comments are ours.

The rules, one by one

Anchor variety in practice

Real sites link to one page from many places, so anchors naturally vary: trail running shoes, our trail shoe range, shoes for muddy trails. That is healthy. Two patterns are not. The first is the identical exact-match anchor on hundreds of links, usually from a plugin that auto-links keywords. The second is the same anchor pointing to two different pages, which blurs which page is meant to rank for that phrase. That second problem is a common cause of the issues described in the lesson "Keyword cannibalisation".

Types of internal links and where to place them

Not every link says the same thing. A link in the middle of a relevant paragraph is a recommendation; a link repeated on every page in the footer is part of the furniture. Both are useful, for different jobs.

Contextual links in the main content

These are the links Google's guidance is mostly about: links placed in the body text, with descriptive anchors and relevant words around them. They carry the most context about the target page, and they are the best way to connect related topics. Add them where a reader would actually want to go next, not in a block of "SEO links" at the bottom.

Navigation: main menu and breadcrumbs

The main menu links your key sections from every page, which keeps them shallow and well linked. Breadcrumbs link each page to its parents and make the hierarchy explicit. Because these links repeat sitewide, they say less about any single page than a contextual link does. Menu design and breadcrumb markup are covered in the lesson "Navigation and breadcrumbs".

Footer links

Use the footer for utility pages (contact, delivery, privacy, terms) and a handful of top sections. A footer with dozens of keyword-rich links to city or product pages adds clutter and little context, and it is a pattern many sites have cut back for good reason.

Related-content modules

Related posts, related products and "more in this category" blocks are the most scalable way to make sure every page receives links. Two conditions make them work. Pick the related items by topic or category, not at random or by date only. And output them as real <a href> links in the HTML, not as a widget that loads on scroll or after a click.

Hub and category pages

A hub page lists and links all the pages on one topic, and each of those pages links back to the hub. This gives every child page at least one strong, relevant inbound link and keeps it a short click path from the home page. How to plan hubs from your keyword research is the subject of the lesson "Structure from keywords: hubs and depth".

Pagination

On blogs and category listings, older items are often linked only from page 2, 3 and beyond. Use normal <a href> links to each page of the series. Google no longer uses rel="prev" and rel="next", so those attributes do not replace real links. Details are in the lesson "Pagination and faceted navigation".

Cheat sheet · Where to place internal links
Link typeWhereBest forWatch out for
ContextualBody text of articles and pagesContext, topical connections, pushing new pagesGeneric anchors, chained links, forced links
Main menuHeader, every pageTop sections and money pagesMega-menus with hundreds of links; JS-only menus
BreadcrumbsAbove the contentHierarchy, links up to parentsBreadcrumbs that skip levels or point to redirects
FooterBottom, every pageUtility pages, a few key sectionsKeyword-stuffed link dumps
Related contentEnd of posts, product pagesGiving every page inbound links at scaleRandom picks; links loaded only on scroll or click
Hub / categorySection landing pagesGrouping a topic, short paths to childrenHubs that list only the newest items
PaginationBottom of listingsReaching older items"Load more" buttons with no href
XML sitemapSeparate fileDiscovery hint, not a linkTreating it as a substitute for linking
Use contextual links for meaning, navigation for structure, and the sitemap only as a backup for discovery.

How many internal links a page should have

There is no quota. Google: “There's no magical ideal number of links a given page should contain.” It follows with a practical test: “However, if you think it's too much, then it probably is.”

In practice, ask what the reader needs. A long guide can carry many contextual links because it covers many subtopics. A product page needs links to its category, a few related products and the key help pages. If a page lists hundreds of links in its navigation, readers struggle to find anything and each link says little. Do not add links to "pass value", and do not strip useful links to "keep value". Link where it helps someone understand or act.

Linking from strong pages to new and important pages

Some pages on your site are much better placed to pass discovery and context than others. Typically these are:

When you publish or upgrade a page that matters, link to it from those pages, not only from a new blog post that nobody has found yet. A simple routine for every new page:

  1. Add it to its hub or category. This gives it a permanent, relevant parent link.
  2. Link to it from a few existing pages on the same topic, ideally ones that already get traffic or links, with descriptive anchors.
  3. Link out from it to its hub and related pages, so it is part of the cluster rather than a dead end.
  4. Add it to the XML sitemap with an accurate lastmod. The lesson "XML sitemaps" covers the details.

Also watch click depth, the number of clicks from the home page to a page. Keep important pages a few clicks away. Pages that sit many clicks deep, reachable only through long pagination, tend to be crawled less often and found later. Google publishes no exact limit, so treat depth as a relative signal: if your priority pages are deeper than your tag archives, fix the structure.

Orphan pages: what they are and why they happen

An orphan page is a URL that works (it returns 200) but has no internal links pointing to it from any crawlable page. A crawler that starts at the home page and follows links will never reach it. Google may still know the URL from your sitemap, an external link or an earlier crawl, but the page gets no internal anchor text, no context from related pages, and none of the importance that links from your strong pages would give it.

Google's own wording explains why large sites are prone to this: “Generally, on large sites it's more difficult to make sure that every page is linked by at least one other page on the site.” Typical causes:

Why the sitemap does not fix it

Listing an orphan in your sitemap helps Google discover the URL. That is all. Google says “A sitemap tells search engines which pages and files you think are important in your site”, but also that it “doesn't guarantee that all the items in your sitemap will be crawled and indexed.” A sitemap carries no anchor text and no context, and a page you call important in the sitemap while linking to it from nowhere sends mixed signals. The sitemap is a backup for discovery, not a replacement for links.

How to find orphan pages

You cannot find an orphan by crawling alone, because a crawler following links will never reach it. You find orphans by comparing the URLs your crawler found with URLs you know exist from other sources.

Workflow · Finding orphan pages by comparing URL sources
Orphan detection workflow URLs from the XML sitemap, from analytics and Search Console landing pages, and from server logs are combined into one list of known URLs. The URLs found by a crawl from the home page are subtracted. What remains are orphan candidates, which are then filtered to drop non-200, noindex, redirected and parameter URLs, leaving real orphans. XML sitemapevery URL you list Analytics + Search Consolelanding pages with visits Server logsURLs Googlebot requests All known URLsunion of sources Minus crawl URLsset difference Crawl from homelinks followed only Orphancandidates drop non-200,noindex, params Real orphans orphans = (sitemap ∪ analytics ∪ logs) − crawl
Any URL that appears in another source but was never reached by following links is an orphan candidate; filter before acting.
  1. Crawl from the home page. Use a crawler that follows links only, with rendering on if your site relies on JavaScript. Do not feed it the sitemap, or it will "find" orphans and hide the problem. Export every URL it reached.
  2. Export your XML sitemap URLs. Include every child sitemap of the index file.
  3. Export landing pages from your analytics and from the Search Console Performance report (Pages tab) for a long period, so pages with occasional traffic are included.
  4. Extract URLs from server logs that Googlebot or users requested. Logs often reveal old URLs Google still crawls that no list contains. How to collect and parse logs is covered in the lesson "Server log analysis".
  5. Compare. Normalise the URLs first (protocol, host, trailing slash, lowercase if your site is case-insensitive), then take everything in steps 2–4 that is not in step 1.
  6. Filter. Remove URLs that redirect, return 404 or 410, carry noindex, canonicalise elsewhere or are just parameter variants. What remains are real orphans.

A note on crawl size: if your crawl was capped and stopped before the end of the site, pages it did not reach will look like orphans. Only trust the comparison when the crawl covered the whole site, or limit it to the sections the crawl finished.

How to fix orphan pages

Not every orphan deserves a link. Decide page by page:

Link it

The page is useful and should rank. Add it to its hub or category, and add contextual links from related pages with descriptive anchors.

Merge it

It overlaps a stronger page. Move any unique content into that page and 301-redirect the orphan to it.

Remove it

It is obsolete or empty. Return 404 or 410 and take it out of the sitemap.

Leave it unlinked

It must exist but not appear in search, such as an ad landing page. Add noindex and drop it from the sitemap.

After fixing, re-run the comparison. Then stop orphans coming back: make templates add new pages to their category automatically, keep related-content modules on, and review internal links as part of every redesign or migration. Redirect mapping during a move is covered in the lesson "Redirects and site migrations".

Check the internal links on your site

OurSEO Tools runs a 69-point checklist that includes internal linking, plus a technical crawl of up to 1,000 pages with status code, canonical and indexability per URL, so broken and redirected link targets show up in one run.

69-point checklistTechnical crawlContent analysis

Common mistakes

Internal link audit step by step

  1. Crawl the whole site from the home page, following links only, with JavaScript rendering if needed.
  2. Export all internal links with source URL, target URL, anchor text, status code of the target and any rel value.
  3. Fix links to 3xx and 4xx targets. Point them at the final 200 URL, or remove them.
  4. Fix links to non-canonical targets: parameters, tracking tags, the wrong host or protocol.
  5. Count inbound internal links per page. Pages with zero or one link that you care about need more, ideally from hubs and pages with traffic.
  6. Check click depth of your priority pages and bring the deep ones closer through hubs and contextual links.
  7. Review anchors: empty links, image links with empty alt, generic text, and the same anchor pointing to different pages.
  8. Find and fix orphans with the sitemap, analytics and log comparison above.
  9. Remove internal nofollow unless there is a specific reason for it.
  10. Spot-check rendered HTML in URL Inspection for templates whose links are inserted by JavaScript.
  11. Re-crawl to confirm the fixes, and repeat after every redesign, migration or large content release.

FAQ

Is a page in the sitemap but with no internal links still an orphan?

Yes. Google can discover it from the sitemap, but it gets no internal anchor text or context, and Google says a sitemap “doesn't guarantee that all the items in your sitemap will be crawled and indexed.” Link to it or decide it should not exist.

Should I use nofollow on internal links?

Almost never. It does not move value to other pages, and it can stop Google from discovering pages through those links. Use noindex or robots.txt for pages you want out of search or out of the crawl.

How many internal links per page is too many?

There is no fixed number. Google says “There's no magical ideal number of links a given page should contain.” If a reader could not realistically use the links, there are too many.

Do links in the menu and footer count?

Yes, they are normal links that Google can crawl. They mostly help discovery and structure; contextual links in the body text add more specific context about the target.

Can I use the same anchor text for every link to a page?

You can, but natural variation is normal and safer. What to avoid is stuffing keywords into anchors and using one anchor for two different pages.

Are JavaScript links bad for SEO?

No, as long as the result is an <a> element with an href in the rendered HTML. Links that only exist as click handlers or appear after user interaction are the problem.

Sources

Quotes checked against the official pages on 30 October 2026.