Website report

refcat.app

refcat.app ↗·🇺🇸 United States · Community picks

Measured

Global rank#4
GradeA

Your result

No broken links found in this sample.

Link health
100.00/100

Healthy links in the sample

Quality checklist
96.62/100

Scored technical checks

Broken links
0

Confirmed in sample

41 links verified · 0 unknown · 20 selected source pages · 100% of selected destinations verified. Sample only. Unknown links are not counted as broken.

What to fix first

Includes issues from the extended diagnostic report.

No confirmed fixes to prioritize. Review unverified checks in the full report.

Your path to S-Tier

Not yet S-Tier

Healthy links, every scored requirement passed, and complete evidence in the selected sample.

  • Pass all scored quality requirements across the five categories.
  • Verify every required check and selected destination; incomplete or retained evidence cannot unlock the badge.
How this result qualifies

Verified internal navigation

At least 10 internal destinations were verified. Unknown items do not disqualify the site; confirmed checklist failures reduce quality.

100.00/100 link health · 96.62/100 quality · 41 internal destinations

The diagnostic report below may cover additional pages and external links. Only the stored competitive sample determines the ranking. At least 10 verified internal links are required; unavailable checklist items do not exclude a site. How scoring works

Explore issues & evidenceConfirmed issues, suggested fixes and the evidence behind them.
0 diagnostic broken links38 pages readExtended evidence may include links outside the badge sample.
Latest competitive sample and evidence · 96.62/100 quality · includes previous evidence

At least 10 internal destinations were verified. Unknown items do not disqualify the site; confirmed checklist failures reduce quality. The available outcomes agreed between passes.

20 selected source URLs · 41 internal destinations. 41 evaluated · 0 unknown · 6 using previous evidence. The expanded diagnostic report follows below.

Some checklist evidence is unavailable: Page title, Distinct page titles, Meta description, Self-referencing canonical, Main heading, Heading hierarchy, Main landmark, Mobile viewport, Image dimensions declared, Structured data syntax, Document language, Image alternatives declared, Form controls named, Buttons named, Links named, Descriptive link text, Open Graph title, Open Graph description, Open Graph type, Open Graph URL, Open Graph image URL, Open Graph image description, Social card type, HTTPS page, No insecure embedded resources. 25 check(s) use previous evidence, for at most eight days from their last reliable reading. Other unknown observations have no scoring vote.

SEO
94.00/100
Accessibility
98.81/100
Structure
95.00/100
Sharing
96.67/100
Security
100.00/100
Selected pages
  • https://refcat.app/en
  • https://refcat.app/dashboard/login?next=%2F
  • https://refcat.app/en/blog
  • https://refcat.app/en/changelog
  • https://refcat.app/en/compare/mobbin
  • https://refcat.app/en/compare/page-flows
  • https://refcat.app/en/compare/refero
  • https://refcat.app/en/content
  • https://refcat.app/en/developers
  • https://refcat.app/en/guides/mcp
  • https://refcat.app/en/guides/web-to-figma
  • https://refcat.app/en/roadmap
  • https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout
  • https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard
  • https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding
  • https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dpro%26interval%3Dyear
  • https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dstudio%26interval%3Dyear
  • https://refcat.app/en/cookies
  • https://refcat.app/en/privacy
  • https://refcat.app/en/terms
Internal link verdicts and weights
  • ok · weight 6 · https://api.refcat.app/api/v1/openapi.json
  • ok · weight 6 · https://refcat.app/dashboard/login?next=%2F
  • ok · weight 6 · https://refcat.app/en
  • ok · weight 6 · https://refcat.app/en/blog
  • ok · weight 6 · https://refcat.app/en/changelog
  • ok · weight 6 · https://refcat.app/en/compare/mobbin
  • ok · weight 6 · https://refcat.app/en/compare/page-flows
  • ok · weight 6 · https://refcat.app/en/compare/refero
  • ok · weight 6 · https://refcat.app/en/content
  • ok · weight 6 · https://refcat.app/en/developers
  • ok · weight 6 · https://refcat.app/en/guides/mcp
  • ok · weight 6 · https://refcat.app/en/guides/web-to-figma
  • ok · weight 6 · https://refcat.app/en/roadmap
  • ok · weight 6 · https://refcat.app/llms.txt
  • ok · weight 4 · https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout
  • ok · weight 4 · https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard
  • ok · weight 4 · https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding
  • ok · weight 4 · https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dpro%26interval%3Dyear
  • ok · weight 4 · https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dstudio%26interval%3Dyear
  • ok · weight 4 · https://refcat.app/en/cookies
  • ok · weight 4 · https://refcat.app/en/privacy
  • ok · weight 4 · https://refcat.app/en/terms
  • ok · weight 2 · https://refcat.app/downloads/refcat-web-to-figma.zip
  • ok · weight 2 · https://refcat.app/en/blog/a-design-handoff-that-explains-behavior-not-just-screens
  • ok · weight 2 · https://refcat.app/en/blog/a-practical-keyboard-review-for-product-designers
  • ok · weight 2 · https://refcat.app/en/blog/audit-an-onboarding-flow-before-you-redesign-it
  • ok · weight 2 · https://refcat.app/en/blog/bring-a-web-reference-into-figma-without-losing-the-question
  • ok · weight 2 · https://refcat.app/en/blog/compare-ios-android-and-web-references-without-mixing-their-assumptions
  • ok · weight 2 · https://refcat.app/en/blog/design-dense-dashboards-around-a-real-question
  • ok · weight 2 · https://refcat.app/en/blog/design-forms-for-correction-not-just-completion
  • ok · weight 2 · https://refcat.app/en/blog/design-navigation-around-the-user-s-next-decision
  • ok · weight 2 · https://refcat.app/en/blog/design-the-interface-states-your-happy-path-leaves-out
  • ok · weight 2 · https://refcat.app/en/blog/empty-states-that-explain-what-happens-next
  • ok · weight 2 · https://refcat.app/en/blog/extract-a-design-system-from-references-without-copying-a-brand
  • ok · weight 2 · https://refcat.app/en/blog/how-to-turn-ui-references-into-design-decisions
  • ok · weight 2 · https://refcat.app/en/blog/make-subscription-changes-easy-to-understand
  • ok · weight 2 · https://refcat.app/en/blog/review-a-checkout-flow-beyond-the-payment-button
  • ok · weight 2 · https://refcat.app/en/blog/turn-a-ui-idea-into-a-testable-product-hypothesis
  • ok · weight 2 · https://refcat.app/en/blog/use-interface-motion-to-explain-change
  • ok · weight 2 · https://refcat.app/refcat-cursor.mdc
  • ok · weight 2 · https://refcat.app/refcat-skill.md
