ShipworkSite inspection
Internal links

Crawlability

PaginationAre paginated pages set up right?Internal searchIs site search eating crawl budget?URL parametersAre parameters creating duplicates?Log analyserWhat does Googlebot actually crawl?Robots builderNeed a robots.txt file?Soft 404sAre pages “not found” but returning 200?JavaScriptCan crawlers see it without running JS?FreshnessIs my site quietly going stale?Robots.txtDoes robots.txt say what I think?

Indexing

Sitemap lastmodAre my sitemap dates valid?SitemapIs my sitemap actually fetchable?IndexingIs Google allowed to index my pages?CanonicalsIs Google indexing the wrong URL?Index signalsDo sitemap and index signals agree?Redirect builderNeed the redirect rules?RedirectsAre my URLs answering directly, over HTTPS?

On-page

Keyword ideasWhat are people searching for?SERP previewHow does my page look in Google?Content qualityAre your pages too thin or too alike?Image weightAre images slowing the page?CannibalizationAre pages competing with each other?On-page checkDoes the page use its target phrase?ImagesAre my images accessible and loading?DuplicatesDo my pages compete for one query?

Links

Orphan pagesWhich pages can no link reach?Link graphHow deep do your pages sit?Anchor textDo links say what they point at?Outbound linksAre external links still alive?Broken linksAre internal links sending visitors nowhere?

Structured data

Rich resultsIs my markup eligible for a rich result?Structured dataIs my product schema valid?Schema coverageDo my key pages carry structured data?Social previewHow does my page look when shared?Schema vs pageDoes markup match the page price?Schema builderNeed valid JSON-LD?

International

Hreflang sitemapDo page and sitemap hreflang agree?HreflangDo my language versions link back?Hreflang builderNeed the hreflang tags?
Every error, explainedGuides →
Pricing Learn Guides
Sign in

Signing in is optional: it keeps your account, watches and connections on any device. Every free check, the audit and the score work with no account at all.

Sign in with GoogleOpens your account, or creates a free one PricingPlans and credit packs for the paid jobs

Where should the next internal link come from?

A report that pages have no inbound links is a starting point, not a fix. This check names a source page and an anchor for each underlinked page, then flattens every suggestion into one ranked plan so the first line is the best next link to add anywhere on the site.

Reuses one crawl of your site to build the internal link graph and a ranked link plan. Nothing is stored.

What this check inspects

Shipwork reuses one crawl of your pages, builds the internal link graph from it exactly as the link graph check does, and finds the pages with few or no inbound links from the pages it read. For each one it ranks the other readable pages by how close their text is and picks the best sources, then writes the anchor text from the title of the target page, or its most distinctive description words when the title is unusable. It flattens every suggestion into a single ranked plan ordered by the value of one edit: a target that the near-miss check proves already has search demand comes first, then the least-linked target, then the closest source. So the first line is the best next link to add anywhere on the site, not just the best source for the first page.

What a failure means

This reuses a sampled crawl, so it says plainly what it examined. When it did not read the whole sitemap it does not claim a page is an orphan site-wide, only that it had few inbound links among the pages read. With too few readable pages or no text model, it reports a reason rather than a recommendation. A page that needs links is a warning when the crawl was confident, and an informational note when it was not. A page that needs links but has no close enough source, or no usable anchor, is reported separately so it is not silently dropped. When every page examined is already well linked, it says so.

How to fix it

  1. Add the ranked links one at a time, starting at the top. That order already weighs a target search demand and how few links it has.
  2. Use the anchor text the plan supplies, taken from the title of the target page, rather than click here or a bare URL.
  3. Link from the page named as the source, since it was chosen for being close in topic to the target.
  4. Where the plan could not write an anchor, write a short phrase that describes the target page and link with it.
  5. Re-crawl after the edits. The plan is based on the links the crawler could see.

A typical failure, worked through

The setupA store has a size guide and a returns page that almost nothing links to, while the same crawl shows a collection page already appearing for a query just off page one.

What the check reportsThe plan lists the underlinked pages, writes an anchor for each from its title, and puts the collection page first because the near-miss check shows it has proven demand.

The pointThe output is a single edit a person can make, in the order that will do the most good first, rather than a report that ninety-eight pages have no inbound links.

Questions

Does it crawl the whole site?
It reuses one bounded crawl. When the crawl did not cover the whole sitemap it says the suggestions are based only on the pages examined, and never claims a page is an orphan site-wide.
Where does the anchor text come from?
Usually the title of the target page, shortened to a phrase. When the title is unusable it falls back to the clearest words in the page description, and if neither works it says so.
Why is one page put first?
A target that the near-miss check already shows has search demand is worth linking first, so the flat plan puts those above merely underlinked pages.
Does it need a search connection?
No. The links are suggested from the crawl. A connection only lets a target with proven demand move to the top of the plan.

Related checks and guides