AstraRad · astrarad.com — re-scored against the identical 84-check, 18-category
checklist used for the 2026-07-31 baseline, so the percentages are directly comparable.
Every check below was measured against the live production deployment by curl,
DNS lookup, and headless browser.
Same checklist, same denominators, same N/A treatments as the baseline run.
The 11 sampled routes, scored over the 12 page-scoped categories. Site-wide checks (robots, sitemap, analytics, social, DNS, llms.txt) are scored once in the panel below. Baseline pages scored 51–55%; every sampled page is now 85% or better.
| Route | Score | Was | Status | Meta | OG | JSON-LD | Headings | Images | Words | Text ratio | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| / | 85% | 55% | Good | 1,173 | 10.0% | ||||||
| /services | 87% | 53% | Good | 854 | 9.8% | ||||||
| /pricing | 87% | 51% | Good | 1,006 | 9.3% | ||||||
| /contact | 88% | 52% | Good | 216 | 3.1% | ||||||
| /compliance | 89% | — | Good | 1,832 | 18.6% | ||||||
| /sla | 89% | — | Good | 1,645 | 16.9% | ||||||
| /privacy | 89% | — | Good | 1,723 | 18.0% | ||||||
| /resources | 87% | — | Good | 1,151 | 13.7% | ||||||
| /services/stat-ct-reads | 89% | — | Good | 1,738 | 16.8% | ||||||
| /licensing/texas | 89% | — | Good | 1,448 | 16.0% | ||||||
| /resources/teleradiology-cost | 87% | — | Good | 2,072 | 20.1% |
Infrastructure and domain-level signals, checked once against the live deployment and DNS.
Content-Signal line
(search=yes, ai-train=yes, ai-input=yes), 8 Disallow rules for app areas,
and a Sitemap: directive.application/xml. Every listed URL was fetched and all
34 returned HTTP 200. No public marketing route is missing.Link: rel="describedby" response header./brand/astrarad-logo-dark.png returns 200 (41 KB PNG) but is
1857×576 — a wide logo, not the 1200×630 share card social platforms crop to. No
og:image:width/height is declared on any page.@context.max-age=31536000; includeSubDomains, plus
x-frame-options: DENY, x-content-type-options: nosniff,
referrer-policy and permissions-policy.google-site-verification=6XJWVOqHL_73fhFX… is live. The property is
verified and there is now a real sitemap to submit — submit it.v=spf1 include:_spf.google.com ~all; DMARC
p=quarantine with an rua address./.well-known/agent-card.json,
/.well-known/mcp/server-card.json, /.well-known/api-catalog,
/.well-known/agent-skills/index.json and /auth.md return 200 with correct
content types. Accept: text/markdown on /pricing returns real markdown.placeholder="+1 555 010 0100" attribute of the contact form
input, which is not published contact information.A category check passes only when it passes on every applicable page — the same rule the baseline used. The faint grey bar behind each fill is the baseline score. 65 of 84 applicable checks pass.
19 failing checks folded into 16 distinct findings. Every Critical finding from the baseline is resolved; what remains is one Critical measurement gap and a set of mechanical template defects.
gtag.js snippet to the Angular
index.html head so it lands on every prerendered page.<h2> straight to an
<h4> with no intervening <h3>. This is a single shared layout or
content-block template, so one component fix corrects all 34 pages at once.
Fix: find the component emitting the <h4> and demote it to
<h3>, or promote the parent, so nesting is contiguous.og:image but none declare its dimensions, so
Slack, LinkedIn and iMessage must fetch and measure the image before they can render a preview —
which often means they render none at all on first paste.
Fix: add og:image:width and og:image:height to the shared SeoService
meta block./brand/astrarad-logo-dark.png is a wide logo strip. At the 1.91:1 ratio
social platforms crop to, it will be letterboxed or centre-cropped into a sliver.
Fix: produce a real 1200×630 share card carrying the wordmark plus a headline stat, and
point og:image at it./about at 16, /resources at 20,
/privacy at 25) and 19 are too long (/sla at 70,
/use-cases/stat-reads-under-30-minutes at 69). Titles are unique and descriptive, which is
the harder half — this is length tuning only. Fix: pad short titles with a qualifier and trim
long ones so Google does not truncate them in the SERP./compliance renders
"HIPAA & GDPR Compliant Teleradiology | AstraRad · AstraRad", and
/terms and /sla do the same. A per-page title already ending in the brand is
then getting the global · AstraRad suffix appended on top.
Fix: strip the brand from those three page-level titles and let the global suffix supply it./about (182), / (176), /pricing and
/how-we-work (166), /resources (164), /services (161). Google
truncates these mid-sentence in the SERP. All are unique and well written; they just need trimming to
about 150. Fix: cut each to 150 characters or fewer./resources/* long-form pages emit
@type: "Article" with headline and datePublished but no
author, which Google requires for Article rich results. The JSON is otherwise valid.
Fix: add an author node (Organization AstraRad, or the named reviewing radiologist).sameAs array.address and telephone to the MedicalOrganization schema.lang and form labels all pass —
this is the only accessibility check failing.
Fix: add a visually-hidden <a href="#main">Skip to content</a> as the
first focusable element in the shared layout.imbro.png 858×216, nyimaging.png 2383×582) carry good descriptive
alt text but no explicit dimensions, which risks layout shift, and they sit below the fold without
loading="lazy". Both are comfortably under 200 KB.
Fix: add explicit width/height and loading="lazy", and
downscale nyimaging.png from 2383px to its display size./ and 32 of 57 on
/pricing are under 44px in at least one dimension. Viewport, 16px base font and
no-horizontal-scroll all pass.
Fix: raise minimum hit areas to 48×48 CSS pixels with at least 8px spacing, mostly on
footer and inline text links./contact) to 22.6%
(/resources/in-house-vs-outsourced-radiology). The cause is Angular's inlined critical CSS
and hydration state, not thin content — the same pages carry 1,400 words on average. Low severity, and
partly a cost of the prerendering that fixed everything else.
Fix: trim unused inlined CSS if convenient; do not sacrifice the SSG setup for this metric.style="…" attributes on / and 3 on each other page.
Minor, and mostly Angular-generated. Fix: move to component stylesheets where practical.These two items need a credential from you and cannot be completed from the codebase alone. They are also the highest-leverage items left, because without them none of the other work can be measured.
34 new pages just went live with no instrumentation. Until this exists, nobody can tell which of them work.
The property is already DNS-verified. At baseline there was no sitemap to submit; now there is a valid one with 34 URLs, and submitting it is what actually triggers crawling.