Body text size
type:Smallest sampled text is 6px, below the 13px floor this check uses.
FixKeep body copy ≥15-16px; reserve sub-13px for fine print only.
saas · Oct 2, 2026
We found more conversion tactics here than on 99% of the 1,331 multi-step SaaS funnels we have measured.
9 conversion tactics detected
4 pages walked · measured by Roentgen 1.28.1
Measured by Roentgen 1.28.1 on 2026-10-02. 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,748 multi-step funnels, more conversion tactics than 99% of them.
Walk 109 links on the entry page, 93 walkable. 3 matched a funnel step; we captured 4 pages in all, this one included.
comparison grid: 5 rows
1,932+ users on the platform
Free Trial
+ 6 more with evidence
+ 4 more
+ 1 more step
What works for you?
Schedule Substack Notes and articles, cross-post to Medium, LinkedIn, X, Threads, Bluesky, Instagram, Faceboo…
see 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 opinionSchedule Substack Notes & Articles, Cross-Post Social | Narrareach
Schedule Substack Notes and articles, cross-post to Medium, LinkedIn, X, Threads, Bluesky, Instagram, Facebook, TikTok, and Pinterest, then track subscriber growth.
What works for you?
Publish every format
Integrate your workflow
Collaborate easily
Double down on what works
Integrate Narrareach into your existing workflow.
Publish articles, Notes, videos and social posts from one place.
Track what is working and double down on it.
Set the rules once. Narrareach keeps the work moving.+8 more, not shown
Sign In
Start free
Monthly
Yearly 2 months free
Start Free Trial — No Card →
How does the 7-day trial work?
What platforms does Narrareach support?
Does Narrareach replace Substack?
Do I need the browser extension?
Can Narrareach turn articles into Notes?+2 more, not shown
$19
$17
$199
$29
$39
$33
$390
$89+2 more, not shown
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 grid: 5 rows
1,932+ users on the platform
logos: Eunice Zheng, Tayyaba Akram, Substack, Pawel Hadjan, LinkedIn
1,932+ users
as seen on
Free Trial
$19/mo, $39/mo, $89/mo, free
Read the docs
username, emailAddress, password
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 opinion7 of 14 measured checks need work1 could not be measured — not counted either way
89% of measurable text passes WCAG AA. 4+ runs fail.
worst: “Medium stats proof” at 1:1 (10px, #ffffff on #ffffff). needs 4.5:1
FixRaise text/background contrast to ≥4.5:1 (≥3:1 for large text), especially on CTAs and body copy.
184 of 372 interactive targets are under 44×44px on mobile.
smallest: “Narrareach home” at 22×22px
FixGive tappable controls a ≥44×44px hit area. the touch minimum.
Smallest sampled text is 6px, below the 13px floor this check uses.
FixKeep body copy ≥15-16px; reserve sub-13px for fine print only.
18 buttons/links have no accessible name (icon-only, no aria-label).
FixAdd aria-label to icon-only buttons and links.
22 images are shipped at more than 2x the width shown.
“chatgpt-logo.svg” is 151px wide, displayed at 18px
FixServe responsive sizes (srcset/sizes) matching the rendered width.
No <header> or <footer> landmark. screen-reader users cannot jump between regions.
FixWrap the page in <header>, <main> and <footer> (or matching ARIA roles).
1 field uses type="text" for email or phone. mobile keyboards will not adapt.
“emailAddress”
FixUse type="email" / type="tel" so phones show the right keyboard.
1 heading skips a level (e.g. <h2> followed by <h4>). Screen-reader users navigate by this outline.
FixStep heading levels one at a time; use CSS for size, not a deeper level.
a11y:7 stylesheets/scripts in <head> block first paint.
FixDefer non-critical JS (defer/async) and inline only critical CSS.
weight:No autocomplete attributes across 3 fields. browsers cannot autofill.
FixAdd autocomplete="email"/"tel"/"name" to identity fields.
forms:At least 3.9 MB across 354 measurable resources, but 210 cross-origin resources did not expose a size. The true weight cannot be determined from the page.
weight:Mobile viewport · Language declared · Image alt text · Inline validation
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.