Body text size
type:Smallest sampled text is 10px, below the 13px floor this check uses.
FixKeep body copy ≥15-16px; reserve sub-13px for fine print only.
saas · Sep 20, 2026
We found more conversion tactics here than on 23% of the 1,413 multi-step SaaS funnels we have measured.
4 conversion tactics detected
2 pages walked · measured by Roentgen 1.27.0
Measured by Roentgen 1.27.0 on 2026-09-20. A capture is read once and its measurements freeze there, so the stamp says which ruleset read this one.
This is detection coverage, not a verdict — it counts the conversion tactics we could prove are present, out of the 11 that apply to a saas funnel. A low count means we did not detect those patterns, not that the funnel is weak.
Against all 1,864 multi-step funnels, more conversion tactics than 34% of them.
Walk 64 links on the entry page, 57 walkable. 1 matched a funnel step; we captured 2 pages in all, this one included.
comparison table:
Frequently asked questions
logos: Harbor, Save up to $1200 today, Verified Harbor member, Harbor Guarantee+, FedEx Ex
+ 1 more with evidence
+ 4 more
+ 2 more
The GLP-1 programfor results that last
Compounded semaglutide & tirzepatide, prescribed online by Harbor's licensed providers. 48-hour GLP-1 weight…
this funnel’s coverage score across measured re-scans
measuredextracted directly from the live page. a fact, not an opinionsee their whole funnel without clicking through it. scored step by step
measuredextracted directly from the live page. a fact, not an opinionthe entry page’s own title, headline, buttons and prices — quoted, never paraphrased
measuredextracted directly from the live page. a fact, not an opinionHarbor GLP-1 Weight Loss Online | Semaglutide & Tirzepatide
Compounded semaglutide & tirzepatide, prescribed online by Harbor's licensed providers. 48-hour GLP-1 weight loss medication delivered to your door.
The GLP-1 programfor results that last
The GLP-1 program for results that last
Medical Weight Loss Programs
The team that stays with you – through every dose and beyond
The only GLP-1 program that guarantees your results
Your journey, start to finish
The part other programs skip
Frequently asked questions
Tirzepatide Program+4 more, not shown
Next
How does Harbor work?
How much does it cost?
Do I need a doctor visit?
What happens when I reach my goal?
Is insurance required?
Get Started
$99
$149
$299
$89
structural bands identified on this funnel, cropped from its own capture
measuredextracted directly from the live page. a fact, not an opinion
the atomic pieces — price anchors, ratings, guarantees — with their verbatim on-page text
measuredextracted directly from the live page. a fact, not an opinion
conversion tactics we could prove are present, with the on-page text that evidences each
measuredextracted directly from the live page. a fact, not an opinioncomparison table:
Frequently asked questions
logos: Harbor, Save up to $1200 today, Verified Harbor member, Harbor Guarantee+, FedEx Ex
free, $99/mo, $149/mo, $299/mo
applicable tactics we checked for and did not see on any step we reached
measuredextracted directly from the live page. a fact, not an opinionAbsence is a measurement, not a recommendation: we do not know why a tactic is missing, whether it belongs here, or whether adding it would change anything. Where a walk stopped early, a tactic living deeper would also read as not detected.
contrast, mobile, typography, accessibility, weight — each with what would fix it
measuredextracted directly from the live page. a fact, not an opinion5 of 14 measured checks need work1 could not be measured — not counted either way
59% of measurable text passes WCAG AA. 4+ runs fail.
worst: “Why is everyone switching to Harbor?” at 1:1 (48px, #203040 on #203040). needs 3:1
FixRaise text/background contrast to ≥4.5:1 (≥3:1 for large text), especially on CTAs and body copy.
Smallest sampled text is 10px, below the 13px floor this check uses.
FixKeep body copy ≥15-16px; reserve sub-13px for fine print only.
8 stylesheets/scripts in <head> block first paint.
FixDefer non-critical JS (defer/async) and inline only critical CSS.
9 images are shipped at more than 2x the width shown.
“hims-logo.webp?dpl=dpl_9LJhGRccdPdoY3PtT” is 1601px wide, displayed at 86px
FixServe responsive sizes (srcset/sizes) matching the rendered width.
51 of 124 interactive targets are under 44×44px on mobile.
smallest: “Open menu” at 32×32px
FixGive tappable controls a ≥44×44px hit area. the touch minimum.
8 paragraphs run past ~95 characters per line.
FixCap measure at ~60-75ch for comfortable reading.
type:2 links use generic text (“click here” / “learn more”).
FixMake link text describe its destination out of context.
a11y:The landing page has 2 <h1> elements (expected 1).
FixUse exactly one <h1> as the page’s title.
a11y:No same-page “skip to content” link was found. Keyboard users tab through the whole nav on every page.
FixAdd a first-in-DOM <a href="#main"> that is visible on focus.
a11y:4 controls have an aria-label that does not contain its visible text, so voice-control users cannot activate it by saying what they see.
FixMake the accessible name start with the visible label text.
a11y:No <main> landmark. screen-reader users cannot jump between regions.
FixWrap the page in <header>, <main> and <footer> (or matching ARIA roles).
structure:At least 1.9 MB across 166 measurable resources, but 76 cross-origin resources did not expose a size. The true weight cannot be determined from the page.
weight:palette by on-page usage · type rendered live
measuredextracted directly from the live page. a fact, not an opinionBody copy in their text role, on a surface card.
Body copy set at their measured paragraph size. This is how their product reads to a first-time visitor. same family, same scale, same weight.
layers we ran on this funnel that came back empty
measuredextracted directly from the live page. a fact, not an opinionPlaybook match — which funnel play this page runs — measured, evidence-quoted
We ran this pass on the pages we captured and found nothing to show. That is a measurement of this funnel, not a recommendation — and it is a different statement from a layer we never ran, which does not appear here at all.