0% found this document useful (0 votes)
6 views25 pages

Download

sd

Uploaded by

trieuzerotodev
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views25 pages

Download

sd

Uploaded by

trieuzerotodev
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

00:02 21/5/26 about:blank

[Link]
92 94 100 92

92 94 100 92

Performance Accessibility Best SEO


Practices

92

Performance
Values are estimated and may vary. The performance
score is calculated directly from these [Link]
calculator.
0–49 50–89 90–100
METRICS Expand view
First Contentful Paint Largest Contentful Paint
1.1 s 3.2 s
Total Blocking Time Cumulative Layout Shift
110 ms 0
Speed Index
2.0 s

Show audits relevant to: All FCP LCP TBT CLS


INSIGHTS
Render-blocking requests — Est savings of 300 ms
Requests are blocking the page's initial render, which may delay LCP. Deferring or inlining can move these network
requests out of the critical path. FCP LCP Unscored

URL Transfer Duration


Size
localhost 1st Party 24.6 KiB 160 ms
…chunks/%5Broot-of…%5D__09ykrnp._.css (localhost) 24.6 KiB 160 ms

Network dependency tree


Avoid chaining critical requests by reducing the length of chains, reducing the download size of resources, or
deferring the download of unnecessary resources to improve page load. LCP Unscored

Maximum critical path latency: 266 ms


Initial Navigation
about:blank 1/25
00:02 21/5/26 about:blank
[Link] - 266 ms, 31.95 KiB
…chunks/%5Broot-of…%5D__09ykrnp._.css (localhost) - 173 ms, 24.59 KiB
…media/2bbe8d2671613f1f-s.067x_6k0k23tk.woff2 (localhost) - 231 ms, 10.33 KiB

Preconnected origins
preconnect hints help the browser establish a connection earlier in the page load, saving time when the first
request for that origin is made. The following are the origins that the page preconnected to.
no origins were preconnected

Preconnect candidates
Add preconnect hints to your most important origins, but try to use no more than 4.
No additional origins are good candidates for preconnecting

Improve image delivery — Est savings of 82 KiB


Reducing the download time of images can improve the perceived load time of the page and LCP. Learn more about
optimizing image size FCP LCP Unscored

URL
localhost 1st Party