Scoring checks
  • Page title: passed · 20/20 applicable observations

    https://refcat.app/en: Refcat — Real UI flows & patterns for better product design

    https://refcat.app/dashboard/login?next=%2F: Refcat: real UI flows and screens

    https://refcat.app/en/blog: Refcat blog — UI design research, patterns and workflows

    https://refcat.app/en/changelog: Refcat changelog — New features and improvements

    https://refcat.app/en/compare/mobbin: Refcat vs Mobbin: library, features and pricing compared

  • Distinct page titles: failed · 14/20 applicable observations

    https://refcat.app/dashboard/login?next=%2F: Refcat: real UI flows and screens

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout: Refcat: real UI flows and screens

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard: Refcat: real UI flows and screens

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding: Refcat: real UI flows and screens

    https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dpro%26interval%3Dyear: Refcat: real UI flows and screens

  • Meta description: passed · 14/14 applicable observations

    https://refcat.app/dashboard/login?next=%2F: Search real product screens and flows by what you are designing, export them to Figma and give your AI agent real references over MCP.

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout: Search real product screens and flows by what you are designing, export them to Figma and give your AI agent real references over MCP.

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard: Search real product screens and flows by what you are designing, export them to Figma and give your AI agent real references over MCP.

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding: Search real product screens and flows by what you are designing, export them to Figma and give your AI agent real references over MCP.

    https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dpro%26interval%3Dyear: Search real product screens and flows by what you are designing, export them to Figma and give your AI agent real references over MCP.

  • Self-referencing canonical: passed · 14/14 applicable observations

    https://refcat.app/dashboard/login?next=%2F: No canonical URL

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout: No canonical URL

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard: No canonical URL

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding: No canonical URL

    https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dpro%26interval%3Dyear: No canonical URL

  • Main heading: passed · 20/20 applicable observations

    https://refcat.app/en: 1 H1 element(s)

    https://refcat.app/dashboard/login?next=%2F: 1 H1 element(s)

    https://refcat.app/en/blog: 1 H1 element(s)

    https://refcat.app/en/changelog: 1 H1 element(s)

    https://refcat.app/en/compare/mobbin: 1 H1 element(s)

  • Heading hierarchy: passed · 20/20 applicable observations

    https://refcat.app/en: 0 skipped heading level(s)

    https://refcat.app/dashboard/login?next=%2F: 0 skipped heading level(s)

    https://refcat.app/en/blog: 0 skipped heading level(s)

    https://refcat.app/en/changelog: 0 skipped heading level(s)

    https://refcat.app/en/compare/mobbin: 0 skipped heading level(s)

  • Main landmark: passed · 20/20 applicable observations

    https://refcat.app/en: 1 main landmarks

    https://refcat.app/dashboard/login?next=%2F: 1 main landmarks

    https://refcat.app/en/blog: 1 main landmarks

    https://refcat.app/en/changelog: 1 main landmarks

    https://refcat.app/en/compare/mobbin: 1 main landmarks

  • Mobile viewport: passed · 20/20 applicable observations

    https://refcat.app/en: width=device-width, initial-scale=1

    https://refcat.app/dashboard/login?next=%2F: width=device-width, initial-scale=1

    https://refcat.app/en/blog: width=device-width, initial-scale=1

    https://refcat.app/en/changelog: width=device-width, initial-scale=1

    https://refcat.app/en/compare/mobbin: width=device-width, initial-scale=1

  • Image dimensions declared: passed · 14/14 applicable observations

    https://refcat.app/dashboard/login?next=%2F: 0 of 0 images lack width/height attributes or an aspect-ratio style

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout: 0 of 0 images lack width/height attributes or an aspect-ratio style

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard: 0 of 0 images lack width/height attributes or an aspect-ratio style

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding: 0 of 0 images lack width/height attributes or an aspect-ratio style

    https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dpro%26interval%3Dyear: 0 of 0 images lack width/height attributes or an aspect-ratio style

  • Structured data syntax: failed · 14/20 applicable observations

    https://refcat.app/dashboard/login?next=%2F: 0 of 0 blocks have valid JSON-LD structure

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout: 0 of 0 blocks have valid JSON-LD structure

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard: 0 of 0 blocks have valid JSON-LD structure

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding: 0 of 0 blocks have valid JSON-LD structure

    https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dpro%26interval%3Dyear: 0 of 0 blocks have valid JSON-LD structure

  • Document language: passed · 20/20 applicable observations

    https://refcat.app/en: en

    https://refcat.app/dashboard/login?next=%2F: en

    https://refcat.app/en/blog: en

    https://refcat.app/en/changelog: en

    https://refcat.app/en/compare/mobbin: en

  • Image alternatives declared: passed · 14/14 applicable observations

    https://refcat.app/dashboard/login?next=%2F: 0 of 0 images lack an alt attribute

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout: 0 of 0 images lack an alt attribute

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard: 0 of 0 images lack an alt attribute

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding: 0 of 0 images lack an alt attribute

    https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dpro%26interval%3Dyear: 0 of 0 images lack an alt attribute

  • Form controls named: passed · 14/14 applicable observations

    https://refcat.app/dashboard/login?next=%2F: 0 of 0 controls have no HTML label

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout: 0 of 0 controls have no HTML label

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard: 0 of 0 controls have no HTML label

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding: 0 of 0 controls have no HTML label

    https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dpro%26interval%3Dyear: 0 of 0 controls have no HTML label

  • Buttons named: failed · 13/14 applicable observations

    https://refcat.app/en: 6 of 36 buttons have no HTML name

    https://refcat.app/dashboard/login?next=%2F: 0 of 0 buttons have no HTML name

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout: 0 of 0 buttons have no HTML name

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard: 0 of 0 buttons have no HTML name

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding: 0 of 0 buttons have no HTML name

  • Links named: passed · 14/14 applicable observations

    https://refcat.app/dashboard/login?next=%2F: 0 of 0 links have no HTML name

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout: 0 of 0 links have no HTML name

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard: 0 of 0 links have no HTML name

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding: 0 of 0 links have no HTML name

    https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dpro%26interval%3Dyear: 0 of 0 links have no HTML name

  • Descriptive link text: passed · 14/14 applicable observations

    https://refcat.app/dashboard/login?next=%2F: 0 of 0 links use generic text

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout: 0 of 0 links use generic text

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard: 0 of 0 links use generic text

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding: 0 of 0 links use generic text

    https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dpro%26interval%3Dyear: 0 of 0 links use generic text

  • Open Graph title: passed · 20/20 applicable observations

    https://refcat.app/en: Refcat — Real UI flows & patterns for better product design

    https://refcat.app/dashboard/login?next=%2F: Refcat: real UI flows and screens

    https://refcat.app/en/blog: Refcat blog — UI design research, patterns and workflows

    https://refcat.app/en/changelog: Refcat changelog — New features and improvements

    https://refcat.app/en/compare/mobbin: Refcat vs Mobbin: library, features and pricing compared

  • Open Graph description: passed · 20/20 applicable observations

    https://refcat.app/en: Explore real product flows, UI screens and patterns. Turn a brief into grounded design direction and export references to Figma.

    https://refcat.app/dashboard/login?next=%2F: Search real product screens and flows by what you are designing, export them to Figma and give your AI agent real references over MCP.

    https://refcat.app/en/blog: Practical research on product design, real UI patterns, Figma workflows and designing with AI.

    https://refcat.app/en/changelog: See the latest Refcat features, fixes and product improvements, from the catalog and Figma exports to MCP and AI screens.

    https://refcat.app/en/compare/mobbin: Compare Refcat and Mobbin side by side: screens and flows in the library, Figma and MCP features, and monthly, quarterly and yearly prices.

  • Open Graph type: passed · 20/20 applicable observations

    https://refcat.app/en: website

    https://refcat.app/dashboard/login?next=%2F: website

    https://refcat.app/en/blog: website

    https://refcat.app/en/changelog: website

    https://refcat.app/en/compare/mobbin: website

  • Open Graph URL: passed · 20/20 applicable observations

    https://refcat.app/en: https://refcat.app/en

    https://refcat.app/dashboard/login?next=%2F: https://refcat.app/dashboard/

    https://refcat.app/en/blog: https://refcat.app/en/blog

    https://refcat.app/en/changelog: https://refcat.app/en/changelog

    https://refcat.app/en/compare/mobbin: https://refcat.app/en/compare/mobbin

  • Open Graph image URL: passed · 20/20 applicable observations

    https://refcat.app/en: https://refcat.app/og-image.png

    https://refcat.app/dashboard/login?next=%2F: https://refcat.app/og-image.png

    https://refcat.app/en/blog: https://refcat.app/og-image.png

    https://refcat.app/en/changelog: https://refcat.app/og-image.png

    https://refcat.app/en/compare/mobbin: https://refcat.app/og-image.png

  • Open Graph image description: failed · 14/20 applicable observations

    https://refcat.app/dashboard/login?next=%2F: No sharing image description

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout: No sharing image description

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard: No sharing image description

    https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding: No sharing image description

    https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dpro%26interval%3Dyear: No sharing image description

  • Social card type: passed · 20/20 applicable observations

    https://refcat.app/en: summary_large_image

    https://refcat.app/dashboard/login?next=%2F: summary_large_image

    https://refcat.app/en/blog: summary_large_image

    https://refcat.app/en/changelog: summary_large_image

    https://refcat.app/en/compare/mobbin: summary_large_image

  • HTTPS page: passed · 20/20 applicable observations

    https://refcat.app/en: https://refcat.app/en

    https://refcat.app/dashboard/login?next=%2F: https://refcat.app/dashboard/login?next=%2F

    https://refcat.app/en/blog: https://refcat.app/en/blog

    https://refcat.app/en/changelog: https://refcat.app/en/changelog

    https://refcat.app/en/compare/mobbin: https://refcat.app/en/compare/mobbin

  • No insecure embedded resources: passed · 20/20 applicable observations

    https://refcat.app/en: 0 HTTP embedded resource URL(s)

    https://refcat.app/dashboard/login?next=%2F: 0 HTTP embedded resource URL(s)

    https://refcat.app/en/blog: 0 HTTP embedded resource URL(s)

    https://refcat.app/en/changelog: 0 HTTP embedded resource URL(s)

    https://refcat.app/en/compare/mobbin: 0 HTTP embedded resource URL(s)

  • Homepage favicon available: passed · 1/1 applicable observations

    https://refcat.app/favicon.svg: HTTP 200; image/svg+xml

  • Homepage sharing image available: passed · 1/1 applicable observations

    https://refcat.app/og-image.png: HTTP 200; image/png

  • Root sitemap available: passed · 1/1 applicable observations

    https://refcat.app/sitemap.xml: HTTP 200; sitemap root found

  • Rendered color contrast: unverified · 0/1 applicable observations

    https://refcat.app/en: Requires a browser or human assessment; excluded from points.

  • Keyboard and focus behavior: unverified · 0/1 applicable observations

    https://refcat.app/en: Requires a browser or human assessment; excluded from points.

  • HSTS declared: passed · 1/1 applicable observations

    https://refcat.app/en: Strict-Transport-Security: max-age=31536000

  • Content Security Policy declared: passed · 1/1 applicable observations

    https://refcat.app/en: Content-Security-Policy: frame-ancestors 'none'

