# 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 `