Body text size
type:Smallest body text is 11px (base ~19px). below the ~16px readable floor.
FixKeep body copy ≥15-16px; reserve sub-13px for fine print only.
saas · Aug 3, 2026
35/100 Sparse
Scores higher than 68% of 577 entry-page captures we have measured. Among the 311 saas funnels in that group, higher than 54%.
Walk 14 links seen, 10 walkable, and 0 matched a funnel step. If this funnel continues past the entry page, we did not reach it — everything below is measured from the entry page alone.
Measured by Roentgen 1.18 on 2026-08-03. A capture is read once and its measurements freeze there, so the stamp says which ruleset read this one.
Coverage 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. Per device: desktop 35 · mobile 35.
this funnel’s coverage score across measured re-scans
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 opinionLocalMask — AI reads your code, not your secrets
LocalMask is a local-first privacy layer for AI coding. It runs entirely on your machine — scans your repo, masks every secret, organizational data, and PII into reversible tokens, and sends only safe tokens to Claude, GPT, or Gemini. You stay in full control. The real secrets never leave your local environment.
AI reads your code, not your secrets.
This is what the AI actually sees.
Mask in your editor, or hand the AI a masked mirror.
Mask and review without leaving your editor.
See the full workflow in 2 minutes.
Free forever. Pro is one-time. Team & Enterprise are annual, per seat.
Are you keeping the data? LocalMask makes the question irrelevant.
Lock it down before you ship it to AI.
Masked repo mirror+6 more, not shown
Install free CLI
Stay updated
Without
Standard
Strict
▶
-10s
+10s
CC
🔇+2 more, not shown
$0
€49
€199
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 opinionFree forever
email, email
Read the docs
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 opinion3 of 13 measured checks need work
83% of measurable text passes WCAG AA. 4+ runs fail. 18% of text was unmeasurable (over images/gradients). not counted either way.
worst: “Click to unmute 🔇” at 1.08:1 (13px, #ffffff on #f4f6fa). needs 4.5:1
FixRaise text/background contrast to ≥4.5:1 (≥3:1 for large text), especially on CTAs and body copy.
Smallest body text is 11px (base ~19px). below the ~16px readable floor.
FixKeep body copy ≥15-16px; reserve sub-13px for fine print only.
27 of 43 interactive targets are under 44×44px on mobile.
smallest: “GitHub ↗” at 67×21px
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: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:No <main> landmark. screen-reader users cannot jump between regions.
FixWrap the page in <header>, <main> and <footer> (or matching ARIA roles).
structure:2 elements look clickable but cannot be reached by keyboard.
FixUse <button>/<a>, or add role + tabindex="0" and a key handler.
structure:Mobile viewport · Language declared · Page weight · Render-blocking resources · 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 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.