Internal Link Analyzer

Inspect a page’s internal links, anchor text and repeated destinations. Filter source links and export the rows you need to review.

The Internal Link Analyzer lists the links a public page sends readers to, together with their anchor text, category, rel values and HTML source lines. Enter a page URL to inspect navigation, linked images and repeated destinations before editing. The report covers outgoing anchors in that page's fetched HTML; incoming links, destination availability and the rest of the website need separate checks.

What does the internal link analyzer check?

Submit a complete HTTP or HTTPS page URL. Screpy follows the source page's redirects and reads the final HTML, extracting <a> elements with an href attribute. Each retained occurrence shows its resolved URL, extracted label, category, rel tokens and source line. Filters help isolate a group without removing the other rows from the report.

This is useful after publishing an article, updating a menu or changing a reusable block. It reads the returned source without running JavaScript, so links inserted later can be absent. Use a public page: a login screen can have different links from the content behind it. If the HTML cannot be read, the requested check remains unavailable.

The source response and link categories do not establish that the destinations work. Use the Broken Link Checker when you need a bounded check of destination availability.

Understand the four link categories

An internal link points to another URL with the same origin as the final fetched page. Origin includes the scheme, hostname and port. A shared brand or root domain alone is insufficient: www.example.com, shop.example.com and http://example.com differ from https://example.com.

For an illustrative source page at https://example.com/guides/links/, with no custom base URL:

Link in the source Category Reason
/pricing/ Internal Same origin, different path
#examples Same page Same path and query; only the fragment changes
?view=print Internal Same origin, different query
https://shop.example.com/ External Different hostname
mailto:help@example.com Other Not a resolved HTTP or HTTPS destination

The same-page group is separate from internal links to other URLs. Empty, unsupported or unresolvable href values belong to Other; that category does not automatically mean a broken link.

Relative URLs use the document's base. As MDN explains for the base element, a custom <base href> can change even a fragment link's destination. Read the resolved URL before deciding which page it reaches.

Improve anchor text and linked images

Start with empty-label warnings, then read the other labels in their surrounding sentences. Screpy extracts descendant text, or image alt values when the anchor has no text. It does not calculate the browser's complete accessible name from aria-label, aria-labelledby or title. An empty extract therefore calls for inspection; it alone does not prove the link is unnamed to every user.

For a paragraph about delivery options, replace a vague “click here” with “compare delivery options” if that accurately describes the target. The analyzer does not automatically flag every generic phrase: check clarity yourself. Google's link guidance recommends descriptive, reasonably concise anchors that fit their context; forcing keywords into unrelated labels does not help readers.

When an image is the only link content, its alternative text should communicate the destination or action, as illustrated in W3C's functional-image guidance. “Example store homepage” can explain a linked logo better than “logo.” Use the Image Alt Text Checker to review image alternatives separately, then inspect how each linked image works in the page.

Read rel attributes in context

The rel column shows recorded source tokens, not a link-value or ranking score. A blank value is not automatically an error. According to Google's outbound-link guidance, regular links need no special qualification; sponsored describes paid placements, ugc user-generated links, and nofollow applies when those other values do not fit and you prefer Google not to associate your site with or crawl through the link.

Review the purpose before changing a value. This inventory does not evaluate page-level robots directives or establish whether a destination is indexed. A nofollow link is not evidence of noindex; the destination may be discovered through other routes.

Review repeated destinations

The repeated-destination panel groups retained rows in the current filter. It ignores URL fragments but keeps query strings. For example, /guide/#setup and /guide/#examples share a destination group; /guide/?view=print remains separate. The original rows stay visible, so the number of occurrences is not a count of unique pages.

Repetition can be useful: a header, footer and paragraph may all offer legitimate paths to the same page. Review repeated nearby links when they add no useful choice, or when different labels promise conflicting content. Keep the clearest route for that context.

There is no universal target number of internal links. Google's guidance on internal links favors useful connections and says important pages should receive a link from another page. This outgoing inventory cannot prove that every important page receives one.

Check coverage before interpreting totals

Screpy retains the first 2,000 anchor occurrences in HTML order. Total refers to all anchors with href found in the parsed source, while the category counts describe retained rows. In an illustrative page with 2,300 anchors, 2,000 rows are retained and 300 are omitted. The four category counts therefore add to 2,000, not 2,300; the report shows partial coverage.

Green indicates that the supported checks completed without a warning. Amber calls for reviewing an empty extracted label or partial coverage. These indicators describe the source report, not destination health. A source-fetch failure means the check could not be completed.

Read shortening indicators too: labels longer than 500 characters are shortened in the report. Complete row coverage does not mean every label is displayed in full, nor that navigation, accessibility or indexing has been comprehensively audited.

Export a repair list and recheck the page

Choose a category filter and download CSV for its retained rows. The five fields are URL, text, kind, rel and line: resolved address where available, extracted label, category, recorded relationship tokens and source line. Download JSON preserves the full retained report rather than only the current filtered view. Neither export recovers omitted occurrences or the full text of shortened labels.

Use the source lines to locate links in the returned HTML; they are not guaranteed to match your template editor's line numbers. Prioritize important links with unclear labels, unintended destinations or confusing repetition. Edit the appropriate page or reusable block, publish the correction, and analyze the source again.

If a destination appears to redirect, inspect its chain with the Redirect Checker before choosing a replacement URL. Finding orphan pages or incoming links requires a broader site analysis; this report cannot answer those questions by inspecting one page.

Internal link analysis questions

Inspect a page’s internal links, anchor text and repeated destinations. Filter source links and export the rows you need to review.

Does CSV include every link?

CSV includes retained rows in the current category filter. JSON contains the full retained report. Neither export includes occurrences omitted beyond the 2,000-row limit or restores shortened labels.

Does it verify that the destinations work?

No destination requests are made. Internal, external, same-page and other are source classifications, not HTTP status or indexing results. Use Broken Link Checker for destination availability.

Why is a link to my subdomain classified as external?

Internal classification requires the same origin: scheme, hostname and port. A different subdomain, www hostname or HTTP scheme can therefore be external even when you own both addresses.

Can it see links added by JavaScript?

Only links in the returned HTML are read; JavaScript is not executed. A link inserted after the page loads may be missing from the report.

What does a successful result with no links mean?

No anchor elements with href were found in the checked source. The supported check can finish successfully with zero rows; that does not prove the rendered page has no links or that the website has good internal navigation.

Does this analyzer find incoming links or orphan pages?

No. It lists outgoing anchors from one fetched HTML document. Incoming links and orphan pages require comparing links across a broader set of pages.