ShipworkSite inspection
Checks

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?Sitemap generatorNeed a sitemap.xml for my site?Bulk URL statusWhere does each of these URLs really land?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?Meta tag builderWhat should my title and share tags say?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?Page DoctorWhy is this page not doing well?Redirect planMy site has dead links — what redirects do I write?Sitemap diffIs anything missing from my sitemap?Robots simulatorWhat does my robots.txt actually block?Can Googlebot?Can Googlebot fetch this URL?
Every error, explainedGuides
Pricing Learn Error guides Run free audit

+1 free check

Welcome to Shipwork

Sign in free and your next check this month is on us.

Continue with GoogleContinue with email

We email you a 6-digit code. No password.

No card needed. Reports and watches follow you to any device.

Can assistive technology make sense of your raw HTML?

This is the accessibility pass that needs no browser: it reads the HTML a crawler receives and reports the markup faults a screen reader trips over. It is a subset of accessibility, not a substitute for a full audit: contrast and computed tap-target size need a rendered page.

Reads the raw HTML of a set of your pages for the common accessibility gaps. Nothing is stored.

What this check inspects

Shipwork reads the raw HTML of a set of your pages and counts: images with no alt attribute at all, links whose text is a generic phrase such as "click here" or "read more", form fields with no label or aria-label, iframes with no title, duplicate id attributes, and pages with no lang attribute on the html element. It also counts elements that use a positive tabindex. An empty alt is not counted as a missing one, because an empty alt is the correct markup for a decorative image.

What a failure means

Images with no alt attribute, links with no useful text, unlabelled form fields and untitled iframes are warnings: each leaves a screen reader with nothing useful to announce. Duplicate ids, a missing lang attribute and a positive tabindex are informational, because they break references, pronunciation or the natural tab order rather than removing the content outright. A clean result means none of these raw-HTML faults were found; it is not a claim that the page passes WCAG.

How to fix it

  1. Add a short, specific alt attribute to every informative image, and keep alt="" for genuinely decorative ones.
  2. Replace link text like "click here" or "read more" with a phrase that describes the destination.
  3. Give every form field a visible label, or at least an aria-label.
  4. Add a title to every iframe so a screen-reader user knows what it contains.
  5. Make each id unique, set the page language on the html element, and use tabindex="0" rather than a positive value.

A typical failure, worked through

The setupA theme uses placeholder text as the only label for the search and newsletter fields, and a hero image is added without an alt attribute.

What the check reportsThe check reports a form field with no label, an image with no alt attribute, and a handful of links whose text is only "read more".

The pointNone of this changes how the page looks to a sighted visitor. It changes whether a screen reader can find the search box or describe the hero, which is exactly the failure a score alone does not explain.

Questions

Why does this read the HTML rather than run a browser?
Contrast and computed tap-target size need a rendered page, which is a separate, slower run. This check is the raw-HTML subset: the faults visible in the markup a crawler receives.
Does a clean result mean the page is accessible?
No. It means none of the raw-HTML faults this check looks for were found. It is a subset, not a WCAG conformance test.
Is an empty alt the same as no alt?
No. An empty alt marks an image as decorative so assistive technology skips it. A missing alt attribute is an omission and is reported as one.

Related checks and guides