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 · Oct 1, 2026
We found more conversion tactics here than on 23% of the 1,350 multi-step SaaS funnels we have measured.
4 conversion tactics detected
2 pages walked · measured by Roentgen 1.28.1
Measured by Roentgen 1.28.1 on 2026-10-01. 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,781 multi-step funnels, more conversion tactics than 34% of them.
Walk 143 links on the entry page, all walkable. 1 matched a funnel step; we captured 2 pages in all, this one included.
try it free
trusted by
$2.99/mo, $36.00/mo, $129.00/mo, free
+ 1 more with evidence
+ 4 more
+ 3 more
Make viral short videos in one click
Your Viralkey workspace: generate videos, images, and music, browse templates, and pick a model.
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 opinionHome | Viralkey
Your Viralkey workspace: generate videos, images, and music, browse templates, and pick a model.
Make viral short videos in one click
UGC & UNBOXING TEMPLATES. EVERY MARKETING WORKFLOW.
MARKETING STUDIO
MUSIC MV TEMPLATES
DIFFERENT SCENES SAME STAR
SEEDANCE 2.5
PHOTO EFFECTS
GPT IMAGE 2
GPT Image 2.5 — Flare and Sunburst, text that lands+7 more, not shown
Login
Start for Free
Marketing Studio
Music Studio
Image
Video
UGC
Marketing Studio Video Fast
15s / 480p / 9:16
PERSON+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 opiniontrusted by
try it free
$2.99/mo, $36.00/mo, $129.00/mo, free
Limited time
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 opinion6 of 16 measured checks need work1 could not be measured — not counted either way
94% of measurable text passes WCAG AA. 4+ runs fail. 46% of text was unmeasurable (over images/gradients). not counted either way.
worst: “Annual” at 3.13:1 (14px, #5b6067 on #090a0a). needs 4.5: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.
Body line-height is 1.25×, tight enough to hurt readability.
FixSet body line-height to ~1.4-1.6×.
11 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.
“02-music-mv-v2-cover.jpg” is 1280px wide, displayed at 400px
FixServe responsive sizes (srcset/sizes) matching the rendered width.
121 of 239 interactive targets are under 44×44px on mobile.
smallest: “Dismiss banner” at 32×32px
FixGive tappable controls a ≥44×44px hit area. the touch minimum.
6 paragraphs run past ~95 characters per line.
FixCap measure at ~60-75ch for comfortable reading.
type:1 form field relies on placeholder text as the only label.
FixBack placeholders with a real <label>. placeholder text vanishes on input.
a11y:3 links use generic text (“click here” / “learn more”).
FixMake link text describe its destination out of context.
a11y:2 headings skip 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: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:24 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 <footer> landmark. screen-reader users cannot jump between regions.
FixWrap the page in <header>, <main> and <footer> (or matching ARIA roles).
structure:At least 1.8 MB across 159 measurable resources, but 94 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.