Xoot.io Test Results
Xoot.io Mobile Performance: 17/100
These suggestions can help your page load faster. They don't directly affect the Performance score.
Eliminate render-blocking resources. Potential savings of 4,240 ms
Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. Learn more.
Preload key requests. Potential savings of 3,570 ms
Consider using `<link rel=preload>` to prioritize fetching resources that are currently requested later in page load. Learn more.
Defer offscreen images. Potential savings of 986 KiB
Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. Learn more.
Use video formats for animated content. Potential savings of 512 KiB
Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save network bytes. Learn more
Reduce initial server response time. Root document took 1,190 ms
Keep the server response time for the main document short because all other requests depend on it. Learn more.
Remove unused CSS. Potential savings of 105 KiB
Remove dead rules from stylesheets and defer the loading of CSS not used for above-the-fold content to reduce unnecessary bytes consumed by network activity. Learn more.
Serve images in next-gen formats. Potential savings of 59 KiB
Image formats like JPEG 2000, JPEG XR, and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. Learn more.
More information about the performance of your application. These numbers don't directly affect the Performance score.
Reduce the impact of third-party code
Third-party code blocked the main thread for 580 ms
Third-party code can significantly impact load performance. Limit the number of redundant third-party providers and try to load third-party code after your page has primarily finished loading. Learn more.
Does not use passive listeners to improve scrolling performance
Consider marking your touch and wheel event listeners as `passive` to improve your page's scroll performance. Learn more.
For users on slow connections, external scripts dynamically injected via `document.write()` can delay page load by tens of seconds. Learn more.
Ensure text remains visible during webfont load
Leverage the font-display CSS feature to ensure text is user-visible while webfonts are loading. Learn more.
Serve static assets with an efficient cache policy
116 resources found
A long cache lifetime can speed up repeat visits to your page. Learn more.
Minimize main-thread work
Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. Learn more
Avoid enormous network payloads
Total size was 3,863 KiB
Large network payloads cost users real money and are highly correlated with long load times. Learn more.
Avoid an excessive DOM size
A large DOM will increase memory usage, cause longer style calculations, and produce costly layout reflows. Learn more.
Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. Learn more.
Avoid large layout shifts
5 elements found
These DOM elements contribute most to the CLS of the page.
Avoid chaining critical requests
39 chains found
The Critical Request Chains below show you what resources are loaded with a high priority. Consider reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load. Learn more.
Avoid long main-thread tasks
20 long tasks found
Lists the longest tasks on the main thread, useful for identifying worst contributors to input delay. Learn more
Keep request counts low and transfer sizes small
148 requests • 3,863 KiB
To set budgets for the quantity and size of page resources, add a budget.json file. Learn more.
Largest Contentful Paint element
1 element found
This is the largest contentful element painted within the viewport. Learn More
Xoot.io Mobile SEO: 93/100
Content Best Practices
Format your HTML in a way that enables crawlers to better understand your app’s content.
Xoot.io Mobile Best Practices: 71/100
Registers an `unload` listener
The `unload` event does not fire reliably and listening for it can prevent browser optimizations like the Back-Forward Cache. Consider using the `pagehide` or `visibilitychange` events instead. Learn More
Browser errors were 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
Trust and Safety
Does not use HTTPS
1 insecure request found
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 servedover 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.
4 vulnerabilities detected
Some third-party scripts may contain known security vulnerabilities that are easily identified and exploited by attackers. Learn more.
Xoot.io Mobile Progressive Web App: 25/100
Manifest doesn't have a maskable icon
A maskable icon ensures that the image fills the entire shape without being letterboxed when installing the app on a device. Learn more. No manifest was fetched
Is not configured for a custom splash screen
A themed splash screen ensures a high-quality experience when users launch your app from their homescreens. Learn more. Failures: No manifest was fetched.
Does not set a theme color for the address bar.
The browser address bar can be themed to match your site. Learn more. Failures: No manifest was fetched, No `<meta name="theme-color">` tag found.
Does not use HTTPS
1 insecure request found
Does not register a service worker that controls page and `start_url`
The service worker is the technology that enables your app to use many Progressive Web App features, such as offline, add to homescreen, and push notifications. Learn more.
Web app manifest does not meet the installability requirements
Browsers can proactively prompt users to add your app to their homescreen, which can lead to higher engagement. Learn more. Failures: No manifest was fetched.
Fast and reliable
`start_url` does not respond with a 200 when offline
A service worker enables your web app to be reliable in unpredictable network conditions. Learn more. No usable web app manifest found on page.
Current page does not respond with a 200 when offline
If you're building a Progressive Web App, consider using a service worker so that your app can work offline. Learn more.
Page load is not fast enough on mobile networks
Interactive at 19.7 s
A fast page load over a cellular network ensures a good mobile user experience. Learn more. Your page loads too slowly and is not interactive within 10 seconds. Look at the opportunities and diagnostics in the "Performance" section to learn how to improve.
Xoot.io Mobile Accessibility: 75/100
These are opportunities to improve the legibility of your content.
Names and labels
These are opportunities to improve the semantics of the controls in your application. This may enhance the experience for users of assistive technology, like a screen reader.
Links do not 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 more.
Form elements do not have associated labels
Labels ensure that form controls are announced properly by assistive technologies, like screen readers. Learn more.
These items highlight common accessibility best practices.
`[user-scalable="no"]` is used in the `<meta name="viewport">` element or the `[maximum-scale]` attribute is 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.
These are opportunities to improve keyboard navigation in your application.
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.
`[id]` attributes on active, focusable elements are not unique
All focusable elements must have a unique `id` to ensure that they're visible to assistive technologies. Learn more.