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 12, 2026
We found more conversion tactics here than on 3% of the 1,350 multi-step SaaS funnels we have measured.
2 conversion tactics detected
4 pages walked · measured by Roentgen 1.27.0
Measured by Roentgen 1.27.0 on 2026-09-12. 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 10% of them.
Walk 29 links on the entry page, 19 walkable. 4 matched a funnel step; we captured 4 pages in all, this one included.
We've answered the most common questions about plans, billing, upgrades, and getting start
$39.99/mo, $99.99/mo, $249.99/mo, $195/mo
+ 6 more
+ 3 more
+ 1 more step
From scattered to streamlined — inside one operating system.
Apex Suite AI runs your marketing, sales, and follow-up inside one connected system — so effort compounds and…
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 opinionApex Suite AI | From Scattered to Streamlined
Apex Suite AI runs your marketing, sales, and follow-up inside one connected system — so effort compounds and nothing falls through the cracks.
From scattered to streamlined — inside one operating system.
Apex Suite AI connects your marketing, social media, sales, and follow-up so your effort compounds, instead of being buried in busywork.
How Apex Suite runs your business — End to End
Real users. Real impact
Choose how much work you want Apex Suite to handle.
Confirm One-Time Setup Fee
A single operating system that supports every critical stage of growth.
Attract
Convert+1 more, not shown
APP Login
Learn how it works
View plans
See the full framework
Organize
Operate
Scale
View plans & pricing
Checkout
$0.00
structural bands identified on this funnel, cropped from its own capture
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 opinionWe've answered the most common questions about plans, billing, upgrades, and getting start
$39.99/mo, $99.99/mo, $249.99/mo, $195/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 opinion6 of 14 measured checks need work1 could not be measured — not counted either way
87% of measurable text passes WCAG AA. 4+ runs fail. 27% of text was unmeasurable (over images/gradients). not counted either way.
worst: “Includes 2 months free” at 1.94:1 (14px, #00cfcf 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.
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×, tight enough to hurt readability.
FixSet body line-height to ~1.4-1.6×.
43 stylesheets/scripts in <head> block first paint.
FixDefer non-critical JS (defer/async) and inline only critical CSS.
16 images are shipped at more than 2x the width shown.
“1-PLACEHOLDER.webp?resize=1024%2C1024&ss” is 800px wide, displayed at 294px
FixServe responsive sizes (srcset/sizes) matching the rendered width.
96 of 131 interactive targets are under 44×44px on mobile.
smallest: “Go to slide 1” at 6×6px
FixGive tappable controls a ≥44×44px hit area. the touch minimum.
7 paragraphs run past ~95 characters per line.
FixCap measure at ~60-75ch for comfortable reading.
type:1 link uses generic text (“click here” / “learn more”).
FixMake link text describe its destination out of context.
a11y:8 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 <main> landmark. screen-reader users cannot jump between regions.
FixWrap the page in <header>, <main> and <footer> (or matching ARIA roles).
structure:48 elements look clickable but cannot be reached by keyboard.
FixUse <button>/<a>, or add role + tabindex="0" and a key handler.
structure:At least 1.2 MB across 122 measurable resources, but 226 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 opinionElements — the atomic pieces — price anchors, ratings, guarantees — with their verbatim on-page text
Playbook match — which funnel play this page runs — measured, evidence-quoted
We ran these passes 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.