Sample reference: ec31eb3a26269f9d5148fdef207b0643f623fd997d592341a454dcfbd97c8884

No confirmed broken links in this sample. Unverified URLs are not evidence of healthy links.

Diagnostic checklist

33 passed · 0 need work · 3 not verified. Open a check for the evidence and suggested fix.

SEO
100.00
Structure
100.00
Sharing
100.00
Security
100.00
AI access
100.00
HTTP response measurement

338 ms median to homepage response headers. Measurements: 338, 225, 507 ms.

Same crawler, three sequential requests, DNS and TLS included. Timing is diagnostic only and never decides a position. This is server/network response, not browser loading or Core Web Vitals.

Your checklist over time

Oct 28

79.70/100

Oct 28

96.62/100

Oct 28

96.62/100

Same checklist version; page samples may differ. A score change does not by itself prove a particular issue was fixed.

Static checks inspect crawler-visible HTML; they do not certify accessibility or code quality.

SEO0 to improve
Page titlePassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Give each page a descriptive, non-empty <title>.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Distinct page titlesPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Use a title that describes the purpose of this page rather than repeating the same title across URLs.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Meta descriptionPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Add a non-empty meta name="description" that summarizes this page.

  • https://refcat.app/enExplore real product flows, UI screens and patterns. Turn a brief into grounded design direction and export references to Figma.
  • https://refcat.app/en/blogPractical research on product design, real UI patterns, Figma workflows and designing with AI.
  • https://refcat.app/en/changelogSee the latest Refcat features, fixes and product improvements, from the catalog and Figma exports to MCP and AI screens.
  • https://refcat.app/en/compare/mobbinCompare Refcat and Mobbin side by side: screens and flows in the library, Figma and MCP features, and monthly, quarterly and yearly prices.
  • https://refcat.app/en/compare/page-flowsCompare Refcat and Page Flows side by side: screens and flows in the library, Figma and MCP features, and monthly, quarterly and yearly prices.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Self-referencing canonicalPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Declare exactly one <link rel="canonical"> whose absolute URL is this page's own final URL (same scheme, host, path and query; only a trailing slash or fragment may differ). Cross-URL canonicals belong on duplicate pages, not on the indexable page itself. Reference: Google Search Central, canonicalization.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Root sitemap availablePassed

1/1 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Publish a sitemap URL set or index at /sitemap.xml. This checks its root, not every listed URL.

Accessibility0 to improve
Document languagePassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Declare a valid language tag on the html element, such as en or pt-BR.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Image alternatives declaredPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Add alt text to informative images. Use alt="" for decorative images. This check does not judge text quality.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Form controls namedPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Associate a label with each visible form control, or provide a non-empty aria-label / valid aria-labelledby.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Buttons namedPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Give every button visible text or an accessible name, including icon-only buttons.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Rendered color contrastNot verified

0/1 applicable observations passed. Informational; excluded from points.

How to improve: Check foreground/background contrast in the rendered page.

Keyboard and focus behaviorNot verified

0/1 applicable observations passed. Informational; excluded from points.

