Free Tool

Check the internal links on one page

Enter a URL or paste HTML. We list every internal link on that one page with its anchor text, and flag empty anchors, generic text like "click here" and links Google may not crawl, using Google's link guidelines. It checks one page. It does not crawl your site.

Free. No sign-up. We read the HTML the server sends for this one page. JavaScript is not run and the links are not opened.

See the page as AI crawlers read it

The AI page reader in the AY Rank app shows the main text, headings, lists and tables as Markdown, without running JavaScript.

Open the AI page reader

Check that the links work

Our broken link checker opens every link on a page, up to 100, and shows its status code, with broken links listed first.

Open the broken link checker
1

Read the page

One GET to the URL, following up to 5 redirects, 6 seconds per request and a 2 MB read cap. The links are listed, not opened. Or paste the HTML, which never leaves your browser.

2

Sort the links

Each link is resolved against the page URL or its base href. Links to the same site, subdomains included, are internal. We note where each one sits: main content, nav, header, footer or aside.

3

Read each anchor

The anchor text is the link's own text, else image alt text, else aria-label, else title. Then come the flags: empty, generic, nofollow, a link to this page, and one target with different anchor texts.

4

Fix the errors first

Errors and warnings come first, grouped by target URL. Filter to problems only and copy the list as a table for your team.

Google says it "uses links as a signal when determining the relevancy of pages and to find new pages to crawl." Its link guide adds that anchor text "tells people and Google something about the page you're linking to." Internal links are the ones you control. This tool shows them for one page, so you can fix empty and vague anchors and links Google cannot follow.

What the checker reads, and what it does not

  1. We read one page: the HTML the server sends. This is not a site crawl, so it cannot find orphan pages or count the links that point to a page. JavaScript is not run, so links added by JavaScript are missing.
  2. A link is internal when its host is on the same site as the page: www, the bare domain and subdomains like blog. all count. Links to a #fragment of this page, mailto and tel links are counted, not listed. Where a link sits follows the HTML: a header or footer inside main, article, aside, nav or section belongs to that section, so a site menu placed inside main counts as main content.
  3. The anchor text is the link's own text, else the alt text of an image in it, else an aria-label, else the title attribute. Google says it uses image alt as the anchor text of an image link and can use title when a link is empty. Google's page does not mention aria-label. We count it because screen readers read it. Text in an inline svg title is not read.
  4. An internal link with none of those is an error. Google's link guide lists ⁦<a ⁦href="https://example.com"⁩></a>⁩ as "Bad (empty link text)".
  5. Anchor text that is only "click here", "read more", "website" or "article" (Google's own examples) or here, click, more, learn more, this, link, this link, page or this page is a warning. Case and punctuation are ignored. Longer text that contains these words is fine. English only.
  6. Not crawlable is a warning: an a tag with no href but an onclick or router attribute, an href that starts with ⁦javascript:⁩, an empty href or ⁦href="#"⁩, an href that is not a valid URL, href on a tag that is not a, and onclick with a URL on another tag. Google says "Most links in other formats won't be parsed and extracted by Google's crawlers." You can ignore a ⁦href="#"⁩ link that only scrolls back to the top.
  7. ⁦rel="nofollow"⁩ on an internal link is a note. Google's rel guide says "For links within your own site, use the robots.txt disallow rule." rel values may be split by spaces or commas. sponsored and ugc are shown, not flagged.
  8. A link to the page itself (same address, a trailing slash ignored) is a note. One target linked with different anchor texts is a note too, so you can compare them. There is no score and no target link count. Google says "There's no magical ideal number of links a given page should contain."
  9. Limits: 2 MB read, 6 seconds per request, 20 seconds per check, 5 redirects, 1000 internal links listed. Private and local addresses are refused, and each redirect is checked again. The API at /api/v1/internal-link-checker allows 30 checks per 60 seconds per IP address. The spec is at /openapi.json.

Sources

Read on 2026-11-12.

Worked example: one of our blog posts

We ran it on 2026-11-12 on our blog post about AI training and AI grounding. The page has 77 links with an href: 63 internal links to 34 different pages, and 14 external links. 18 internal links sit in the main content, 18 in the site header, 24 in the footer, 2 in an aside and 1 outside all of those. There were no errors or warnings: no empty or generic anchors, nothing Google may not crawl and no internal nofollow. The tool gave 9 notes for pages linked with different anchor texts. Our booking page /book is linked 8 times with 6 texts, such as "Free AI Audit" and "book a call". On our homepage, all 52 internal links count as main content, because the site header and footer sit inside the main element there.

Frequently Asked Questions

How do I check the internal links on a page?

Enter the page URL above or paste its HTML. The tool lists every internal link with its anchor text and where it sits, grouped by target, and flags empty anchors, generic text and links Google may not crawl.

Does this check my whole site?

No. It reads one page at a time. To find orphan pages or count the links that point to a page, you need a tool that crawls the whole site. Use this one to check the anchors on the pages that matter most.

What makes anchor text good?

Google says good anchor text is "descriptive, reasonably concise, and relevant to the page that it's on and to the page it links to." Its tip: read only the anchor text, out of context, and check that it makes sense by itself.

Should internal links use nofollow?

Google points to another tool for that. Its rel guide says "For links within your own site, use the robots.txt disallow rule." It describes nofollow as the value for links you would rather Google not associate with your site or crawl.

Why does the checker find fewer links than I see on the page?

The page probably adds links with JavaScript, for example a menu built in the browser. This tool reads the HTML the server sends and does not run JavaScript. Google says links added with JavaScript are crawlable when they use a normal a element with an href, and suggests the URL Inspection Tool to check the rendered HTML.

Want us to fix this for you?

Want internal links, anchors and crawlability checked across every template on your site? AY Rank's technical SEO work covers it.