Body text size
type:Smallest body text is 10px (base ~18px). below the ~16px readable floor.
FixKeep body copy ≥15-16px; reserve sub-13px for fine print only.
saas · Aug 3, 2026
40/100 Thin
Scores higher than 36% of 1,391 multi-step funnels we have measured. Among the 1,074 saas funnels in that group, higher than 25%.
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 40 · mobile 40.
Walk 27 links on the entry page, 19 walkable. 1 matched a funnel step; we captured 2 pages in all, this one included.
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 opinionAd Creative Scoring API — Deterministic Verdicts | Spendict
Score any ad creative before you spend: a deterministic run / fix_first / kill verdict across hook, CTA, audience fit & compliance. MCP + REST API.
Your agent writes 100 ads an hour. This one says which 3 to run.
Works in every agent you already run
Kill a bad ad for a penny, not a “test budget.”
We show the grading, not just the grade
Ad creative scoring API: three steps from copy to verdict
Who uses an ad creative scoring API?
Built so a confident model can't talk its way past a bad ad.
100 free verdicts, no credit card. Wired into your agent in minutes.
Add the skill+7 more, not shown
SkillRECOMMENDED
MCPone-click connector, no key
CLInpm i -g spendict
RESTbearer key, any language
Copy
Cookie preferences
Get started
Get started for free
Try it on your own ad →
$42
$1
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 opinionfree, $0/mo, $19/mo, $49/mo
no credit card required
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 9 measured checks need work1 could not be measured — not counted either way
80% of measurable text passes WCAG AA. 4+ runs fail.
worst: “FIX” at 2.03:1 (11px, #f5a623 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 body text is 10px (base ~18px). below the ~16px readable floor.
FixKeep body copy ≥15-16px; reserve sub-13px for fine print only.
47 of 66 interactive targets are under 44×44px on mobile.
smallest: “Docs” at 31×18px
FixGive tappable controls a ≥44×44px hit area. the touch minimum.
16 paragraphs run past ~95 characters per line.
FixCap measure at ~60-75ch for comfortable reading.
type: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:6 stylesheets/scripts in <head> block first paint.
FixDefer non-critical JS (defer/async) and inline only critical CSS.
weight: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 0.9 MB across 152 measurable resources, but 40 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.