How to improve: Test every interactive control with a keyboard and inspect focus visibility.

Structure0 to improve
Main headingPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Add a descriptive H1 identifying the main topic.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Heading hierarchyPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Nest headings logically without skipping a level, starting with H1.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Main landmarkPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Mark the main content with one <main> or role="main" landmark.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Mobile viewportPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Add meta name="viewport" with width=device-width and do not disable user zoom.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Image dimensions declaredPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Declare width and height attributes (or an inline aspect-ratio style) on every visible <img> so the browser reserves space before the image loads. Reference: web.dev / Lighthouse "image elements have explicit width and height" (layout shift).

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Structured data syntaxPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Provide JSON-LD with @context and @type (or a typed @graph). Match the markup to the visible content; syntax alone does not validate its meaning. Reference: schema.org and Google structured data guidelines.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Sharing0 to improve
Open Graph titlePassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Provide a non-empty og:title meta property.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Open Graph descriptionPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Provide a non-empty og:description meta property.

  • https://refcat.app/enExplore real product flows, UI screens and patterns. Turn a brief into grounded design direction and export references to Figma.
  • https://refcat.app/en/blogPractical research on product design, real UI patterns, Figma workflows and designing with AI.
  • https://refcat.app/en/changelogSee the latest Refcat features, fixes and product improvements, from the catalog and Figma exports to MCP and AI screens.
  • https://refcat.app/en/compare/mobbinCompare Refcat and Mobbin side by side: screens and flows in the library, Figma and MCP features, and monthly, quarterly and yearly prices.
  • https://refcat.app/en/compare/page-flowsCompare Refcat and Page Flows side by side: screens and flows in the library, Figma and MCP features, and monthly, quarterly and yearly prices.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Open Graph typePassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Declare og:type, such as website or article.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Open Graph URLPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Set og:url to an absolute HTTP(S) URL for this content.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Open Graph image URLPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Set og:image to an absolute HTTP(S) image URL. Homepage image availability is checked separately.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Open Graph image descriptionPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Describe the sharing image with og:image:alt.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Social card typePassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Declare twitter:card as summary or summary_large_image for a website card.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Homepage favicon availablePassed

1/1 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Serve a non-empty public image with an image Content-Type.

Homepage sharing image availablePassed

1/1 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Serve a non-empty public image with an image Content-Type.

Security0 to improve
HTTPS pagePassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Serve the page over HTTPS with a valid certificate.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

No insecure embedded resourcesPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Use HTTPS for embedded script, image, stylesheet, frame, audio and video URLs.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

HSTS declaredPassed

1/1 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Send Strict-Transport-Security on HTTPS responses with max-age of at least 15552000 seconds (180 days); OWASP recommends one year and includeSubDomains. Reference: OWASP HTTP Strict Transport Security cheat sheet, MDN.

Content Security Policy declaredPassed

1/1 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Send a Content-Security-Policy header (or a <meta http-equiv="Content-Security-Policy"> on the page) that restricts script and resource sources. This check verifies presence, not policy strength. Reference: OWASP Content Security Policy cheat sheet, MDN.

AI access0 to improve
Content in initial HTMLPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Render meaningful main content on the server so readers can access it without executing JavaScript.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Performance0 to improve
HTML transfer budgetPassed

30/30 applicable observations passed. 1.00/1 checklist weight earned.

How to improve: Keep the uncompressed HTML at or below 500 KB. Remove duplicated inline payloads and unnecessary markup.

Showing up to five examples, with failed observations first. Full per-page observations are listed below and available in the report API.

Repeated homepage HTTP responsePassed

1/1 applicable observations passed. Informational; excluded from points.

How to improve: Improve server response and CDN caching. Median of three requests; diagnostic only, never a ranking tiebreak.

  • https://refcat.app/en3/3 successful measurements to response headers. Includes DNS and TLS; excludes rendering.
Browser loading and Core Web VitalsNot verified

0/1 applicable observations passed. Informational; excluded from points.

How to improve: Measure LCP, INP and CLS with browser and field tools.

Checklist quality-v4. Competitive weights: SEO 25%, Accessibility 25%, Structure 25%, Sharing 10%, Security 15%. AI access and Performance are diagnostic only. This expanded report may include pages outside the competitive sample. Unverified scored checks earn no points; not-applicable and manual checks are excluded. Full methodology and references.

HTTP response timings

HTTP response time measured by our crawler; not browser loading speed.

Pages inspected (38)

All 38 pages from this scan.

PageStatusTitleH1ms
https://refcat.app/en200Refcat — Real UI flows and patterns for better products
Page checklist evidence
  • title: passedRefcat — Real UI flows and patterns for better products
  • description: passedExplore real product flows, UI screens and patterns. Turn a brief into grounded design direction and export references to Figma.
  • canonical: passedhttps://refcat.app/en
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 221 images lack an alt attribute
  • img-dimensions: passed0 of 221 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 2 controls have no HTML label
  • buttons: passed0 of 36 buttons have no HTML name
  • links-named: passed0 of 49 links have no HTML name
  • link-text: passed0 of 49 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedRefcat — Real UI flows and patterns for better products
  • og-description: passedExplore real product flows, UI screens and patterns. Turn a brief into grounded design direction and export references to Figma.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedRefcat — Real UI flows and patterns for better products
  • twitter-card: passedsummary_large_image
  • readable: passed761 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed142,798 bytes of HTML; budget 500,000
11,253
https://refcat.app/dashboard/login?next=%2F0—02
https://refcat.app/en/blog200Refcat blog — UI design research, patterns and workflows
Page checklist evidence
  • title: passedRefcat blog — UI design research, patterns and workflows
  • description: passedPractical research on product design, real UI patterns, Figma workflows and designing with AI.
  • canonical: passedhttps://refcat.app/en/blog
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 57 links have no HTML name
  • link-text: passed0 of 57 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedRefcat blog — UI design research, patterns and workflows
  • og-description: passedPractical research on product design, real UI patterns, Figma workflows and designing with AI.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en/blog
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedRefcat blog — UI design research, patterns and workflows
  • twitter-card: passedsummary_large_image
  • readable: passed3071 characters of crawler-visible content (minimum 100)
  • jsonld: passed1 of 1 blocks have valid JSON-LD structure
  • html-size: passed114,506 bytes of HTML; budget 500,000
1380
https://refcat.app/en/changelog200Refcat changelog — New features and improvements
Page checklist evidence
  • title: passedRefcat changelog — New features and improvements
  • description: passedSee the latest Refcat features, fixes and product improvements, from the catalog and Figma exports to MCP and AI screens.
  • canonical: passedhttps://refcat.app/en/changelog
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 41 links have no HTML name
  • link-text: passed0 of 41 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/changelog
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedRefcat changelog — New features and improvements
  • og-description: passedSee the latest Refcat features, fixes and product improvements, from the catalog and Figma exports to MCP and AI screens.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en/changelog
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedRefcat changelog — New features and improvements
  • twitter-card: passedsummary_large_image
  • readable: passed6087 characters of crawler-visible content (minimum 100)
  • jsonld: passed1 of 1 blocks have valid JSON-LD structure
  • html-size: passed49,818 bytes of HTML; budget 500,000
