Report loading
www.hometori.com
Preparing the full page inventory and screenshots.
Report loading
Preparing the full page inventory and screenshots.
Poor
Health Score
Score by category
The headline health score combines page-level quality and site-wide repeat patterns, then stays anchored to the weakest visible category so it never looks worse than every category beneath it.
Section 01
Summary language has been tempered to match the structured findings: this scan does not contain any CRITICAL severity findings.
The absence of a Content-Security-Policy (CSP) header leaves Hometori vulnerable to high-impact XSS and injection attacks, representing the most high-priority risk to the platform's security integrity.
The site demonstrates exceptional technical performance, with LCP and FCP metrics on both desktop and mobile significantly outperforming industry standards. The brand identity is professionally executed through a cohesive design system that utilizes a clear visual hierarchy and a unified color palette to guide users toward primary calls-to-action. From an SEO perspective, the implementation of structured data, such as BreadcrumbList and well-nested heading hierarchies, provides a robust foundation for search engine crawling and organic visibility.
However, critical usability and accessibility gaps threaten user retention and regulatory compliance. On desktop, calculator input fields and range sliders lack explicit programmatic labels, rendering them difficult to navigate for screen reader users. Furthermore, certain interface elements fail to meet minimum color contrast thresholds, which compromises legibility for visually impaired users. On mobile, the interactive "Loan setup" section is too dense, creating a high frequency of accidental taps on adjacent controls that degrades the overall mobile experience.
A significant opportunity exists to enhance search visibility by enriching the WebApplication schema with specific product features and offers. Simultaneously, transitioning hero section copy from purely functional descriptions to benefit-driven value propositions presents a clear path to increasing user engagement within the refinance simulator.
To mitigate immediate risk, the first 30 days must focus on:
5 highest-impact findings, ranked.
The hero image is the Largest Contentful Paint (LCP) element. While LCP is currently fast, adding `fetchpriority='high'` to this specific image would further optimize the initial render and ensure it remains stable as content grows.
How to fix: Add `fetchpriority='high'` to the `<img>` tag in the hero section. Example: `<img fetchpriority='high' alt='...' src='...' />`
On /
No CSP header found. The site is vulnerable to XSS and injection attacks.
How to fix: Add a Content-Security-Policy header. Start restrictive: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'
On /refinance
Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds. Fix any of the following: Element has insufficient color contrast of 2.56 (foreground color: #94a3b8, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1
How to fix: Element matching `.mt-2.justify-between.text-slate-400 > span:nth-child(1)` has contrast ratio 2.56; WCAG AA requires 4.5:1. Increase the contrast between foreground and background colours (the Tailwind hint below proposes the next darker step in the same family if the offending class is a recognised palette utility). Reference: https://dequeuniversity.com/rules/axe/4.11/color-contrast?application=playwright Tailwind hint (measured against `#ffffff`): replace `text-slate-400` (#94a3b8) with `text-slate-500` (#64748b, 4.76:1 vs #ffffff) — the next darker step in the same `slate` family that passes WCAG AA (4.5:1).
On /calculator
While the visual text describes the input (e.g., 'Home Price'), the `<input type='range'>` elements are not programmatically linked to these labels via `aria-labelledby` or `aria-label`. This makes it difficult for screen reader users to understand which slider they are adjusting.
How to fix: Link each range slider to its descriptive label using an `aria-labelledby` attribute. For example, on the Home Price slider: `<input type='range' aria-labelledby='home-price-label' ...>` and ensure the ID is set on the label: `<label id='home-price-label'>Home Price</label>`.
On /calculator
While the visual design uses small, uppercase text above inputs (e.s., 'Current balance'), these are not explicitly associated with the `<input>` elements via a `<label for='...'>` or `aria-label`. This can make it difficult for 'Recognition rather than recall' (Heuristic 6) for users of assistive technology.
How to fix: Ensure each input field has an explicit label association. For example, change the current balance input to: <br/> <code class=''><label for='balance-input'>Current balance</label><br/><input id='balance-input' type='number' ... /></code>
On /refinance