Technical SEO for Schools
Optimising Site Speed for Mobile Users: The Complete Playbook for UK Schools
Published by SEO for Schools • Author: Paul Delaney
Parents and carers mostly experience your school online via a phone. If your site is slow, jumpy or unresponsive, they bounce—and Google’s mobile-first indexing will reflect that reality. This comprehensive guide shows you how to measure mobile performance, fix what matters, and prove gains with Core Web Vitals. It’s written for lean CMS setups too: no downloads needed—just print-screen checklists and copy-ready snippets.
Why mobile site speed matters (SEO + real outcomes)
- Search visibility: Google primarily uses the mobile version of content for indexing/ranking. A slow or blocked mobile experience reduces discoverability. Mobile-first indexing
- Parent experience: Faster pages reduce frustration and support task completion (Absence, Term Dates, Contact, Admissions).
- Operational impact: Clear, fast pages cut repetitive calls to the office and improve attendance/Admissions workflows.
Google’s Page Experience documentation explains how user-centric metrics (Core Web Vitals) guide improvements. Page experience
How Google measures performance (field vs lab)
Field data (real users)
Collected from opted-in Chrome users (CrUX). It powers the “field data” in PageSpeed Insights and the Core Web Vitals report in Search Console.
- LCP – visual loading (target ≤ 2.5s)
- CLS – visual stability (target ≤ 0.10)
- INP – overall responsiveness (target ≤ 200ms)
Docs: Chrome UX Report (CrUX)
Lab data (simulated)
Useful for debugging and iteration. Tools throttle CPU/network to emulate a mid-range phone.
- PageSpeed Insights – shows both field and lab. PSI
- Lighthouse – in Chrome DevTools or CLI for deeper traces. Lighthouse
Field data is the source of truth for ranking-adjacent evaluation; lab data helps you find and fix problems fast.
Create a baseline and priorities (60 minutes)
- List your top mobile journeys: Home, Admissions, Term Dates, Policies, News, Contact, Absence.
- Run PSI (mobile) for each: capture LCP/CLS/INP and diagnostics. pagespeed.web.dev
- Open Search Console: review the Core Web Vitals report (mobile). GSC: Core Web Vitals report
- Prioritise fixes: sort by “impact × ease” (e.g., compress hero image, size images to stop CLS, lazy-load embeds).
- Set a performance budget: simple caps per page: HTML ≤ 100 KB, total JS ≤ 250 KB, LCP image ≤ 200 KB (guidelines—adjust to your CMS).
Images: the fastest wins for schools
Hero banners, galleries and staff photos are usually the biggest payloads on school sites. Optimising these alone often moves LCP into the green.
- Use next-gen formats: WebP/AVIF with JPEG/PNG fallback. Optimise images
- Make them responsive: provide
srcset/sizesso mobiles download smaller files. - Always set dimensions: add
width/height(or CSSaspect-ratio) to prevent CLS. - Lazy-load below the fold:
loading="lazy"for images not in the first screenful. - Preload only the true LCP image: one
<link rel="preload" as="image">speeds first render—don’t overuse it.
Fonts: pretty, but not at the expense of speed
- Limit families/weights: two families, 3–4 weights max.
- Preload critical WOFF2: and use
font-display: swapto avoid invisible text. - Subset if possible: remove unused glyphs to shrink files.
CSS & JavaScript: reduce, defer, split
CSS hygiene
- Minify and combine critical CSS; inline above-the-fold CSS for the homepage if your CMS allows.
- Remove unused framework CSS; avoid blocking imports and large icon fonts.
JavaScript discipline
- Audit theme/plugins; remove counters, sliders and libraries you don’t use.
defernon-critical scripts;asyncthird-parties; break long tasks.- Prefer native elements (
<details>/<summary>) over heavy widgets.
Guides: Third-party JS • Optimise long tasks
Embeds & video
- Use the YouTube-nocookie domain and lazy-load the
<iframe>with a poster image. - Defer social widgets; avoid auto-play carousels.
UI stability (CLS)
- Reserve space for cookie banners and alerts so they don’t push content.
- Set dimensions for iframes/maps; avoid injecting ads above content.
Docs: CLS
Server, network & caching (TTFB matters)
- HTTP/2 or HTTP/3: ensure your host/CDN supports multiplexing and modern TLS for parallel downloads. (Check with your provider.)
- Compression: enable Brotli (preferred) or Gzip for HTML, CSS, JS.
- CDN: cache static assets geographically closer to UK users; set cache-busting via file names (
app.abc123.js). - Cache headers: long TTLs for static assets (weeks), shorter for HTML. Use
Cache-ControlandETagwisely. - Preload critical resources: fonts, hero image, above-the-fold CSS; only what the first render needs.
- Preconnect: to critical third-party origins (e.g., fonts) to cut DNS/TLS cost.
Accessibility & speed are allies
- Readable type, good contrast and visible focus indicators speed comprehension.
- Alt text and transcripts help users (and search) when media fails or on slow networks.
- Don’t use images of text; they’re heavier and inaccessible.
Reference: WCAG 2.2 Quick Ref
Governance: who owns speed, and how often?
| Area | Owner | Cadence | Notes |
|---|---|---|---|
| PageSpeed/CrUX review | Comms + IT | Monthly | Track LCP/CLS/INP for top 20 pages |
| Image & PDF hygiene | Editors | Every publish | Responsive images; avoid PDF-only pages |
| Plugin/theme audit | IT | Termly | Remove heavy JS add-ons; update safely |
| Accessibility spot-check | SEND/Comms | Termly | Contrast, alt text, keyboard nav |
KPIs & reporting (prove it to SLT/Governors)
- % of mobile pageviews “Good” for LCP/CLS/INP (from GSC/CrUX).
- Median LCP on Home & Admissions (target ≤ 2.5s).
- JS shipped per page (target ≤ 250 KB, adjust to CMS).
- Task success (parents reach Term Dates/Absence in ≤ 2 taps).
- Admissions funnel (mobile traffic → prospectus view → enquiry/tour booking).
Print-screen checklists (one screen each)
Mobile Speed 20-Point Checklist
Screenshot or print this card- Run PSI Mobile for top journeys; save LCP/CLS/INP.
- Check GSC Core Web Vitals (mobile).
- Set performance budget (HTML/JS/LCP image caps).
- Convert hero to WebP/AVIF; compress.
- Add
srcset/sizesto all images. - Set
width/heighton images/iframes. - Lazy-load below-fold images/iframes.
- Preload the true LCP image only.
- Limit fonts; preload WOFF2;
font-display: swap. - Minify/inline critical CSS for Home.
- Remove unused JS/plugins;
defer/async. - Replace carousels with static hero or light slider.
- Lazy YouTube via nocookie embed + poster.
- Enable Brotli/Gzip; use HTTP/2 or HTTP/3.
- Serve via CDN; set long-lived cache for assets.
- Use hashed filenames for cache-busting.
- Preconnect to critical third-party origins.
- Avoid PDF-only pages; provide HTML alternatives.
- Check accessibility basics (contrast, focus, alt).
- Re-test and annotate improvements.
Resource Priorities (First Render)
Screenshot or print this card| Priority | What | How |
|---|---|---|
| Critical | HTML, above-the-fold CSS, hero image, key font | Preload CSS/LCP; font-display: swap |
| High | Header/menu JS (if needed) | defer and keep tiny |
| Medium | Below-fold images, embeds | loading="lazy" |
| Low | Analytics, social widgets | async or delayed |
Cache & Delivery Cheatsheet
Screenshot or print this card- Compression: Brotli (level 4–6) or Gzip.
- Headers:
Cache-Control: public, max-age=31536000, immutablefor static assets. - HTML: short TTL; rely on ETag/Last-Modified.
- CDN: enable HTTP/2 or 3, TLS 1.3, OCSP stapling.
- Busting: hashed filenames (
app.abc123.js).
Copy-ready snippets
Preload the hero (LCP) image + responsive sizes
<link rel="preload" as="image" href="/images/hero-1024.avif" imagesrcset="/images/hero-768.avif 768w, /images/hero-1024.avif 1024w, /images/hero-1600.avif 1600w" imagesizes="(max-width: 768px) 90vw, 1060px"><img src="/images/hero-1024.avif" srcset="/images/hero-768.avif 768w, /images/hero-1024.avif 1024w, /images/hero-1600.avif 1600w" sizes="(max-width: 768px) 90vw, 1060px" width="1060" height="590" alt="Students in the school library" loading="eager" decoding="async"> Lazy YouTube (nocookie) with fixed aspect ratio (CLS-safe)
<div style="position:relative;padding-top:56.25%"> <iframe loading="lazy" width="560" height="315" style="position:absolute;inset:0;width:100%;height:100%" src="https://www.youtube-nocookie.com/embed/VIDEO_ID" title="YouTube video" frameborder="0" allowfullscreen></iframe></div> Defer non-critical JS and async third-parties
<script src="/assets/js/site.js" defer></script><script src="https://www.youtube.com/iframe_api" async></script> FAQs (Featured Snippet-ready)
What are the best targets for mobile Core Web Vitals on a school site?
LCP ≤ 2.5s, CLS ≤ 0.10 and INP ≤ 200ms. Hit these on Home, Admissions, Term Dates and Policies first. See web.dev for guidance on LCP, CLS and INP.
How do we measure real-user speed?
Use the Chrome UX Report (CrUX) via PageSpeed Insights (field data) and the Core Web Vitals report in Search Console for site-wide coverage. PSI • GSC CWV • CrUX
We use a basic CMS. Can we still improve speed?
Yes—optimise images (WebP/AVIF + dimensions), lazy-load below-fold media, remove heavy plugins, use print-screen checklists instead of downloads, and ensure your host/CDN uses HTTP/2 or 3 with compression.
Are PDFs bad for mobile speed?
PDFs are heavier and less accessible on phones. Where possible, provide HTML pages for term dates, menus and policies; if PDFs remain, compress them and show file sizes.
Need practical SEO support?
Speak With Paul Delaney
Paul Delaney helps schools turn complex SEO into simple, effective actions. As a guest writer for SEO for Schools, Paul shares step-by-step playbooks and evidence-based guidance that busy teams can apply immediately. With three decades’ experience working with UK and international institutions, he understands the challenges school teams face and is well positioned to offer support and guidance.
For our readers, Paul offers free 30-minute sessions for institutions exploring how to raise visibility, strengthen brand trust and streamline admissions. Sessions are practical, jargon-free and free from sales pressure. You can contact him using the buttons below—please mention SEOforSchools.co.uk.