1540
https://refcat.app/en/compare/mobbin200Refcat vs Mobbin: library, features and pricing compared
Page checklist evidence
  • title: passedRefcat vs Mobbin: library, features and pricing compared
  • description: passedCompare Refcat and Mobbin side by side: screens and flows in the library, Figma and MCP features, and monthly, quarterly and yearly prices.
  • canonical: passedhttps://refcat.app/en/compare/mobbin
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 6 buttons have no HTML name
  • links-named: passed0 of 48 links have no HTML name
  • link-text: passed0 of 48 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/compare/mobbin
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedRefcat vs Mobbin: library, features and pricing compared
  • og-description: passedCompare Refcat and Mobbin side by side: screens and flows in the library, Figma and MCP features, and monthly, quarterly and yearly prices.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en/compare/mobbin
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedRefcat vs Mobbin: library, features and pricing compared
  • twitter-card: passedsummary_large_image
  • readable: passed3118 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed70,330 bytes of HTML; budget 500,000
1303
https://refcat.app/en/compare/page-flows200Refcat vs Page Flows: library, features and pricing compared
Page checklist evidence
  • title: passedRefcat vs Page Flows: library, features and pricing compared
  • description: passedCompare Refcat and Page Flows side by side: screens and flows in the library, Figma and MCP features, and monthly, quarterly and yearly prices.
  • canonical: passedhttps://refcat.app/en/compare/page-flows
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 6 buttons have no HTML name
  • links-named: passed0 of 46 links have no HTML name
  • link-text: passed0 of 46 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/compare/page-flows
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedRefcat vs Page Flows: library, features and pricing compared
  • og-description: passedCompare Refcat and Page Flows side by side: screens and flows in the library, Figma and MCP features, and monthly, quarterly and yearly prices.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en/compare/page-flows
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedRefcat vs Page Flows: library, features and pricing compared
  • twitter-card: passedsummary_large_image
  • readable: passed3229 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed70,705 bytes of HTML; budget 500,000
1339
https://refcat.app/en/compare/refero200Refcat vs Refero: library, features and pricing compared
Page checklist evidence
  • title: passedRefcat vs Refero: library, features and pricing compared
  • description: passedCompare Refcat and Refero side by side: screens and flows in the library, Figma and MCP features, and monthly, quarterly and yearly prices.
  • canonical: passedhttps://refcat.app/en/compare/refero
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 6 buttons have no HTML name
  • links-named: passed0 of 46 links have no HTML name
  • link-text: passed0 of 46 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/compare/refero
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedRefcat vs Refero: library, features and pricing compared
  • og-description: passedCompare Refcat and Refero side by side: screens and flows in the library, Figma and MCP features, and monthly, quarterly and yearly prices.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en/compare/refero
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedRefcat vs Refero: library, features and pricing compared
  • twitter-card: passedsummary_large_image
  • readable: passed2868 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed69,115 bytes of HTML; budget 500,000
1628
https://refcat.app/en/content200Inside the Refcat library — apps, sites, ads, emails, games
Page checklist evidence
  • title: passedInside the Refcat library — apps, sites, ads, emails, games
  • description: passedSee how many app and web screens, store listings, ad creatives, emails, game UIs and design references Refcat has, by tag.
  • canonical: passedhttps://refcat.app/en/content
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 48 links have no HTML name
  • link-text: passed0 of 48 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/content
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedInside the Refcat library — apps, sites, ads, emails, games
  • og-description: passedSee how many app and web screens, store listings, ad creatives, emails, game UIs and design references Refcat has, by tag.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en/content
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedInside the Refcat library — apps, sites, ads, emails, games
  • twitter-card: passedsummary_large_image
  • readable: passed669 characters of crawler-visible content (minimum 100)
  • jsonld: passed1 of 1 blocks have valid JSON-LD structure
  • html-size: passed46,258 bytes of HTML; budget 500,000
1271
https://refcat.app/en/developers200Developer API — Refcat
Page checklist evidence
  • title: passedDeveloper API — Refcat
  • description: passedRead and search the Refcat catalog: apps, flows, screens and emails. All endpoints use GET and return JSON.
  • canonical: passedhttps://refcat.app/en/developers
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 45 links have no HTML name
  • link-text: passed0 of 45 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/developers
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedDeveloper API — Refcat
  • og-description: passedRead and search the Refcat catalog: apps, flows, screens and emails. All endpoints use GET and return JSON.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en/developers
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedDeveloper API — Refcat
  • twitter-card: passedsummary_large_image
  • readable: passed22328 characters of crawler-visible content (minimum 100)
  • jsonld: passed1 of 1 blocks have valid JSON-LD structure
  • html-size: passed100,463 bytes of HTML; budget 500,000
1464
https://refcat.app/en/guides/mcp200How to connect Refcat MCP to Claude and Cursor
Page checklist evidence
  • title: passedHow to connect Refcat MCP to Claude and Cursor
  • description: passedSet up the Refcat MCP server, create an API key and search real UI references from your AI coding client.
  • canonical: passedhttps://refcat.app/en/guides/mcp
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 43 links have no HTML name
  • link-text: passed0 of 43 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/guides/mcp
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedHow to connect Refcat MCP to Claude and Cursor
  • og-description: passedSet up the Refcat MCP server, create an API key and search real UI references from your AI coding client.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en/guides/mcp
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedHow to connect Refcat MCP to Claude and Cursor
  • twitter-card: passedsummary_large_image
  • readable: passed835 characters of crawler-visible content (minimum 100)
  • jsonld: passed1 of 1 blocks have valid JSON-LD structure
  • html-size: passed30,215 bytes of HTML; budget 500,000
1500
https://refcat.app/en/guides/web-to-figma200Web to Figma Chrome extension — Refcat guide
Page checklist evidence
  • title: passedWeb to Figma Chrome extension — Refcat guide
  • description: passedCapture a web page and turn it into editable Figma layers with the Refcat Chrome extension.
  • canonical: passedhttps://refcat.app/en/guides/web-to-figma
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/guides/web-to-figma
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedWeb to Figma Chrome extension — Refcat guide
  • og-description: passedCapture a web page and turn it into editable Figma layers with the Refcat Chrome extension.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en/guides/web-to-figma
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedWeb to Figma Chrome extension — Refcat guide
  • twitter-card: passedsummary_large_image
  • readable: passed1054 characters of crawler-visible content (minimum 100)
  • jsonld: passed1 of 1 blocks have valid JSON-LD structure
  • html-size: passed30,347 bytes of HTML; budget 500,000
