{"url":"https://lootsa.ee/","date":"2026-08-14","siteName":"lootsa","overall":55,"reasoning":"PSI mobile performance is 72, but LCP 5.1 s and FCP 4.05 s indicate critical rendering delays that heavily penalize user experience. Security Headers score is 0/100; with User-Generated Content present, missing CSP and HSTS create significant vulnerability. Accessibility has 3 serious axe violations (aria-hidden-focus, link-name, contrast) despite a 93 category score. Image payload is 1.77 MB with the hero image incorrectly lazy-loaded, driving the performance debt. Confidence is high as all audit tools returned complete data.","confidence":"high","fixes":[{"priority":1,"category":"Performance","title":"Fix Hero Image Loading Strategy","impact":"LCP, FCP, Speed Index","problem":"LCP is 5.1 s; the hero image (lootsa_hero-320x180.jpg) has loading=\"lazy\" which delays rendering.","solution":"Remove `loading=\"lazy\"` from the hero image and add `fetchpriority=\"high\"`:\n```html\n<img src=\"/wp-content/uploads/.../lootsa_hero.jpg\" fetchpriority=\"high\" alt=\"...\">\n```"},{"priority":1,"category":"Security","title":"Implement HSTS and CSP","impact":"Transport security, XSS protection","problem":"Security Headers grade 0/100; HSTS and CSP are missing. Site has User-Generated Content (textarea/upload), elevating CSP to Priority 1.","solution":"Add HSTS and a strict CSP via server config (Apache example):\n```apache\nHeader always set Strict-Transport-Security \"max-age=63072000; includeSubDomains; preload\"\nHeader always set Content-Security-Policy \"default-src 'self'; script-src 'self' 'nonce-{random}' 'strict-dynamic'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; form-action 'self';\"\n```"},{"priority":1,"category":"Accessibility","title":"Fix Serious Axe Violations","impact":"WCAG 2.1 AA compliance, Screen Reader usability","problem":"3 serious violations: `aria-hidden-focus` (FAQ slides), `link-name` (gallery images), `color-contrast` (.tag--brand).","solution":"- Remove `aria-hidden=\"true\"` from elements containing focusable children or ensure focus is managed.\n- Add `aria-label` or visible text to gallery image links.\n- Increase contrast ratio for `.tag--brand` to ≥4.5:1."},{"priority":2,"category":"Performance","title":"Lazy Load Below-Fold Images","impact":"Page Weight, Initial Load Time","problem":"69 of 77 images lack `loading=\"lazy\"`; total image weight is 1.77 MB.","solution":"Add `loading=\"lazy\"` to all images below the fold. Ensure hero image remains eager.\n```html\n<img src=\"...\" loading=\"lazy\" alt=\"...\">\n```"},{"priority":2,"category":"SEO","title":"Add Meta Description and Correct Language","impact":"Search snippet, Accessibility","problem":"Missing meta description; HTML lang is \"en\" but content is Estonian.","solution":"- Add `<meta name=\"description\" content=\"...\">`.\n- Change `<html lang=\"en\">` to `<html lang=\"et\">`."},{"priority":2,"category":"Security","title":"Add X-Content-Type-Options and X-Frame-Options","impact":"MIME sniffing, Clickjacking","problem":"Missing X-Content-Type-Options and X-Frame-Options headers.","solution":"Add headers via server config:\n```apache\nHeader always set X-Content-Type-Options \"nosniff\"\nHeader always set X-Frame-Options \"SAMEORIGIN\"\n```"}],"coverage":{"pct":100,"missing":[]},"siteSummary":{"pagesAudited":1,"pagesAttempted":1,"urls":["https://lootsa.ee/"]},"psiSnapshot":{"rows":[{"pageUrl":null,"perfMobile":72,"perfDesktop":98,"lcpMobileMs":5061.5,"lcpDesktopMs":1025.5,"clsMobile":0.01132248662568607,"clsDesktop":0.00008468705296958768}]},"optimizationChecklist":{"items":[{"id":"caching","title":"Page caching plugin / CDN active","status":"pass","detail":"Caching plugin detected (WP Rocket)","evidence":["HTML markers: WP Rocket"]},{"id":"lazyload","title":"Images lazy-loaded","status":"fail","detail":"66 of 73 non-hero raster images are not lazy-loaded (threshold: 14) (3 SVGs excluded).","evidence":["https://lootsa.ee/wp-content/uploads/2026/07/galerii-1-360x240.jpg","https://lootsa.ee/wp-content/uploads/2026/07/galerii-2-360x240.jpg","https://lootsa.ee/wp-content/uploads/2026/07/galerii-brand-360x240.jpg","https://lootsa.ee/wp-content/uploads/2026/08/23a0249-360x240.jpg","https://lootsa.ee/wp-content/uploads/2026/08/23a0238-360x240.jpg"]},{"id":"heroEager","title":"Hero image eagerly loaded","status":"fail","detail":"Hero image has loading=\"lazy\", which delays LCP (inferred from DOM order/size — Lighthouse LCP element unavailable). Use loading=\"eager\" (or omit loading) and add fetchpriority=\"high\".","evidence":["hero: https://lootsa.ee/wp-content/uploads/2026/08/lootsa_hero-320x180.jpg","loading: lazy","fetchpriority: (not set)"]},{"id":"heroBackground","title":"Hero is a real <img> (not a CSS background-image)","status":"n/a","detail":"No CSS background-images detected on raster-image-eligible elements.","evidence":[]},{"id":"responsive","title":"Responsive images (srcset / <picture>)","status":"pass","detail":"67/74 raster images use srcset or <picture> (91%) (3 SVGs excluded).","evidence":["…a.ee/wp-content/themes/lootsa-arikvartal/inc/theme/img/lootsa4-plaan.jpg?v=58","…ee/wp-content/themes/lootsa-arikvartal/inc/theme/img/lootsa5-korrus1.jpg?v=58","…ee/wp-content/themes/lootsa-arikvartal/inc/theme/img/lootsa5-korrus2.jpg?v=58","…ee/wp-content/themes/lootsa-arikvartal/inc/theme/img/lootsa5-korrus3.jpg?v=58","…ee/wp-content/themes/lootsa-arikvartal/inc/theme/img/lootsa6-korrus1.jpg?v=58"]},{"id":"imageSizes","title":"Reasonable number of image sizes","status":"pass","detail":"25 distinct srcset widths.","evidence":["widths: 233, 276, 278, 300, 320, 360, 420, 465, 498, 551, 555, 640, 720, 768, 840, 996, 1003, 1024, 1080, 1360, 1536, 1600, 1920, 2048, 2560"]},{"id":"scriptsFooter","title":"JS scripts not blocking in <head>","status":"warn","detail":"1 render-blocking script in <head>. Move to footer or add defer/async.","evidence":["https://cdn-cookieyes.com/client_data/6d4d733d03db47c5aecbf6c09eac2e0b/script.js"]}],"summary":{"passed":3,"warned":1,"failed":2,"notApplicable":1},"priorities":[{"title":"Images lazy-loaded","severity":"high","detail":"66 of 73 non-hero raster images are not lazy-loaded (threshold: 14) (3 SVGs excluded)."},{"title":"Hero image eagerly loaded","severity":"high","detail":"Hero image has loading=\"lazy\", which delays LCP (inferred from DOM order/size — Lighthouse LCP element unavailable). Use loading=\"eager\" (or omit loading) and add fetchpriority=\"high\"."},{"title":"JS scripts not blocking in <head>","severity":"medium","detail":"1 render-blocking script in <head>. Move to footer or add defer/async."}]},"perPageOverall":[{"url":"https://lootsa.ee/","overall":55,"reasoning":"PSI mobile performance is 72, but LCP 5.1 s and FCP 4.05 s indicate critical rendering delays that heavily penalize user experience. Security Headers score is 0/100; with User-Generated Content present, missing CSP and HSTS create significant vulnerability. Accessibility has 3 serious axe violations (aria-hidden-focus, link-name, contrast) despite a 93 category score. Image payload is 1.77 MB with the hero image incorrectly lazy-loaded, driving the performance debt. Confidence is high as all audit tools returned complete data.","confidence":"high","fixes":[{"priority":1,"category":"Performance","title":"Fix Hero Image Loading Strategy","impact":"LCP, FCP, Speed Index","problem":"LCP is 5.1 s; the hero image (lootsa_hero-320x180.jpg) has loading=\"lazy\" which delays rendering.","solution":"Remove `loading=\"lazy\"` from the hero image and add `fetchpriority=\"high\"`:\n```html\n<img src=\"/wp-content/uploads/.../lootsa_hero.jpg\" fetchpriority=\"high\" alt=\"...\">\n```"},{"priority":1,"category":"Security","title":"Implement HSTS and CSP","impact":"Transport security, XSS protection","problem":"Security Headers grade 0/100; HSTS and CSP are missing. Site has User-Generated Content (textarea/upload), elevating CSP to Priority 1.","solution":"Add HSTS and a strict CSP via server config (Apache example):\n```apache\nHeader always set Strict-Transport-Security \"max-age=63072000; includeSubDomains; preload\"\nHeader always set Content-Security-Policy \"default-src 'self'; script-src 'self' 'nonce-{random}' 'strict-dynamic'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; form-action 'self';\"\n```"},{"priority":1,"category":"Accessibility","title":"Fix Serious Axe Violations","impact":"WCAG 2.1 AA compliance, Screen Reader usability","problem":"3 serious violations: `aria-hidden-focus` (FAQ slides), `link-name` (gallery images), `color-contrast` (.tag--brand).","solution":"- Remove `aria-hidden=\"true\"` from elements containing focusable children or ensure focus is managed.\n- Add `aria-label` or visible text to gallery image links.\n- Increase contrast ratio for `.tag--brand` to ≥4.5:1."},{"priority":2,"category":"Performance","title":"Lazy Load Below-Fold Images","impact":"Page Weight, Initial Load Time","problem":"69 of 77 images lack `loading=\"lazy\"`; total image weight is 1.77 MB.","solution":"Add `loading=\"lazy\"` to all images below the fold. Ensure hero image remains eager.\n```html\n<img src=\"...\" loading=\"lazy\" alt=\"...\">\n```"},{"priority":2,"category":"SEO","title":"Add Meta Description and Correct Language","impact":"Search snippet, Accessibility","problem":"Missing meta description; HTML lang is \"en\" but content is Estonian.","solution":"- Add `<meta name=\"description\" content=\"...\">`.\n- Change `<html lang=\"en\">` to `<html lang=\"et\">`."},{"priority":2,"category":"Security","title":"Add X-Content-Type-Options and X-Frame-Options","impact":"MIME sniffing, Clickjacking","problem":"Missing X-Content-Type-Options and X-Frame-Options headers.","solution":"Add headers via server config:\n```apache\nHeader always set X-Content-Type-Options \"nosniff\"\nHeader always set X-Frame-Options \"SAMEORIGIN\"\n```"}],"perfScore":72,"a11yScore":93,"bestPracticesScore":100,"seoScore":92,"securityScore":0}]}