# Audit Report: Perfectly formed web development team - gotoAndPlay **Website:** https://play.ee/ **Date:** 2026-06-26 **Overall Score:** 76 / 100 **Status:** 🟡 **Needs Improvement** **Confidence:** high **Audit Coverage:** 100% — all sources returned data ## Summary Mobile performance is excellent at 94, but security configuration is critically weak with a 20/100 header grade and missing HTTP-to-HTTPS redirect. W3C validation reports 7 errors including malformed noscript tags, and accessibility has 2 moderate violations regarding landmarks and link text. The site is a web development agency with no auth or payment flows, lowering CSP priority but not baseline header requirements. Overall quality is dragged down by security and structural HTML issues despite strong Core Web Vitals. ## PageSpeed Insights — Mobile vs Desktop _Lower is worse for Performance; higher is worse for LCP and CLS. Worse value is **bolded**._ | Strategy | Performance (M / D) | LCP (M / D) | CLS (M / D) | | --- | --- | --- | --- | | Mobile vs Desktop | **94** / 100 | **2.52 s** / 598 ms | 0.000 / **0.008** | ## Optimization Checklist **2 of 2 passing** — 2 pass · 0 warn · 0 fail · 5 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 (39 SVGs, 13 placeholders excluded). | | Hero image eagerly loaded | N/A | No raster elements found (39 SVGs, 13 placeholders excluded). | | Hero is a real (not a CSS background-image) | N/A | No CSS background-images detected on raster-image-eligible elements. | | Responsive images (srcset / ) | N/A | Only 0 raster images on the page (39 SVGs, 13 placeholders 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 | **Pass** | No render-blocking scripts in . | ## Fixes ### Priority 1: Critical *Immediate action — impacts user experience, search rankings, or site safety.* **1A. Enforce HTTPS Redirect** - **Impact:** Transport security, downgrade attacks - **Problem:** http://play.ee/ does not redirect to HTTPS, allowing unencrypted connections despite HTTPS being available. - **Solution:** Configure the web server (Apache/Nginx) to return a 301 redirect for all HTTP requests to HTTPS: ```apache RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ``` ### Priority 2: Important *Essential for compliance, user reach, and search visibility.* **2A. Add HSTS and X-Content-Type-Options** - **Impact:** Security Headers grade, MIME sniffing protection - **Problem:** Security Headers grade is 20/100; HSTS and X-Content-Type-Options are missing. - **Solution:** Add these headers to the server response: ```apache Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Content-Type-Options "nosniff" ``` **2B. Fix W3C Validation Errors** - **Impact:** HTML structure, rendering consistency - **Problem:** 7 validation errors found, including 'Bad start tag in iframe in noscript in head' and stray end tags. - **Solution:** Move the Google Tag Manager `noscript` iframe outside the `` section. It must be placed immediately after the opening `` tag: ```html ``` **2C. Improve Accessibility Landmarks and Links** - **Impact:** Screen reader navigation, WCAG 2.4.1 - **Problem:** Missing `main` landmark, no skip-to-content link, and 9 vague 'read more' links. - **Solution:** - Add `
` around primary content. - Add a skip link at the top: ``. - Disambiguate link text: change 'read more' to 'read more about [topic]'. ### Priority 3: Best Practice *Recommended for long-term maintainability.* **3A. Add Image Dimensions and Lazy Loading** - **Impact:** CLS prevention, bandwidth usage - **Problem:** 52 images lack explicit width/height attributes and loading="lazy". - **Solution:** Add `width` and `height` attributes to all `` tags to reserve space. Add `loading="lazy"` to images below the fold: ```html ... ```