/_next/image?url=… (localhos

[Link].-[Link]-cover.w-[120px].h-[120px].sm:w-[155px].sm:h-[155px]
Increasing the image compre
could improve this image's d
size.
This image file is larger than
be (384x384) for its displaye
dimensions (240x240). Use
images to reduce the image
size.

/_next/image?url=… (localhos

[Link].-[Link]-cover.w-[120px].h-[120px].sm:w-[155px].sm:h-[155px]
Increasing the image compre
could improve this image's d
size.
This image file is larger than
be (384x384) for its displaye
dimensions (240x240). Use
images to reduce the image
size.

/_next/image?url=… (localhos

[Link].-[Link]-cover.w-[120px].h-[120px].sm:w-[155px].sm:h-[155px]
Increasing the image compre
could improve this image's d
size.
This image file is larger than
be (384x384) for its displaye
dimensions (240x240). Use

about:blank 2/25
00:02 21/5/26 about:blank

URL
images to reduce the image
size.

/_next/image?url=… (localhos

[Link]-w-[280px].sm:max-w-[340px].md:max-w-[420px].lg:w-[55…
This image file is larger than
be (640x640) for its displaye
dimensions (560x560). Use
images to reduce the image
size.

Legacy JavaScript — Est savings of 8 KiB


Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren't necessary for
modern browsers. Consider modifying your JavaScript build process to not transpile Baseline features, unless you
know you must support older browsers. Learn why most sites can deploy ES6+ code without transpiling FCP LCP
Unscored

URL Wasted bytes


localhost 1st Party 8.0 KiB
…chunks/node_modules_next_dist_115brz8._.js (localhost) 8.0 KiB
node_modules_next_dist_115brz8._.js:36 [Link]

node_modules_next_dist_115brz8._.js:16 [Link]

node_modules_next_dist_115brz8._.js:18 [Link]

node_modules_next_dist_115brz8._.js:32 [Link]

node_modules_next_dist_115brz8._.js:39 [Link]

node_modules_next_dist_115brz8._.js:10 [Link]

node_modules_next_dist_115brz8._.js:10 [Link]

Layout shift culprits


Layout shifts occur when elements move absent any user interaction. Investigate the causes of layout shifts, such as
elements being added, removed, or their fonts changing as the page loads. CLS Unscored

Element Layout shift


score
Total 0.000

0.000
[Link]:max-w-none
[Link]:[Link]:h-auto Unsized image
element
…media/2bbe8d2671613f1f-s.067x_6k0k23tk.woff2 (localhost) Web font
LCP breakdown
Each subpart has specific improvement strategies. Ideally, most of the LCP time should be spent on loading the
resources, not within delays. LCP Unscored
Subpart Duration
Time to first byte 120 ms
Resource load delay 20 ms
Resource load duration 30 ms
Element render delay 70 ms
about:blank 3/25
00:02 21/5/26 about:blank

[Link]-w-[280px].sm:max-w-[340px].md:max-w-[420px].lg:w-[55…

3rd parties
3rd party code can significantly impact load performance. Reduce and defer loading of 3rd party code to prioritize
your page's content. Unscored
3rd party Transfer size Main thread time
jaclholjkcdapeppngdgepndkjpomlfe 0 KiB 19 ms
chrome-extension://jaclholjkcdapeppngdgepndkjpomlfe/[Link] 0 KiB 11 ms
chrome-extension://jaclholjkcdapeppngdgepndkjpomlfe/[Link] 0 KiB 8 ms

These insights are also available in the Chrome DevTools Performance Panel - record a trace to view more detailed
information.

DIAGNOSTICS
Minify JavaScript — Est savings of 209 KiB
Minifying JavaScript files can reduce payload sizes and script parse time. Learn how to minify JavaScript. FCP LCP
Unscored

URL Transfer Est


Size Savings
localhost 1st Party 552.8 KiB 209.0 KiB
…chunks/node_modules_next_dist_client_0fhqo1d._.js (localhost) 147.5 KiB 66.5 KiB
…chunks/node_modules_next_dist_compiled_react-dom_058- 179.6 KiB 48.6 KiB
ah~._.js (localhost)
…chunks/node_modules_0f8kbyg._.js (localhost) 40.0 KiB 16.4 KiB
…chunks/node_modules_next_dist_115brz8._.js (localhost) 45.0 KiB 15.2 KiB
…chunks/node_modules_0xz7m26._.js (localhost) 24.2 KiB 14.8 KiB
…chunks/node_modules_next_dist_0tt2wve._.js (localhost) 35.8 KiB 13.8 KiB
…chunks/node_modules_next_dist_compiled_0rpq4pf._.js (localhost) 27.7 KiB 11.9 KiB
…chunks/turbopack-_0p44nws._.js (localhost) 21.9 KiB 11.1 KiB
…chunks/node_modules_next_dist_compiled_react-server-dom- 31.1 KiB 10.6 KiB
tur….js (localhost)

Page prevented back/forward cache restoration — 1 failure reason


Many navigations are performed by going back to a previous page, or forwards again. The back/forward cache
(bfcache) can speed up these return navigations. Learn more about the bfcache Unscored

Failure reason Failure type


Pages with WebSocket cannot enter back/forward cache. Pending browser support
[Link]

Reduce unused JavaScript — Est savings of 402 KiB


Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network
activity. Learn how to reduce unused JavaScript. FCP LCP Unscored
about:blank 4/25
00:02 21/5/26 about:blank

URL Transfer Est


Size Savings
localhost 1st Party 645.0 KiB 343.6 KiB
…chunks/node_modules_next_dist_compiled_next- 212.9 KiB 134.8 KiB
devtools_index_….js (localhost)
…chunks/node_modules_next_dist_client_0fhqo1d._.js (localhost) 147.5 KiB 77.1 KiB
…chunks/node_modules_next_dist_compiled_react-dom_058- 179.6 KiB 57.0 KiB
ah~._.js (localhost)
…chunks/node_modules_next_dist_0tt2wve._.js (localhost) 35.8 KiB 28.8 KiB
…chunks/node_modules_next_dist_115brz8._.js (localhost) 45.0 KiB 24.9 KiB
…chunks/node_modules_0xz7m26._.js (localhost) 24.2 KiB 21.0 KiB
Unattributable 108.0 KiB 58.8 KiB
chrome-extension://jaclholjkcdapeppngdgepndkjpomlfe/[Link] 44.5 KiB 29.7 KiB
chrome-extension://jaclholjkcdapeppngdgepndkjpomlfe/[Link] 63.5 KiB 29.0 KiB

Avoid long main-thread tasks — 4 long tasks found


Lists the longest tasks on the main thread, useful for identifying worst contributors to input delay. Learn how to avoid
long main-thread tasks TBT Unscored

URL Start Duration


Time
localhost 1st Party 411 ms
…chunks/node_modules_next_dist_compiled_react-dom_058-ah~._.js (localhost) 8,040 ms 198 ms
…chunks/node_modules_next_dist_client_0fhqo1d._.js (localhost) 7,733 ms 100 ms
…chunks/node_modules_next_dist_client_0fhqo1d._.js (localhost) 7,676 ms 57 ms
…chunks/node_modules_next_dist_compiled_next-devtools_index_….js (localhost) 7,984 ms 56 ms

User Timing marks and measures — 55 user timings


Consider instrumenting your app with the User Timing API to measure your app's real-world performance during key
user experiences. Learn more about User Timing marks. Unscored

Name Type Start Time Duration


​Preloads Measure 32.01 ms 0.07 ms
​RootLayout Measure 32.51 ms 0.52 ms
​NotFound Measure 32.89 ms 0.14 ms
​HTTPAccessErrorFallback Measure 32.94 ms 0.09 ms
​Loading Measure 33.34 ms 0.10 ms
​ClientLayout Measure 33.74 ms 0.60 ms
​ClientNotFound Measure 33.98 ms 0.37 ms
​Button Measure 34.15 ms 0.19 ms
​[Link] Measure 34.22 ms 0.12 ms

about:blank 5/25
00:02 21/5/26 about:blank

Name Type Start Time Duration


​[Link] Measure 34.27 ms 0.07 ms
​LinkComponent Measure 34.31 ms 0.03 ms
​Page Measure 34.76 ms 16.59 ms
​LandingPage Measure 34.83 ms 16.53 ms
​HeroSection Measure 34.99 ms 0.24 ms
​BenefitSection Measure 35.77 ms 0.31 ms
​TopSellingSection Measure 36.81 ms 14.55 ms
​ShoppingBag Measure 37.91 ms 0.06 ms
​OfferSection Measure 38.20 ms 0.63 ms
​WhyChooseUs Measure 39.58 ms 0.31 ms
​Testimonials Measure 40.49 ms 0.24 ms
​Footer Measure 41.29 ms 3.68 ms
​LinkComponent Measure 42.31 ms 0.05 ms
​LinkComponent Measure 42.86 ms 0.06 ms
​LinkComponent Measure 43.31 ms 0.06 ms
​LinkComponent Measure 43.51 ms 0.04 ms
​LinkComponent Measure 43.75 ms 0.04 ms
​LinkComponent Measure 44.00 ms 0.04 ms
​LinkComponent Measure 44.12 ms 0.03 ms
​LinkComponent Measure 44.26 ms 0.03 ms
​LinkComponent Measure 44.37 ms 0.03 ms
​LinkComponent Measure 44.48 ms 0.03 ms
​LinkComponent Measure 44.65 ms 0.03 ms
​LinkComponent Measure 44.75 ms 0.03 ms
​LinkComponent Measure 44.85 ms 0.03 ms
​LinkComponent Measure 44.94 ms 0.03 ms
​[Link] Measure 45.25 ms 1.87 ms
​NonIndex Measure 47.44 ms 0.01 ms
​ViewportWrapper Measure 47.52 ms 10.40 ms
​[Link] Measure 47.61 ms 10.32 ms
​MetadataWrapper Measure 48.00 ms 12.56 ms
​[Link] Measure 48.15 ms 12.41 ms
​ShoppingBag Measure 50.45 ms 0.12 ms
​ShoppingBag Measure 51.18 ms 0.18 ms

about:blank 6/25
00:02 21/5/26 about:blank

Name Type Start Time Duration


Cascading Update Measure 463.60 ms 0.40 ms
Mount Measure 464.50 ms 0.10 ms
Update Measure 514.20 ms 2.00 ms
Recovered Measure 516.20 ms 2.60 ms
​ForwardRef Measure 517.00 ms 0.10 ms
​ImagePreload Measure 517.10 ms 0.10 ms
​Suspense Measure 517.20 ms 1.40 ms
Reconnect Measure 527.70 ms 2.30 ms
Promise Resolved Measure 528.70 ms 6.00 ms
Reconnect Measure 531.50 ms 2.70 ms
Update Measure 1,536.70 ms 0.30 ms
Update Measure 2,535.40 ms 0.40 ms

More information about the performance of your application. These numbers don't directly affect the Performance score.

PASSED AUDITS (17) Hide


Use efficient cache lifetimes
A long cache lifetime can speed up repeat visits to your page. Learn more about caching. FCP LCP Unscored

Document request latency


Your first network request is the most important. Reduce its latency by avoiding redirects, ensuring a fast server
response, and enabling text compression. FCP LCP Unscored
Avoids redirects
Server responds quickly (observed 114 ms)
Applies text compression

Optimize DOM size


A large DOM can increase the duration of style calculations and layout reflows, impacting page responsiveness. A
large DOM will also increase memory usage. Learn how to avoid an excessive DOM size. Unscored
Statistic Element Value
Total 430
elements
button > div > svg > path
DOM depth <path fill-rule="evenodd" clip-rule="evenodd" d="M3.98071 1.125L1.125 3.98071L1.125 13
8.01929L3.98071 10.875H8.01929L10.875 8…" fill="currentColor">

body
Most 44
children

Duplicated JavaScript
Remove large, duplicate JavaScript modules from bundles to reduce unnecessary bytes consumed by network
activity. FCP LCP Unscored

Font display

about:blank 7/25
00:02 21/5/26 about:blank

Consider setting font-display to swap or optional to ensure text is consistently visible. swap can be further
optimized to mitigate layout shifts with font metric overrides. Unscored

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 and
possible mitigations. Unscored

INP breakdown
Start investigating how to improve INP by looking at the longest subpart. Unscored

LCP request discovery


Optimize LCP by making the LCP image discoverable from the HTML immediately, and avoiding lazy-loading LCP
Unscored
fetchpriority=high applied
Request is discoverable in initial document
lazy load not applied

[Link]-w-[280px].sm:max-w-[340px].md:max-w-[420px].lg:w-[55…

Modern HTTP
HTTP/2 and HTTP/3 offer many benefits over HTTP/1.1, such as multiplexing. Learn more about using modern HTTP.
FCP LCP Unscored

Optimize viewport for mobile


Tap interactions may be delayed by up to 300 ms if the viewport is not optimized for mobile. Unscored

meta

Minify CSS
Minifying CSS files can reduce network payload sizes. Learn how to minify CSS. FCP LCP Unscored

Reduce unused CSS


Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes
consumed by network activity. Learn how to reduce unused CSS. FCP LCP Unscored

Avoids enormous network payloads — Total size was 1,247 KiB


Large network payloads cost users real money and are highly correlated with long load times. Learn how to reduce
payload sizes. Unscored

URL Transfer
Size
localhost 1st Party 893.8 KiB
…chunks/node_modules_next_dist_compiled_next-devtools_index_….js (localhost) 213.3 KiB
…chunks/node_modules_next_dist_compiled_react-dom_058-ah~._.js (localhost) 179.9 KiB
…chunks/node_modules_next_dist_client_0fhqo1d._.js (localhost) 147.8 KiB
…media/1bffadaabf893a1e-s.p.16ipb6fqu393i.woff2 (localhost) 83.6 KiB
about:blank 8/25
00:02 21/5/26 about:blank

URL Transfer
Size
/_next/image?url=… (localhost) 65.6 KiB
…media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2 (localhost) 47.6 KiB
…chunks/node_modules_next_dist_115brz8._.js (localhost) 45.4 KiB
…chunks/node_modules_0f8kbyg._.js (localhost) 40.4 KiB
…chunks/node_modules_next_dist_0tt2wve._.js (localhost) 36.2 KiB
/_next/image?url=… (localhost) 34.0 KiB

JavaScript execution time — 1.0 s


Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads
helps with this. Learn how to reduce Javascript execution time. TBT Unscored

URL Total CPU Script Script


Time Evaluation Parse
localhost 1st Party 1,322 ms 741 ms 217 ms

chunks/node_modules_next_dist_compiled_0rpq4pf._.js (local 375 ms 348 ms 12 ms
host)

…chunks/node_modules_next_dist_compiled_react-dom_058- 374 ms 185 ms 79 ms


ah~._.js (localhost)
[Link] 255 ms 19 ms 14 ms

chunks/node_modules_next_dist_client_0fhqo1d._.js (localhost 218 ms 148 ms 56 ms
)

…chunks/node_modules_next_dist_compiled_next- 100 ms 42 ms 55 ms
devtools_index_….js (localhost)
Unattributable 170 ms 11 ms 0 ms
Unattributable 170 ms 11 ms 0 ms

Minimizes main-thread work — 1.7 s


Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads
helps with this. Learn how to minimize main-thread work TBT Unscored

Category Time Spent


Script Evaluation 813 ms
Script Parsing & Compilation 354 ms
Other 344 ms
Style & Layout 107 ms
Rendering 68 ms
Parse HTML & CSS 30 ms

Avoid non-composited animations

about:blank 9/25
00:02 21/5/26 about:blank

Animations which are not composited can be janky and increase CLS. Learn how to avoid non-composited
animations CLS Unscored

Image elements have explicit width and height


Set an explicit width and height on image elements to reduce layout shifts and improve CLS. Learn how to set image
dimensions CLS Unscored

94

Accessibility
These checks highlight opportunities to improve the accessibility of
your web app. Automatic detection can only detect a subset of issues
and does not guarantee the accessibility of your web app, so manual
testing is also encouraged.
CONTRAST
Background and foreground colors do not have a sufficient contrast ratio.
Low-contrast text is difficult or impossible for many users to read. Learn how to provide sufficient color contrast.

Failing Elements
[Link]:[Link]-[#ff7f7f].[Link]:[Link]-slate-400.m-0

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-[#ff7f7f]

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]:max-w-none

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-[#f4a4a4].[Link]:bg-[#ff7f7f].[Link]-2…

[Link]-xs.m-0

[Link]:[Link]:[Link]:[Link]:[Link]-…

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-xs.m-0
about:blank 10/25
00:02 21/5/26 about:blank

Failing Elements

[Link]:[Link]:[Link]:[Link]:[Link]-…

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-xs.m-0

[Link]:[Link]:[Link]:[Link]:[Link]-…

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-center.m-0

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-[#ff7f7f]

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-[#ff7f7f].[Link]-base.m-0

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-[#ff7f7f].[Link]-base.m-0

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-[#ff7f7f].[Link]-base.m-0

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-center.m-0

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-nums
about:blank 11/25
00:02 21/5/26 about:blank

Failing Elements

[Link]:[Link]-sm.b…

[Link]-[11px]

[Link]:[Link]-sm.b…

[Link]-nums

[Link]:[Link]-sm.b…

[Link]-[11px]

[Link]:[Link]-sm.b…

[Link]-nums

[Link]:[Link]-sm.b…

[Link]-[11px]

[Link]:[Link]-sm.b…

[Link]-[#ff7f7f].[Link]:mt-0

[Link]:[Link]-[#f4a4a4]/[Link]-[0.25px].lg:w-[350px]

[Link]-4.m-0

[Link]:[Link]-[#f4a4a4]/[Link]-[0.25px].lg:w-[350px]

about:blank 12/25
00:02 21/5/26 about:blank

Failing Elements
span

[Link]:[Link]-[#f4a4a4]/[Link]-[0.25px].lg:w-[350px]

[Link]-through

[Link]:[Link]-[#f4a4a4]/[Link]-[0.25px].lg:w-[350px]

[Link]-[#ff7f7f].[Link]:mt-0

[Link]:[Link]-[#f4a4a4]/[Link]-[0.25px].lg:w-[350px]

[Link]-4.m-0

[Link]:[Link]-[#f4a4a4]/[Link]-[0.25px].lg:w-[350px]

span

[Link]:[Link]-[#f4a4a4]/[Link]-[0.25px].lg:w-[350px]

[Link]-through

[Link]:[Link]-[#f4a4a4]/[Link]-[0.25px].lg:w-[350px]

[Link]-[#ff7f7f].[Link]:mt-0

[Link]:[Link]-[#f4a4a4]/[Link]-[0.25px].lg:w-[350px]

[Link]-4.m-0

[Link]:[Link]-[#f4a4a4]/[Link]-[0.25px].lg:w-[350px]

about:blank 13/25
00:02 21/5/26 about:blank

Failing Elements

span

[Link]:[Link]-[#f4a4a4]/[Link]-[0.25px].lg:w-[350px]

[Link]-through

[Link]:[Link]-[#f4a4a4]/[Link]-[0.25px].lg:w-[350px]

[Link]-center.m-0

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-[#ff7f7f]

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-sm.m-0

[Link]:[Link]:[Link]-[#FFA4A4].text-w…

[Link]-0.5.m-0

[Link]:[Link]:[Link]-[#FFA4A4].text-w…

[Link]-sm.m-0

[Link]:[Link]:[Link]-[#FFA4A4].text-w…

[Link]-0.5.m-0

[Link]:[Link]:[Link]-[#FFA4A4].text-w…

about:blank 14/25
00:02 21/5/26 about:blank

Failing Elements
[Link]-center.m-0

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-[#ff7f7f]

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]-slate-400.m-0

[Link]-[#fff6ed].[Link]:[Link]:gap-24

[Link]:text-left

[Link]:[Link]:[Link]:[Link]:[Link]:[Link]:pb-4

These are opportunities to improve the legibility of your content.

NAVIGATION
Heading elements are not in a sequentially-descending order
Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to
navigate and understand when using assistive technologies. Learn more about heading order.

Failing Elements
[Link]-normal.m-0

These are opportunities to improve keyboard navigation in your application.

ADDITIONAL ITEMS TO MANUALLY CHECK (10) Hide


Interactive controls are keyboard focusable
Custom interactive controls are keyboard focusable and display a focus indicator. Learn how to make custom
controls focusable. Unscored

Interactive elements indicate their purpose and state


Interactive elements, such as links and buttons, should indicate their state and be distinguishable from non-
interactive elements. Learn how to decorate interactive elements with affordance hints. Unscored

The page has a logical tab order

about:blank 15/25
00:02 21/5/26 about:blank

Tabbing through the page follows the visual layout. Users cannot focus elements that are offscreen. Learn more
about logical tab ordering. Unscored

Visual order on the page follows DOM order


DOM order matches the visual order, improving navigation for assistive technology. Learn more about DOM and
visual ordering. Unscored

User focus is not accidentally trapped in a region


A user can tab into and out of any control or region without accidentally trapping their focus. Learn how to avoid
focus traps. Unscored

The user's focus is directed to new content added to the page


If new content, such as a dialog, is added to the page, the user's focus is directed to it. Learn how to direct focus to
new content. Unscored

HTML5 landmark elements are used to improve navigation


Landmark elements (<main>, <nav>, etc.) are used to improve the keyboard navigation of the page for assistive
technology. Learn more about landmark elements. Unscored

Offscreen content is hidden from assistive technology


Offscreen content is hidden with display: none or aria-hidden=true. Learn how to properly hide offscreen content.
Unscored

Custom controls have associated labels


Custom interactive controls have associated labels, provided by aria-label or aria-labelledby. Learn more about
custom controls and labels. Unscored

Custom controls have ARIA roles


Custom interactive controls have appropriate ARIA roles. Learn how to add roles to custom controls. Unscored

These items address areas which an automated testing tool cannot cover. Learn more in our guide on conducting an
accessibility review.

PASSED AUDITS (21) Hide


[aria-*] attributes match their roles
Each ARIA role supports a specific subset of aria-* attributes. Mismatching these invalidates the aria-*
attributes. Learn how to match ARIA attributes to their roles.

[aria-hidden="true"] is not present on the document <body>


Assistive technologies, like screen readers, work inconsistently when aria-hidden="true" is set on the document
<body>. Learn how aria-hidden affects the document body.

[role] s have all required [aria-*] attributes


Some ARIA roles have required attributes that describe the state of the element to screen readers. Learn more about
roles and required attributes.

[role] values are valid


ARIA roles must have valid values in order to perform their intended accessibility functions. Learn more about valid
ARIA roles.

[aria-*] attributes have valid values


Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid values. Learn more about valid
values for ARIA attributes.

about:blank 16/25
00:02 21/5/26 about:blank

[aria-*] attributes are valid and not misspelled


Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid names. Learn more about valid
ARIA attributes.

Buttons have an accessible name


When a button doesn't have an accessible name, screen readers announce it as "button", making it unusable for
users who rely on screen readers. Learn how to make buttons more accessible.

Image elements have [alt] attributes


Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an
empty alt attribute. Learn more about the alt attribute.

[user-scalable="no"] is not used in the <meta name="viewport"> element and the [maximum-scale] attribute is
not less than 5.
Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the
contents of a web page. Learn more about the viewport meta tag.

ARIA attributes are used as specified for the element's role


Some ARIA attributes are only allowed on an element under certain conditions. Learn more about conditional ARIA
attributes.

[aria-hidden="true"] elements do not contain focusable descendents


Focusable descendents within an [aria-hidden="true"] element prevent those interactive elements from being
available to users of assistive technologies like screen readers. Learn how aria-hidden affects focusable elements.

Elements use only permitted ARIA attributes


Using ARIA attributes in roles where they are prohibited can mean that important information is not communicated to
users of assistive technologies. Learn more about prohibited ARIA roles.

Document has a <title> element


The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if
a page is relevant to their search. Learn more about document titles.

<html> element has a [lang] attribute


If a page doesn't specify a lang attribute, a screen reader assumes that the page is in the default language that the
user chose when setting up the screen reader. If the page isn't actually in the default language, then the screen
reader might not announce the page's text correctly. Learn more about the lang attribute.

<html> element has a valid value for its [lang] attribute


Specifying a valid BCP 47 language helps screen readers announce text properly. Learn how to use the lang
attribute.

Links have a discernible name


Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the
navigation experience for screen reader users. Learn how to make links accessible.

Lists contain only <li> elements and script supporting elements (<script> and <template>).
Screen readers have a specific way of announcing lists. Ensuring proper list structure aids screen reader output.
Learn more about proper list structure.

List items (<li>) are contained within <ul>, <ol> or <menu> parent elements
Screen readers require list items (<li>) to be contained within a parent <ul>, <ol> or <menu> to be announced
properly. Learn more about proper list structure.

about:blank 17/25
00:02 21/5/26 about:blank

Touch targets have sufficient size and spacing.


Touch targets with sufficient size and spacing help users who may have difficulty targeting small controls to activate
the targets. Learn more about touch targets.

Document has a main landmark.


One main landmark helps screen reader users navigate a web page. Learn more about landmarks.

Deprecated ARIA roles were not used


Deprecated ARIA roles may not be processed correctly by assistive technology. Learn more about deprecated ARIA
roles.

NOT APPLICABLE (37) Hide


[accesskey] values are unique
Access keys let users quickly focus a part of the page. For proper navigation, each access key must be unique.
Learn more about access keys. Unscored

,
button link , and menuitem elements have accessible names
When an element doesn't have an accessible name, screen readers announce it with a generic name, making it
unusable for users who rely on screen readers. Learn how to make command elements more accessible. Unscored

Elements with role="dialog" or role="alertdialog" have accessible names.


ARIA dialog elements without accessible names may prevent screen readers users from discerning the purpose of
these elements. Learn how to make ARIA dialog elements more accessible. Unscored

ARIA input fields have accessible names


When an input field doesn't have an accessible name, screen readers announce it with a generic name, making it
unusable for users who rely on screen readers. Learn more about input field labels. Unscored

ARIA meter elements have accessible names


When a meter element doesn't have an accessible name, screen readers announce it with a generic name, making it
unusable for users who rely on screen readers. Learn how to name meter elements. Unscored

ARIA progressbar elements have accessible names


When a progressbar element doesn't have an accessible name, screen readers announce it with a generic name,
making it unusable for users who rely on screen readers. Learn how to label progressbar elements. Unscored

Elements with an ARIA [role] that require children to contain a specific [role] have all required children.
Some ARIA parent roles must contain specific child roles to perform their intended accessibility functions. Learn
more about roles and required children elements. Unscored

[role] s are contained by their required parent element


Some ARIA child roles must be contained by specific parent roles to properly perform their intended accessibility
functions. Learn more about ARIA roles and required parent element. Unscored

Elements with the role=text attribute do not have focusable descendents.


Adding role=text around a text node split by markup enables VoiceOver to treat it as one phrase, but the
element's focusable descendents will not be announced. Learn more about the role=text attribute. Unscored

ARIA toggle fields have accessible names


When a toggle field doesn't have an accessible name, screen readers announce it with a generic name, making it
unusable for users who rely on screen readers. Learn more about toggle fields. Unscored

about:blank 18/25
00:02 21/5/26 about:blank

ARIA tooltip elements have accessible names


When a tooltip element doesn't have an accessible name, screen readers announce it with a generic name, making it
unusable for users who rely on screen readers. Learn how to name tooltip elements. Unscored

ARIA treeitem elements have accessible names


When a treeitem element doesn't have an accessible name, screen readers announce it with a generic name,
making it unusable for users who rely on screen readers. Learn more about labeling treeitem elements. Unscored

The page contains a heading, skip link, or landmark region


Adding ways to bypass repetitive content lets keyboard users navigate the page more efficiently. Learn more about
bypass blocks. Unscored

<dl> 's contain only properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements.
When definition lists are not properly marked up, screen readers may produce confusing or inaccurate output. Learn
how to structure definition lists correctly. Unscored

Definition list items are wrapped in <dl> elements


Definition list items (<dt> and <dd>) must be wrapped in a parent <dl> element to ensure that screen readers can
properly announce them. Learn how to structure definition lists correctly. Unscored

ARIA IDs are unique


The value of an ARIA ID must be unique to prevent other instances from being overlooked by assistive technologies.
Learn how to fix duplicate ARIA IDs. Unscored

No form fields have multiple labels


Form fields with multiple labels can be confusingly announced by assistive technologies like screen readers which
use either the first, the last, or all of the labels. Learn how to use form labels. Unscored

<frame> or <iframe> elements have a title


Screen reader users rely on frame titles to describe the contents of frames. Learn more about frame titles.
Unscored

<html> element has an [xml:lang] attribute with the same base language as the [lang] attribute.
If the webpage does not specify a consistent language, then the screen reader might not announce the page's text
correctly. Learn more about the lang attribute. Unscored

Input buttons have discernible text.


Adding discernable and accessible text to input buttons may help screen reader users understand the purpose of
the input button. Learn more about input buttons. Unscored

<input type="image"> elements have [alt] text


When an image is being used as an <input> button, providing alternative text can help screen reader users
understand the purpose of the button. Learn about input image alt text. Unscored

Form elements have associated labels


Labels ensure that form controls are announced properly by assistive technologies, like screen readers. Learn more
about form element labels. Unscored

Links are distinguishable without relying on color.


Low-contrast text is difficult or impossible for many users to read. Link text that is discernible improves the
experience for users with low vision. Learn how to make links distinguishable. Unscored

The document does not use <meta http-equiv="refresh">

about:blank 19/25
00:02 21/5/26 about:blank

Users do not expect a page to refresh automatically, and doing so will move focus back to the top of the page. This
may create a frustrating or confusing experience. Learn more about the refresh meta tag. Unscored

<object> elements have alternate text


Screen readers cannot translate non-text content. Adding alternate text to <object> elements helps screen readers
convey meaning to users. Learn more about alt text for object elements. Unscored

Select elements have associated label elements.


Form elements without effective labels can create frustrating experiences for screen reader users. Learn more about
the select element. Unscored

Skip links are focusable.


Including a skip link can help users skip to the main content to save time. Learn more about skip links. Unscored

No element has a [tabindex] value greater than 0


A value greater than 0 implies an explicit navigation ordering. Although technically valid, this often creates
frustrating experiences for users who rely on assistive technologies. Learn more about the tabindex attribute.
Unscored

Cells in a <table> element that use the [headers] attribute refer to table cells within the same table.
Screen readers have features to make navigating tables easier. Ensuring <td> cells using the [headers] attribute
only refer to other cells in the same table may improve the experience for screen reader users. Learn more about the
headers attribute. Unscored

<th> elements and elements with [role="columnheader"/"rowheader"] have data cells they describe.
Screen readers have features to make navigating tables easier. Ensuring table headers always refer to some set of
cells may improve the experience for screen reader users. Learn more about table headers. Unscored

[lang] attributes have a valid value


Specifying a valid BCP 47 language on elements helps ensure that text is pronounced correctly by a screen reader.
Learn how to use the lang attribute. Unscored

<video> elements contain a <track> element with [kind="captions"]


When a video provides a caption it is easier for deaf and hearing impaired users to access its information. Learn
more about video captions. Unscored

Tables have different content in the summary attribute and <caption>.


The summary attribute should describe the table structure, while <caption> should have the onscreen title.
Accurate table mark-up helps users of screen readers. Learn more about summary and caption. Unscored

All heading elements contain content.


A heading with no content or inaccessible text prevent screen reader users from accessing information on the
page's structure. Learn more about headings. Unscored

Uses ARIA roles only on compatible elements


Many HTML elements can only be assigned certain ARIA roles. Using ARIA roles where they are not allowed can
interfere with the accessibility of the web page. Learn more about ARIA roles. Unscored

Image elements do not have [alt] attributes that are redundant text.
Informative elements should aim for short, descriptive alternative text. Alternative text that is exactly the same as
the text adjacent to the link or image is potentially confusing for screen reader users, because the text will be read
twice. Learn more about the alt attribute. Unscored

Identical links have the same purpose.


Links with the same destination should have the same description, to help users understand the link's purpose and

about:blank 20/25
00:02 21/5/26 about:blank
decide whether to follow it. Learn more about identical links. Unscored

100

Best Practices
TRUST AND SAFETY
Ensure CSP is effective against XSS attacks
A strong Content Security Policy (CSP) significantly reduces the risk of cross-site scripting (XSS) attacks. Learn how
to use a CSP to prevent XSS Unscored

Description Directive Severity


No CSP found in enforcement mode High

Use a strong HSTS policy


Deployment of the HSTS header significantly reduces the risk of downgrading HTTP connections and eavesdropping
attacks. A rollout in stages, starting with a low max-age is recommended. Learn more about using a strong HSTS
policy. Unscored

Description Directive Severity


No HSTS header found High

Ensure proper origin isolation with COOP


The Cross-Origin-Opener-Policy (COOP) can be used to isolate the top-level window from other documents such as
pop-ups. Learn more about deploying the COOP header. Unscored

Description Directive Severity


No COOP header found High

Mitigate clickjacking with XFO or CSP


The X-Frame-Options (XFO) header or the frame-ancestors directive in the Content-Security-Policy (CSP)
header control where a page can be embedded. These can mitigate clickjacking attacks by blocking some or all sites
from embedding the page. Learn more about mitigating clickjacking. Unscored

Description Severity
No frame control policy found High

Mitigate DOM-based XSS with Trusted Types


The require-trusted-types-for directive in the Content-Security-Policy (CSP) header instructs user
agents to control the data passed to DOM XSS sink functions. Learn more about mitigating DOM-based XSS with
Trusted Types. Unscored

Description Severity
No `Content-Security-Policy` header with Trusted Types directive found High

GENERAL

about:blank 21/25
00:02 21/5/26 about:blank

Missing source maps for large first-party JavaScript


Source maps translate minified code to the original source code. This helps developers debug in production. In
addition, Lighthouse is able to provide further insights. Consider deploying source maps to take advantage of these
benefits. Learn more about source maps. Unscored

URL Map URL


localhost 1st Party
…chunks/node_modules_next_dist_compiled_react- …chunks/node_modules_next_dist_compiled_react-
dom_058-ah~._.js (localhost) dom_058-ah~._….map (localhost)
Large JavaScript file is missing a source map

Error: Map has no `mappings` field

…chunks/node_modules_next_dist_compiled_next- …chunks/node_modules_next_dist_compiled_next-
devtools_index_….js (localhost) devtools_index….map (localhost)
Large JavaScript file is missing a source map

Error: Map has no `mappings` field

… …
chunks/node_modules_next_dist_client_0fhqo1d._.js chunks/node_modules_next_dist_client_0fhqo1d._.j
(localhost) [Link] (localhost)
Large JavaScript file is missing a source map

Error: Map has no `mappings` field

…chunks/turbopack-_0p44nws._.js (localhost) …chunks/_0p44nws._.[Link] (localhost)


Error: Map has no `mappings` field

…chunks/node_modules_next_dist_compiled_react- …chunks/node_modules_next_dist_compiled_react-
server-dom-tur….js (localhost) server-dom-tu….map (localhost)
Error: Map has no `mappings` field

… …
chunks/node_modules_next_dist_compiled_0rpq4pf. chunks/node_modules_next_dist_compiled_0rpq4pf
_.js (localhost) ._.[Link] (localhost)
Error: Map has no `mappings` field

… …
chunks/node_modules_next_dist_115brz8._.js (localh chunks/node_modules_next_dist_115brz8._.[Link] (
ost) localhost)
Error: Map has no `mappings` field

… …
chunks/node_modules_next_dist_0tt2wve._.js (localh chunks/node_modules_next_dist_0tt2wve._.[Link]
ost) (localhost)
Error: Map has no `mappings` field

…chunks/node_modules_0xz7m26._.js (localhost) …
chunks/node_modules_0xz7m26._.[Link] (localhost)
Error: Map has no `mappings` field

…chunks/node_modules_0f8kbyg._.js (localhost) …
chunks/node_modules_0f8kbyg._.[Link] (localhost)
Error: Map has no `mappings` field

…chunks/node_modules_%40swc_helpers_cjs_0- …chunks/node_modules_%40swc_helpers_cjs_0-
4ujiy._.js (localhost) 4ujiy._.[Link] (localhost)
Error: Map has no `mappings` field

…chunks/features_landing- …chunks/features_landing-
page_03533n4._.js (localhost) page_03533n4._.[Link] (localhost)
Error: Map has no `mappings` field

…chunks/%5Bturbopack%5D_browser_dev_hmr- …chunks/%5Bturbopack%5D_browser_dev_hmr-
client_hmr-client_ts….js (localhost) client_hmr-client_t….map (localhost)
Error: Map has no `mappings` field

about:blank 22/25
00:02 21/5/26 about:blank

URL Map URL


…chunks/_0oudr8m._.js (localhost) …chunks/_0oudr8m._.[Link] (localhost)
Error: Map has no `mappings` field

…chunks/_09g0ul~._.js (localhost) …chunks/_09g0ul~._.[Link] (localhost)


Error: Map has no `mappings` field

PASSED AUDITS (12) Hide


Uses HTTPS
All sites should be protected with HTTPS, even ones that don't handle sensitive data. This includes avoiding mixed
content, where some resources are loaded over HTTP despite the initial request being served over HTTPS. HTTPS
prevents intruders from tampering with or passively listening in on the communications between your app and your
users, and is a prerequisite for HTTP/2 and many new web platform APIs. Learn more about HTTPS.

Avoids deprecated APIs


Deprecated APIs will eventually be removed from the browser. Learn more about deprecated APIs.

Avoids third-party cookies


Third-party cookies may be blocked in some contexts. Learn more about preparing for third-party cookie
restrictions.

Allows users to paste into input fields


Preventing input pasting is a bad practice for the UX, and weakens security by blocking password [Link]
more about user-friendly input fields.

Avoids requesting the geolocation permission on page load


Users are mistrustful of or confused by sites that request their location without context. Consider tying the request
to a user action instead. Learn more about the geolocation permission.

Avoids requesting the notification permission on page load


Users are mistrustful of or confused by sites that request to send notifications without context. Consider tying the
request to user gestures instead. Learn more about responsibly getting permission for notifications.

Displays images with correct aspect ratio


Image display dimensions should match natural aspect ratio. Learn more about image aspect ratio.

Serves images with appropriate resolution


Image natural dimensions should be proportional to the display size and the pixel ratio to maximize image clarity.
Learn how to provide responsive images.

Page has the HTML doctype


Specifying a doctype prevents the browser from switching to quirks-mode. Learn more about the doctype
declaration.

Properly defines charset


A character encoding declaration is required. It can be done with a <meta> tag in the first 1024 bytes of the HTML or
in the Content-Type HTTP response header. Learn more about declaring the character encoding.

No browser errors logged to the console


Errors logged to the console indicate unresolved problems. They can come from network request failures and other
browser concerns. Learn more about this errors in console diagnostic audit

about:blank 23/25
00:02 21/5/26 about:blank

No issues in the Issues panel in Chrome Devtools


Issues logged to the Issues panel in Chrome Devtools indicate unresolved problems. They can come from network
request failures, insufficient security controls, and other browser concerns. Open up the Issues panel in Chrome
DevTools for more details on each issue.

NOT APPLICABLE (2) Hide


Redirects HTTP traffic to HTTPS
Make sure that you redirect all HTTP traffic to HTTPS in order to enable secure web features for all your users. Learn
more. Unscored

Detected JavaScript libraries


All front-end JavaScript libraries detected on the page. Learn more about this JavaScript library detection diagnostic
audit. Unscored

92

SEO
These checks ensure that your page is following basic search engine
optimization advice. There are many additional factors Lighthouse
does not score here that may affect your search ranking, including
performance on Core Web Vitals. Learn more about Google Search
Essentials.
CONTENT BEST PRACTICES
Document does not have a valid rel=canonical Is not an absolute URL (/)
Canonical links suggest which URL to show in search results. Learn more about canonical links.

Format your HTML in a way that enables crawlers to better understand your app’s content.

ADDITIONAL ITEMS TO MANUALLY CHECK (1) Hide


Structured data is valid
Run the Structured Data Testing Tool to validate structured data. Learn more about Structured Data. Unscored

Run these additional validators on your site to check additional SEO best practices.

PASSED AUDITS (9) Hide


Page isn’t blocked from indexing
Search engines are unable to include your pages in search results if they don't have permission to crawl them. Learn
more about crawler directives.

Document has a <title> element


The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if
a page is relevant to their search. Learn more about document titles.

Document has a meta description


Meta descriptions may be included in search results to concisely summarize page content. Learn more about the
meta description.

Page has successful HTTP status code


Pages with unsuccessful HTTP status codes may not be indexed properly. Learn more about HTTP status codes.
about:blank 24/25
00:02 21/5/26 about:blank

Links have descriptive text


Descriptive link text helps search engines understand your content. Learn how to make links more accessible.

Links are crawlable


Search engines may use href attributes on links to crawl websites. Ensure that the href attribute of anchor
elements links to an appropriate destination, so more pages of the site can be discovered. Learn how to make links
crawlable

[Link] is valid
If your [Link] file is malformed, crawlers may not be able to understand how you want your website to be crawled
or indexed. Learn more about [Link].

Image elements have [alt] attributes


Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an
empty alt attribute. Learn more about the alt attribute.

Document has a valid hreflang


hreflang links tell search engines what version of a page they should list in search results for a given language or
region. Learn more about hreflang.

Captured at May 21, 2026, Emulated Moto G Power with Single page session
12:01 AM GMT+7 Lighthouse 13.0.2
Initial page load Slow 4G throttling Using Chromium [Link]
with devtools
Generated by Lighthouse 13.0.2 | File an issue

about:blank 25/25

You might also like