1307
https://refcat.app/en/roadmap200Refcat product roadmap
Page checklist evidence
  • title: passedRefcat product roadmap
  • description: passedSee what Refcat is planning, building and shipping next.
  • canonical: passedhttps://refcat.app/en/roadmap
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 3 controls have no HTML label
  • buttons: passed0 of 11 buttons have no HTML name
  • links-named: passed0 of 47 links have no HTML name
  • link-text: passed0 of 47 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/roadmap
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedRefcat product roadmap
  • og-description: passedSee what Refcat is planning, building and shipping next.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en/roadmap
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedRefcat product roadmap
  • twitter-card: passedsummary_large_image
  • readable: passed9378 characters of crawler-visible content (minimum 100)
  • jsonld: passed1 of 1 blocks have valid JSON-LD structure
  • html-size: passed71,067 bytes of HTML; budget 500,000
1336
https://refcat.app/dashboard/login?next=%2F%3Fq%3Dcheckout0—00
https://refcat.app/dashboard/login?next=%2F%3Fq%3Ddashboard0—01
https://refcat.app/dashboard/login?next=%2F%3Fq%3Donboarding0—00
https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dpro%26interval%3Dyear0—00
https://refcat.app/dashboard/login?next=%2Fupgrade%3Fplan%3Dstudio%26interval%3Dyear0—00
https://refcat.app/en/cookies200Cookie policy — Refcat
Page checklist evidence
  • title: passedCookie policy — Refcat
  • description: passedHow and why Refcat uses cookies and similar technologies, which ones are required, and how to manage your choices.
  • canonical: passedhttps://refcat.app/en/cookies
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 41 links have no HTML name
  • link-text: passed0 of 41 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/cookies
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedCookie policy — Refcat
  • og-description: passedHow and why Refcat uses cookies and similar technologies, which ones are required, and how to manage your choices.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en/cookies
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedCookie policy — Refcat
  • twitter-card: passedsummary_large_image
  • readable: passed1222 characters of crawler-visible content (minimum 100)
  • jsonld: passed1 of 1 blocks have valid JSON-LD structure
  • html-size: passed31,061 bytes of HTML; budget 500,000
1226
https://refcat.app/en/privacy200Privacy policy — Refcat
Page checklist evidence
  • title: passedPrivacy policy — Refcat
  • description: passedHow Refcat collects, uses and protects personal information.
  • canonical: passedhttps://refcat.app/en/privacy
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 41 links have no HTML name
  • link-text: passed0 of 41 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/privacy
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedPrivacy policy — Refcat
  • og-description: passedHow Refcat collects, uses and protects personal information.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en/privacy
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedPrivacy policy — Refcat
  • twitter-card: passedsummary_large_image
  • readable: passed5252 characters of crawler-visible content (minimum 100)
  • jsonld: passed1 of 1 blocks have valid JSON-LD structure
  • html-size: passed35,679 bytes of HTML; budget 500,000
1267
https://refcat.app/en/terms200Terms and conditions — Refcat
Page checklist evidence
  • title: passedTerms and conditions — Refcat
  • description: passedTerms governing the use of Refcat services.
  • canonical: passedhttps://refcat.app/en/terms
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 41 links have no HTML name
  • link-text: passed0 of 41 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/terms
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedTerms and conditions — Refcat
  • og-description: passedTerms governing the use of Refcat services.
  • og-type: passedwebsite
  • og-url: passedhttps://refcat.app/en/terms
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedTerms and conditions — Refcat
  • twitter-card: passedsummary_large_image
  • readable: passed2346 characters of crawler-visible content (minimum 100)
  • jsonld: passed1 of 1 blocks have valid JSON-LD structure
  • html-size: passed32,900 bytes of HTML; budget 500,000
1334
https://refcat.app/en/blog/design-dense-dashboards-around-a-real-question200Design dense dashboards around a real question — Refcat
Page checklist evidence
  • title: passedDesign dense dashboards around a real question — Refcat
  • description: passedOrganize dense dashboards around a concrete decision, with clear metric definitions, useful tables, and honest unavailable-data states.
  • canonical: passedhttps://refcat.app/en/blog/design-dense-dashboards-around-a-real-question
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/design-dense-dashboards-around-a-real-question
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedDesign dense dashboards around a real question — Refcat
  • og-description: passedOrganize dense dashboards around a concrete decision, with clear metric definitions, useful tables, and honest unavailable-data states.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/design-dense-dashboards-around-a-real-question
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedDesign dense dashboards around a real question
  • twitter-card: passedsummary_large_image
  • readable: passed3482 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed40,279 bytes of HTML; budget 500,000
1338
https://refcat.app/en/blog/use-interface-motion-to-explain-change200Use interface motion to explain change — Refcat
Page checklist evidence
  • title: passedUse interface motion to explain change — Refcat
  • description: passedUse motion to explain a specific change, preserve orientation, and keep the same information available with reduced motion.
  • canonical: passedhttps://refcat.app/en/blog/use-interface-motion-to-explain-change
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/use-interface-motion-to-explain-change
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedUse interface motion to explain change — Refcat
  • og-description: passedUse motion to explain a specific change, preserve orientation, and keep the same information available with reduced motion.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/use-interface-motion-to-explain-change
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedUse interface motion to explain change
  • twitter-card: passedsummary_large_image
  • readable: passed3432 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed39,978 bytes of HTML; budget 500,000
1286
https://refcat.app/en/blog/turn-a-ui-idea-into-a-testable-product-hypothesis200Turn a UI idea into a testable product hypothesis — Refcat
Page checklist evidence
  • title: passedTurn a UI idea into a testable product hypothesis — Refcat
  • description: passedConnect a UI change to a clear hypothesis, a stable treatment, and an event that measures completed work rather than clicks alone.
  • canonical: passedhttps://refcat.app/en/blog/turn-a-ui-idea-into-a-testable-product-hypothesis
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/turn-a-ui-idea-into-a-testable-product-hypothesis
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedTurn a UI idea into a testable product hypothesis — Refcat
  • og-description: passedConnect a UI change to a clear hypothesis, a stable treatment, and an event that measures completed work rather than clicks alone.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/turn-a-ui-idea-into-a-testable-product-hypothesis
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedTurn a UI idea into a testable product hypothesis
  • twitter-card: passedsummary_large_image
  • readable: passed3409 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed40,169 bytes of HTML; budget 500,000
1218
https://refcat.app/en/blog/a-practical-keyboard-review-for-product-designers200A practical keyboard review for product designers — Refcat
Page checklist evidence
  • title: passedA practical keyboard review for product designers — Refcat
  • description: passedReview focus order, dialogs, feedback, and return paths with a real keyboard task, then document behavior that can be checked.
  • canonical: passedhttps://refcat.app/en/blog/a-practical-keyboard-review-for-product-designers
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 43 links have no HTML name
  • link-text: passed0 of 43 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/a-practical-keyboard-review-for-product-designers
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedA practical keyboard review for product designers — Refcat
  • og-description: passedReview focus order, dialogs, feedback, and return paths with a real keyboard task, then document behavior that can be checked.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/a-practical-keyboard-review-for-product-designers
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedA practical keyboard review for product designers
  • twitter-card: passedsummary_large_image
  • readable: passed3387 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed40,250 bytes of HTML; budget 500,000
