# Audit Report: Advokaadibüroo Sorainen **Website:** https://www.sorainen.com/et/ **Date:** 24.08.2026 **Audit Coverage:** 100% — all sources returned data **Confidence:** high **Pages Audited (5 of 5):** - https://www.sorainen.com/et - https://www.sorainen.com/newsroom - https://www.sorainen.com/et/uudised - https://www.sorainen.com/lv/zinas - https://www.sorainen.com/lt/naujienos ## Summary of results **Overall Score:** 66 / 100 **Status:** 🟡 **Needs Improvement** Site overall 66 is the mean of 5 pages. Scores range 62 (https://www.sorainen.com/et) → 70 (https://www.sorainen.com/lv/zinas). Weakest page: Mobile performance is critically low (52) with an LCP of 10.2 s, driven by 15 render-blocking scripts and heavy third-party JS. Accessibility has critical gaps (12 missing alt attributes) despite a decent 88 score. Security is weak (40/100) with a permissive CSP on a site that hosts user content, elevating XSS risk. Desktop performance (96) is strong, but mobile-first indexing penalizes the mobile experience significantly. ### Per-page scores 🟡 **Needs Improvement** · https://www.sorainen.com/et | Score | Performance | Accessibility | Best Practices | SEO | Security | | --- | --- | --- | --- | --- | --- | | 62 | 52 | 88 | 92 | 92 | 40 | 🟡 **Needs Improvement** · https://www.sorainen.com/newsroom | Score | Performance | Accessibility | Best Practices | SEO | Security | | --- | --- | --- | --- | --- | --- | | 62 | 58 | 94 | 92 | 85 | 40 | 🟡 **Needs Improvement** · https://www.sorainen.com/et/uudised | Score | Performance | Accessibility | Best Practices | SEO | Security | | --- | --- | --- | --- | --- | --- | | 68 | 72 | 94 | 92 | 92 | 40 | 🟡 **Needs Improvement** · https://www.sorainen.com/lv/zinas | Score | Performance | Accessibility | Best Practices | SEO | Security | | --- | --- | --- | --- | --- | --- | | 70 | 78 | 94 | 92 | 92 | 40 | 🟡 **Needs Improvement** · https://www.sorainen.com/lt/naujienos | Score | Performance | Accessibility | Best Practices | SEO | Security | | --- | --- | --- | --- | --- | --- | | 68 | 75 | 94 | 92 | 92 | 40 | ## PageSpeed Insights — Mobile vs Desktop _Lower is worse for Performance; higher is worse for LCP and CLS. Worse value is **bolded**._ | URL | Performance (M / D) | LCP (M / D) | CLS (M / D) | | --- | --- | --- | --- | | https://www.sorainen.com/et | **52** / 86 | **10.16 s** / 2.12 s | 0.000 / **0.007** | | https://www.sorainen.com/newsroom | **58** / 93 | **11.27 s** / 1.22 s | 0.000 / **0.000** | | https://www.sorainen.com/et/uudised | **72** / 93 | **5.19 s** / 1.10 s | 0.000 / **0.006** | | https://www.sorainen.com/lv/zinas | **78** / 93 | **4.06 s** / 1.05 s | 0.000 / **0.001** | | https://www.sorainen.com/lt/naujienos | **75** / 97 | **4.71 s** / 1.05 s | 0.000 / **0.004** | ## Optimization Checklist **1 of 3 passing** — 1 pass · 1 warn · 1 fail · 4 n/a | Item | Status | Detail | | --- | --- | --- | | Page caching plugin / CDN active | **Pass** | Caching plugin detected (WP Rocket) | | Images lazy-loaded | N/A | No raster elements found (4 SVGs excluded). | | Hero image eagerly loaded | N/A | No raster elements found (4 SVGs excluded). | | Hero is a real (not a CSS background-image) | **Warn** | Hero element uses a CSS background-image (no image-set() variants), so the browser always loads the original asset regardless of viewport — there is no srcset equivalent. Move the hero to a real with srcset/sizes (or ) so smaller viewports can fetch a smaller file. | | Responsive images (srcset / ) | N/A | Only 0 raster images on the page (4 SVGs excluded) — responsive-image rule does not apply. | | Reasonable number of image sizes | N/A | Too few raster images to evaluate srcset width variety. | | JS scripts not blocking in | **Fail** | 3 render-blocking scripts in . Move to footer or add defer/async. | ## Fixes ### Priority 1: Critical *Immediate action — impacts user experience, search rankings, or site safety.* **1A. Eliminate render-blocking JavaScript and optimize LCP** `Performance` - **Impact:** LCP (10.2 s), FCP (3.1 s), TBT (466 ms) - **Problem:** 15 render-blocking scripts and heavy third-party JS (Recaptcha, GTM) delay rendering; LCP is 10.2 s on mobile. - **Solution:** - Move non-critical scripts to footer or add `defer`/`async`. - Defer Recaptcha until user interaction (e.g., form focus). - Convert hero CSS background to `` with `fetchpriority="high"` and `srcset`. **1B. Add alt text to all content images** `Accessibility` - **Impact:** WCAG 1.1.1 (Non-text Content), SEO - **Problem:** 12 images lack `alt` attributes (W3C + axe-core critical violations), blocking screen reader users. - **Solution:** - Audit all `` tags. - Add descriptive `alt` text for content images. - Use `alt=""` for purely decorative images (e.g., icons, lines). **1C. Harden CSP and HSTS for User-Generated Content** `Security` - **Impact:** XSS protection, Transport security - **Problem:** Site has user content (`hasUserContent: yes`) but CSP allows `unsafe-inline`/`unsafe-eval`; HSTS missing `includeSubDomains`. - **Solution:** - Remove `'unsafe-inline'` and `'unsafe-eval'` from CSP; use nonces/hashes for scripts. - Update HSTS: `Strict-Transport-Security: max-age=63072000; includeSubDomains; preload`. **1D. Defer non-critical JavaScript to fix LCP** `Performance` - **Impact:** LCP, FCP, TBT - **Problem:** LCP is 11.3 s on mobile; 17 render-blocking scripts and 1.08 MB of JS (reCAPTCHA, GTM) delay rendering. - **Solution:** Add `defer` or `async` to non-critical scripts in ``. Specifically defer `gtag.js`, `gtm.js`, and `recaptcha__en.js` until after `DOMContentLoaded`. ```html ``` **1E. Add accessible labels to forms and buttons** `Accessibility` - **Impact:** WCAG 2.1.1, 4.1.2 - **Problem:** 3 critical axe violations: buttons lack discernible text, form inputs (search, select) lack labels. - **Solution:** Associate `