1272
https://refcat.app/en/blog/make-subscription-changes-easy-to-understand200Make subscription changes easy to understand — Refcat
Page checklist evidence
  • title: passedMake subscription changes easy to understand — Refcat
  • description: passedMake upgrades, temporary discounts, cancellations, and resulting access understandable across the whole account journey.
  • canonical: passedhttps://refcat.app/en/blog/make-subscription-changes-easy-to-understand
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/make-subscription-changes-easy-to-understand
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedMake subscription changes easy to understand — Refcat
  • og-description: passedMake upgrades, temporary discounts, cancellations, and resulting access understandable across the whole account journey.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/make-subscription-changes-easy-to-understand
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedMake subscription changes easy to understand
  • twitter-card: passedsummary_large_image
  • readable: passed3472 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed40,139 bytes of HTML; budget 500,000
1334
https://refcat.app/en/blog/design-forms-for-correction-not-just-completion200Design forms for correction, not just completion — Refcat
Page checklist evidence
  • title: passedDesign forms for correction, not just completion — Refcat
  • description: passedDesign validation, server errors, and retries as a complete correction loop that preserves the work someone has already entered.
  • canonical: passedhttps://refcat.app/en/blog/design-forms-for-correction-not-just-completion
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 43 links have no HTML name
  • link-text: passed0 of 43 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/design-forms-for-correction-not-just-completion
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedDesign forms for correction, not just completion — Refcat
  • og-description: passedDesign validation, server errors, and retries as a complete correction loop that preserves the work someone has already entered.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/design-forms-for-correction-not-just-completion
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedDesign forms for correction, not just completion
  • twitter-card: passedsummary_large_image
  • readable: passed3443 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed40,315 bytes of HTML; budget 500,000
1332
https://refcat.app/en/blog/empty-states-that-explain-what-happens-next200Empty states that explain what happens next — Refcat
Page checklist evidence
  • title: passedEmpty states that explain what happens next — Refcat
  • description: passedDistinguish a new account, an unsuccessful search, and a failed request, then give each empty state an honest and useful next step.
  • canonical: passedhttps://refcat.app/en/blog/empty-states-that-explain-what-happens-next
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/empty-states-that-explain-what-happens-next
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedEmpty states that explain what happens next — Refcat
  • og-description: passedDistinguish a new account, an unsuccessful search, and a failed request, then give each empty state an honest and useful next step.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/empty-states-that-explain-what-happens-next
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedEmpty states that explain what happens next
  • twitter-card: passedsummary_large_image
  • readable: passed3356 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed39,924 bytes of HTML; budget 500,000
1298
https://refcat.app/en/blog/design-navigation-around-the-user-s-next-decision200Design navigation around the user's next decision — Refcat
Page checklist evidence
  • title: passedDesign navigation around the user's next decision — Refcat
  • description: passedA practical way to connect navigation labels, meaningful links, and return paths to the decisions people actually need to make.
  • canonical: passedhttps://refcat.app/en/blog/design-navigation-around-the-user-s-next-decision
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/design-navigation-around-the-user-s-next-decision
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedDesign navigation around the user's next decision — Refcat
  • og-description: passedA practical way to connect navigation labels, meaningful links, and return paths to the decisions people actually need to make.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/design-navigation-around-the-user-s-next-decision
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedDesign navigation around the user's next decision
  • twitter-card: passedsummary_large_image
  • readable: passed3666 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed40,706 bytes of HTML; budget 500,000
1305
https://refcat.app/en/blog/a-design-handoff-that-explains-behavior-not-just-screens200A design handoff that explains behavior, not just screens
Page checklist evidence
  • title: passedA design handoff that explains behavior, not just screens
  • description: passedConnect screens to data, permissions, state transitions, and acceptance scenarios for a handoff engineers can implement.
  • canonical: passedhttps://refcat.app/en/blog/a-design-handoff-that-explains-behavior-not-just-screens
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/a-design-handoff-that-explains-behavior-not-just-screens
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedA design handoff that explains behavior, not just screens
  • og-description: passedConnect screens to data, permissions, state transitions, and acceptance scenarios for a handoff engineers can implement.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/a-design-handoff-that-explains-behavior-not-just-screens
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedA design handoff that explains behavior, not just screens
  • twitter-card: passedsummary_large_image
  • readable: passed4820 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed42,648 bytes of HTML; budget 500,000
1265
https://refcat.app/en/blog/extract-a-design-system-from-references-without-copying-a-brand200Extract a design system from references, not a brand
Page checklist evidence
  • title: passedExtract a design system from references, not a brand
  • description: passedUse reference flows to develop your own tokens, component rules, and system decisions without copying another brand.
  • canonical: passedhttps://refcat.app/en/blog/extract-a-design-system-from-references-without-copying-a-brand
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/extract-a-design-system-from-references-without-copying-a-brand
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedExtract a design system from references, not a brand
  • og-description: passedUse reference flows to develop your own tokens, component rules, and system decisions without copying another brand.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/extract-a-design-system-from-references-without-copying-a-brand
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedExtract a design system from references without copying a brand
  • twitter-card: passedsummary_large_image
  • readable: passed4773 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed42,571 bytes of HTML; budget 500,000
1208
https://refcat.app/en/blog/design-the-interface-states-your-happy-path-leaves-out200Design the interface states your happy path leaves out
Page checklist evidence
  • title: passedDesign the interface states your happy path leaves out
  • description: passedDesign loading, empty, error, and partial-success states with clear recovery paths and concrete transition rules.
  • canonical: passedhttps://refcat.app/en/blog/design-the-interface-states-your-happy-path-leaves-out
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/design-the-interface-states-your-happy-path-leaves-out
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedDesign the interface states your happy path leaves out
  • og-description: passedDesign loading, empty, error, and partial-success states with clear recovery paths and concrete transition rules.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/design-the-interface-states-your-happy-path-leaves-out
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedDesign the interface states your happy path leaves out
  • twitter-card: passedsummary_large_image
  • readable: passed4642 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed42,507 bytes of HTML; budget 500,000
1296
https://refcat.app/en/blog/compare-ios-android-and-web-references-without-mixing-their-assumptions200Compare iOS, Android and web references without mixing them
Page checklist evidence
  • title: passedCompare iOS, Android and web references without mixing them
  • description: passedCompare iOS, Android, and web flows through shared user tasks while keeping platform context and unknown behavior visible.
  • canonical: passedhttps://refcat.app/en/blog/compare-ios-android-and-web-references-without-mixing-their-assumptions
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/compare-ios-android-and-web-references-without-mixing-their-assumptions
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedCompare iOS, Android and web references without mixing them
  • og-description: passedCompare iOS, Android, and web flows through shared user tasks while keeping platform context and unknown behavior visible.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/compare-ios-android-and-web-references-without-mixing-their-assumptions
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedCompare iOS, Android, and web references without mixing their assumptions
  • twitter-card: passedsummary_large_image
  • readable: passed4560 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed42,629 bytes of HTML; budget 500,000
1205
https://refcat.app/en/blog/bring-a-web-reference-into-figma-without-losing-the-question200Bring a web reference into Figma without losing the question
Page checklist evidence
  • title: passedBring a web reference into Figma without losing the question
  • description: passedInstall Refcat Web to Figma, choose the right capture mode, and turn editable imports into focused design research.
  • canonical: passedhttps://refcat.app/en/blog/bring-a-web-reference-into-figma-without-losing-the-question
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/bring-a-web-reference-into-figma-without-losing-the-question
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedBring a web reference into Figma without losing the question
  • og-description: passedInstall Refcat Web to Figma, choose the right capture mode, and turn editable imports into focused design research.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/bring-a-web-reference-into-figma-without-losing-the-question
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedBring a web reference into Figma without losing the question
  • twitter-card: passedsummary_large_image
  • readable: passed4329 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed41,715 bytes of HTML; budget 500,000
1505
https://refcat.app/en/blog/review-a-checkout-flow-beyond-the-payment-button200Review a checkout flow beyond the payment button — Refcat
Page checklist evidence
  • title: passedReview a checkout flow beyond the payment button — Refcat
  • description: passedReview pricing promises, temporary discounts, payment failures, and confirmation as one connected checkout experience.
  • canonical: passedhttps://refcat.app/en/blog/review-a-checkout-flow-beyond-the-payment-button
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/review-a-checkout-flow-beyond-the-payment-button
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedReview a checkout flow beyond the payment button — Refcat
  • og-description: passedReview pricing promises, temporary discounts, payment failures, and confirmation as one connected checkout experience.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/review-a-checkout-flow-beyond-the-payment-button
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedReview a checkout flow beyond the payment button
  • twitter-card: passedsummary_large_image
  • readable: passed4760 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed42,441 bytes of HTML; budget 500,000
1193
https://refcat.app/en/blog/audit-an-onboarding-flow-before-you-redesign-it200Audit an onboarding flow before you redesign it — Refcat
Page checklist evidence
  • title: passedAudit an onboarding flow before you redesign it — Refcat
  • description: passedMap the journey to a first useful outcome, identify unnecessary requests, and choose an onboarding change worth testing.
  • canonical: passedhttps://refcat.app/en/blog/audit-an-onboarding-flow-before-you-redesign-it
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/audit-an-onboarding-flow-before-you-redesign-it
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedAudit an onboarding flow before you redesign it — Refcat
  • og-description: passedMap the journey to a first useful outcome, identify unnecessary requests, and choose an onboarding change worth testing.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/audit-an-onboarding-flow-before-you-redesign-it
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedAudit an onboarding flow before you redesign it
  • twitter-card: passedsummary_large_image
  • readable: passed4625 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed42,169 bytes of HTML; budget 500,000
1335
https://refcat.app/en/blog/how-to-turn-ui-references-into-design-decisions200How to turn UI references into design decisions — Refcat
Page checklist evidence
  • title: passedHow to turn UI references into design decisions — Refcat
  • description: passedA practical workflow for turning UI inspiration into explicit decisions, contrasting examples, and testable proposals.
  • canonical: passedhttps://refcat.app/en/blog/how-to-turn-ui-references-into-design-decisions
  • h1: passed1 H1 element(s)
  • headings: passed0 skipped heading level(s)
  • main: passed1 main landmarks
  • lang: passeden
  • alt: passed0 of 1 images lack an alt attribute
  • img-dimensions: passed0 of 1 images lack width/height attributes or an aspect-ratio style
  • labels: passed0 of 1 controls have no HTML label
  • buttons: passed0 of 1 buttons have no HTML name
  • links-named: passed0 of 42 links have no HTML name
  • link-text: passed0 of 42 links use generic text
  • viewport: passedwidth=device-width, initial-scale=1
  • https: passedhttps://refcat.app/en/blog/how-to-turn-ui-references-into-design-decisions
  • mixed: passed0 HTTP embedded resource URL(s)
  • og-title: passedHow to turn UI references into design decisions — Refcat
  • og-description: passedA practical workflow for turning UI inspiration into explicit decisions, contrasting examples, and testable proposals.
  • og-type: passedarticle
  • og-url: passedhttps://refcat.app/en/blog/how-to-turn-ui-references-into-design-decisions
  • og-image: passedhttps://refcat.app/og-image.png
  • og-alt: passedHow to turn UI references into design decisions
  • twitter-card: passedsummary_large_image
  • readable: passed4441 characters of crawler-visible content (minimum 100)
  • jsonld: passed2 of 2 blocks have valid JSON-LD structure
  • html-size: passed42,085 bytes of HTML; budget 500,000
1196
https://refcat.app/refcat-skill.md200—0210
https://refcat.app/refcat-cursor.mdc200—0250
Optional AI signals

Informational signals; these do not certify search visibility or unlock S-Tier.

  • llms.txtGuide for AI agents
  • Structured dataJSON-LD on the homepage
  • Semantic HTMLMain and navigation landmarks
Browser measurements · supplementary

Mobile page report

refcat.app

https://refcat.app/

Measured · 10/28/2026, 1:13:39 AM UTC

Redirected to: https://refcat.app/en

Speed
60
Accessibility
100
SEO basics
100
Main content (LCP)
20.0 s
Layout shifts (CLS)
0.005
Blocking time (TBT)
150 ms
Measurement notes (1)
  • The page may not be loading as expected because your test URL (https://refcat.app/) was redirected to https://refcat.app/en. Try testing the second URL directly.

Your next improvements

Measured findings to investigate, ordered by audit score.

1. Largest Contentful Paint

Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)

2. Forced reflow

A forced reflow occurs when JavaScript queries geometric properties (such as `offsetWidth`) after styles have been invalidated by a change to the DOM state. This can result in poor performance. Learn more about [forced reflows](https://developer.chrome.com/docs/performance/insights/forced-reflow) and possible mitigations.

3. Network dependency tree

[Avoid chaining critical requests](https://developer.chrome.com/docs/performance/insights/network-dependency-tree) by reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load.

4. Time to Interactive

Time to Interactive is the amount of time it takes for the page to become fully interactive. [Learn more about the Time to Interactive metric](https://developer.chrome.com/docs/lighthouse/performance/interactive/).

5. First Contentful Paint

First Contentful Paint marks the time at which the first text or image is painted. [Learn more about the First Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/).

6. Speed Index

Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).

7. Max Potential First Input Delay

The maximum potential First Input Delay that your users could experience is the duration of the longest task. [Learn more about the Maximum Potential First Input Delay metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-max-potential-fid/).

8. Total Blocking Time

Sum of all time periods between FCP and Time to Interactive, when task length exceeded 50ms, expressed in milliseconds. [Learn more about the Total Blocking Time metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/).

Fix with your coding assistant

Copy a ready-to-use prompt with the issues and affected URLs.

Battle scoring rules

The arena winner follows the verified ranking: internal link health first, then the published two-decimal quality score. Both sites need two agreeing standard observations. Browser performance, accessibility and SEO are complementary diagnostics and do not move the ranking or decide its winner. Page-only battles compare compatible rounds; performance differences up to five points draw, and equal round wins remain a tie. Missing measurements never count as zero. Browser audits do not certify accessibility. Saved results keep their measured evidence; start a rematch for a newer comparison.