Training Handbook · Website Quality Check

Test the Website Before You Deliver It

Everything in one place: Speed & Cache · CDN · Responsiveness · SSL/HTTPS — what each thing is, how to check it, what counts as good, and how to fix it. Then a flowchart and step-by-step routine to run on every website before it goes to the client.

Main objective: After finishing the content work on a new website, Indrani should be able to run a full quality check herself — speed, cache, CDN, mobile view, and SSL — before the site is submitted for delivery, and report any issue with evidence (screenshot + number) and a suggested fix.
PART 1

Speed & Core Web Vitals

One tool measures all of this: Google PageSpeed Insights (pagespeed.web.dev). Paste the URL and it returns five things — two scores and three Core Web Vitals.

Mobile Score

0–100

Overall performance score when tested as a phone on a slow 4G connection.

What it is

A single number summarising how fast and stable the page is on a mobile device. Google simulates a mid-range phone on slow internet — how most real visitors browse. That's why Mobile is almost always lower than Desktop, and why it's the more important score.

How to measure

pagespeed.web.dev → paste URL → result opens on the Mobile tab. Locally: Chrome → F12 → Lighthouse tab → Mobile → Analyze.

What is good

90–100 Good50–89 Needs improvement0–49 Poor
05090100

How to fix a low score

  • Compress images and convert to WebP/AVIF — the #1 reason mobile scores drop.
  • Lazy-load images below the screen (but never the top banner).
  • Caching plugin (WP Rocket / LiteSpeed Cache) + a CDN.
  • Remove heavy plugins, sliders, unused scripts; minify CSS/JS.
  • Follow the "Opportunities" list in the result — Google tells you what to fix, in impact order.

Desktop Score

0–100

The same 0–100 score, tested as a desktop computer on fast internet.

What it is

Identical test, easier conditions. A site scoring 55 on Mobile may score 90 on Desktop. If even Desktop is low, the problem is serious — very heavy pages or a slow server — because this is the easiest test to pass.

How to measure

Same PageSpeed result — click the Desktop tab. Always record both scores in an audit.

What is good

90–100 Good50–89 Needs improvement0–49 Poor

How to fix

  • Same fixes as Mobile — they improve both together.
  • If Desktop is also low, check server response time (TTFB) in the report — hosting may be slow; needs server-side caching or a hosting upgrade.
How to read the pair: Mobile low + Desktop high → page too heavy for phones (usually images). Mobile low + Desktop low → deeper problem (server / hosting / bloated site).

LCP

seconds

Largest Contentful Paint — how long the main content takes to appear.

What it is

Time from clicking the link until the largest visible element (usually the hero image or main heading) is fully painted. It answers: "When can I actually see the page?"

Analogy: you order food — LCP is when the main dish reaches your table, not when the waiter says hello.

How to measure

Shown directly in PageSpeed Insights (field + lab data). It even highlights which element is the LCP element.

What is good

≤ 2.5 s Good2.5 – 4 s Needs improvement> 4 s Poor
0s2.5s4s8s+

How to fix

  • Compress the hero/banner image, serve as WebP.
  • Do not lazy-load the hero image.
  • CDN + caching; fix slow hosting (high TTFB delays everything).
  • Remove render-blocking CSS/JS.

INP

milliseconds

Interaction to Next Paint — how quickly the page responds to a tap or click.

What it is

The delay between an interaction (tap, click, key press) and the screen visibly reacting. A page can load fast but feel frozen — you tap the menu and nothing happens. INP catches that. (It replaced FID in 2024.)

Analogy: press a lift button — INP is how fast the button lights up. Even if the lift takes time, the light must respond instantly or you think it's broken.

How to measure

In PageSpeed Insights under "Discover what your real users are experiencing" (needs real-user data, so very small sites may not show it). Feel-test: open on a phone and tap menus/buttons — visible lag = INP problem.

What is good

≤ 200 ms Good200 – 500 ms Needs improvement> 500 ms Poor

How to fix

  • Reduce heavy JavaScript — plugins, trackers, chat widgets keep the browser too busy to respond.
  • Remove or delay third-party scripts (analytics, ads, social embeds).
  • WordPress: deactivate unnecessary plugins; enable "delay JS" in the caching plugin.

CLS

unitless score

Cumulative Layout Shift — how much the page jumps around while loading.

What it is

Measures unexpected movement. You start reading, an image or ad loads above, the text jumps, you tap the wrong button. Every jump adds to the score — lower is better, 0 is perfect.

Analogy: reading a newspaper while someone keeps pulling the page — you lose your place.

How to measure

Shown in PageSpeed / Lighthouse; Diagnostics names the exact elements that shifted. To see it: reload on slow internet and watch whether text or buttons move after first appearing.

What is good

≤ 0.1 Good0.1 – 0.25 Needs improvement> 0.25 Poor

How to fix

  • Give every image/video fixed width and height so the browser reserves space in advance.
  • Reserve fixed space for ads, banners, embeds.
  • Don't inject popups/bars above existing content after load.
  • Preload custom fonts so text doesn't reflow when the font swaps in.
PART 2

Cache

Cache = a saved copy of work already done, kept somewhere fast, so it doesn't have to be rebuilt for every visitor.

How cache works & how to check it

F12 → Network

What it is

Without cache, every visit makes the server rebuild the page from scratch (run PHP, query the database, assemble HTML). With cache, the hard work is done once, the finished copy is saved, and everyone else gets that copy instantly. Copies are saved at several layers:

LayerWhere the copy lives
1. Browser cacheOn the visitor's own device (images, CSS, JS)
2. CDN cacheOn edge servers near the visitor (Part 3)
3. Page cacheReady-made HTML pages saved on the server (caching plugin)
4. Object cacheDatabase query results (Redis/Memcached)
Analogy: a tea stall owner doesn't boil a fresh kettle per customer — he keeps a hot flask ready (cache) and refills it when empty (cache refresh).

How to check

  1. Open the site → F12Network tab → reload. Note total size and load time at the bottom.
  2. Reload again normally: many files now say (disk cache) or (memory cache) — that's browser cache serving saved copies. Screenshot it.
  3. Hard refresh with Ctrl+Shift+R — sizes come back because the cache was bypassed.

The most common cache problem — and the fix order

"I updated the website but I still see the old content." Cache serves saved copies, so after changes every layer must be told to refresh — in this order:

  1. Purge the CMS/plugin cache (e.g. WP Rocket → Clear cache) — rebuilds the saved page on the server.
  2. Purge the CDN cache (e.g. Cloudflare → Purge) — edge servers fetch the fresh copy.
  3. Hard refresh the browser (Ctrl+Shift+R) — your own device drops its old copy.

The order matters: if you refresh the browser first, it just re-downloads the old copy still saved on the CDN/server.

PART 3

CDN

CDN = Content Delivery Network — a worldwide network of servers keeping cached copies of the site close to every visitor.

What a CDN does & how to detect it

F12 → Headers

What it is

The site's origin server sits in one city (say Mumbai). Without a CDN, a visitor in New York pulls every image across ~12,000 km of cable — high latency, slow load. With a CDN (Cloudflare, CloudFront, Akamai), copies sit on edge servers in 100+ cities; the New York visitor downloads from a New York server in milliseconds, and the origin server relaxes. Bonus: it absorbs traffic spikes, gives DDoS protection, and often free SSL.

How to check if a site uses a CDN

  1. F12Network tab → reload → click any image → Response Headers. Look for clues: server: cloudflare, cf-ray:, x-cache: HIT, via:.
  2. x-cache: HIT = the edge server had a saved copy (good). MISS = it had to fetch from origin (first visit, or cache purged).
  3. On dnschecker.org, if the domain resolves to different IPs in different countries, those are CDN edge servers answering locally.

How to fix (no CDN found)

  • Recommend Cloudflare free plan: create account → add site → change the domain's nameservers to Cloudflare's two → done. No code changes needed.
  • After any content update on a CDN site, remember step 2 of the purge order — purge the CDN cache.
Note: CDN ≠ GDN. GDN is the Google Display Network — a marketing term for banner-ad placements, nothing to do with hosting.
PART 4

Responsiveness

One website must adapt to every screen — phone, tablet, desktop. Most visitors are on phones, so this check is never optional.

How to test & what bugs to hunt

F12 → Ctrl+Shift+M

What it is

Responsive design uses flexible layouts + CSS media queries so the same page rearranges itself per screen width. The one line that makes it possible is the viewport tag — if it's missing, phones show a shrunken desktop page:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

How to check

  1. Open the site → F12Ctrl+Shift+M (Device Toolbar).
  2. Test at least four sizes: iPhone SE (small), iPhone 14/15, iPad, Desktop. Screenshot each.
  3. Also open on a real phone — simulation is good, real devices reveal more (touch, fonts, keyboard).
  4. Right-click → View Source → confirm the viewport tag exists.
  5. PageSpeed's Mobile test also flags "text too small" and "tap targets too close".

The 6 common responsive bugs to hunt

  • Horizontal scroll — the page is wider than the screen; something overflows.
  • Text too small to read without zooming.
  • Buttons/links too close together to tap accurately.
  • Images overflowing or getting cut off.
  • Menu not collapsing into a hamburger on mobile.
  • Popups that can't be closed on a small screen.

How to fix

  • Add the viewport meta tag if missing (biggest single fix).
  • Give images max-width:100% so they never overflow.
  • Use the theme/framework's responsive settings (Bootstrap columns, Tailwind sm:/md:/lg: classes, or @media (max-width:768px) rules).
  • Report each bug with: what's wrong + on which device size + screenshot + one-line fix. That format is the QA report.
PART 5

SSL / HTTPS

The padlock 🔒 = SSL/TLS encryption between the visitor's browser and the server. Browsers mark plain HTTP as "Not Secure", Google ranks HTTPS higher, and payments require it.

The 4 SSL checks before delivery

padlock + F12

What it is

An SSL certificate does three jobs: encryption (data travels scrambled — passwords and card numbers can't be read on the way), identity (a trusted Certificate Authority confirms the site is who it claims), and integrity (nothing can be modified in transit).

Analogy: HTTP is a postcard — anyone on the way can read it. HTTPS is a sealed, locked envelope — only sender and receiver can open it.

Check 1 — Padlock & certificate details

Click the padlock in the address bar → "Connection is secure" → Certificate is valid. Record: Issued to (the domain), Issued by (the CA — Let's Encrypt, Google Trust, DigiCert…), and Expiry date. An expiring certificate is a ticking issue — most (like Let's Encrypt) auto-renew every 90 days, but confirm.

Check 2 — HTTP → HTTPS redirect

Type the site with plain http:// in front. It must automatically redirect to https://. If both versions open separately, that's an issue to report — the redirect is forced in the hosting panel or via the CDN.

Check 3 — Mixed content

If the page is HTTPS but some images/scripts still load over http://, the padlock breaks or shows a warning. Open F12Console tab and look for "Mixed Content" warnings — they name the exact insecure file. Fix: update those links to https (or run a search-replace plugin on WordPress).

Check 4 — SSL Labs grade

Run the domain through ssllabs.com/ssltest. It gives a grade (A+ … F) and full certificate details. A / A+ Good B / C Report it Expired / invalid Blocker

How to fix common SSL issues

IssueWhat the visitor seesFix
Expired certificateFull-page red browser warningRenew in hosting panel; enable auto-renew (Let's Encrypt)
Mixed contentPadlock missing / warningFind http:// links in Console, change to https://
No redirectSite opens on both http and httpsForce HTTP→HTTPS redirect in hosting panel / CDN
PART 6

Flowchart — Test Before You Submit

Run this on every website after the content work is finished and before it is handed over. At any FAIL: note the issue → fix (or send to developer) → re-test that step → continue.

STARTContent work finishedAll pages written & uploaded on the site
STEP 1Content & link checkRead every page · click every link & button
✔ No typos, no broken links, all images load?
STEP 2Responsiveness checkF12 → Ctrl+Shift+M · 4 screen sizes + real phone
✔ No horizontal scroll, readable text, working menu?
STEP 3Speed testPageSpeed Insights · Mobile + Desktop
✔ Score ≥ 90 · LCP ≤ 2.5s · INP ≤ 200ms · CLS ≤ 0.1?
STEP 4Cache check & purgeF12 → Network tab · plugin/CDN purge
✔ Cache serving copies + purged after final changes?
STEP 5CDN checkF12 → Response headers · dnschecker.org
✔ CDN active (or recommended in report if absent)?
STEP 6SSL / HTTPS checkPadlock · redirect · Console · SSL Labs
✔ Valid certificate, http→https redirect, no mixed content?
STEP 7Final round-tripOpen the live site fresh, as a visitor
✔ Everything works end-to-end on phone + desktop?
DELIVERWrite the delivery report → submitScores + screenshots + issues found & fixed
If any check FAILS: screenshot the issue → write what's wrong + suggested fix → fix it yourself or send to the developer → re-run that step before moving on. Never skip forward past a failed check.
PART 7

Each Step Explained

STEP 1Content & link check

Since the content is her own work, this comes first. Read every page top to bottom on the live site (text often breaks differently online than in the draft). Click every menu item, button and link — internal and external. Check that every image loads and has meaningful alt text, and that the page titles and headings match the content.

Pass = zero typos, zero broken links, all images loading.

STEP 2Responsiveness check

Before measuring speed, make sure the layout survives on small screens — a beautiful desktop site that breaks on phones is a failed delivery. F12Ctrl+Shift+M and test iPhone SE, iPhone 14/15, iPad and Desktop; then repeat quickly on a real phone. Hunt the 6 common bugs from Part 4 (horizontal scroll, tiny text, close tap targets, overflowing images, broken menu, uncloseable popups) and confirm the viewport meta tag exists in the page source.

Pass = no layout bug on any of the 4 sizes + real phone.

STEP 3Speed test

Run pagespeed.web.dev on the homepage and at least one inner content page (inner pages are often heavier). Record Mobile score, Desktop score, LCP, INP, CLS and compare with the good limits: Score ≥ 90 · LCP ≤ 2.5s · INP ≤ 200ms · CLS ≤ 0.1. If something fails, open "Opportunities/Diagnostics" — as the content person, the fixes she can often do herself are compressing the images she uploaded (WebP, correct dimensions) and removing very heavy embeds; deeper fixes (caching, scripts, hosting) go to the developer with the PageSpeed screenshot attached.

Pass = all values in the green — or every red value listed in the report with a suggested fix.

STEP 4Cache check & purge

Two things here. First, confirm caching works: F12 → Network → reload twice → the second load should show files from (disk cache) and load visibly faster. Second — and this is the step people forget — after the final content changes, purge in order: CMS/plugin cache → CDN cache → hard refresh (Ctrl+Shift+R). Otherwise the client may open the site and see an older version of her content, even though everything was updated.

Pass = cache serving copies AND freshly purged, so the client sees the latest content.

STEP 5CDN check

F12 → Network → click any image → Response Headers. server: cloudflare / cf-ray / x-cache: HIT = CDN active. No CDN is not a delivery blocker for a small local site, but it goes in the report as a recommendation (Cloudflare free plan), especially if the audience is spread across regions or the speed scores were weak.

Pass = CDN confirmed with header evidence — or "no CDN, recommended" noted in the report.

STEP 6SSL / HTTPS check

Four quick checks from Part 5: (1) padlock present, certificate valid — note issuer and expiry date; (2) typing http:// redirects automatically to https://; (3) F12 → Console shows no "Mixed Content" warnings; (4) SSL Labs grade is A. An expired certificate or a red browser warning is a delivery blocker — the site cannot be submitted until it's fixed.

Pass = valid certificate + forced redirect + clean console + grade A.

STEP 7Final round-trip

Close everything, open the live site fresh like a first-time visitor — once on the phone, once on desktop. Navigate the main journey a real visitor would take (home → service/product page → contact → submit the contact form with a test message). Confirm the form actually delivers. This catches anything the individual checks missed, because now you're testing the experience, not the parts.

Pass = the full visitor journey works without a single hiccup.

DELIVERWrite the delivery report → submit

One short document (1 page is enough) attached with the delivery: the speed scores table, screenshots of mobile/tablet/desktop views, SSL certificate details (issuer + expiry), CDN status, and a list of issues found — marked Fixed or Recommended. Rule: every claim has evidence (number or screenshot), every issue has a one-line plain-language fix. This report is what turns "I checked it" into proof of quality.

Submit = website + report together. That is the delivery standard.
Task · Submit with screenshots + answers in your own words

Practice Task — One Full Pre-Delivery Test

Pick one real website (a live client site or any local business site) and treat it as if you are delivering it tomorrow. Every answer needs evidence — a screenshot or a number.

  1. Run the complete 7-step flowchart on the site and produce the delivery report: speed table (Mobile, Desktop, LCP, INP, CLS marked Good/Poor), responsiveness screenshots for 4 sizes, cache evidence from the Network tab, CDN verdict with header proof, and SSL details (issuer, expiry, redirect, console). Tests: can she execute the full routine end-to-end and document it.
  2. Which single metric matters most for phone visitors' first impression — and why? Name it, give its good limit, and the one fix she can do herself as the content uploader. Expected: LCP ≤ 2.5s; compress/resize the hero image she uploads.
  3. Client complaint drill: "I updated the site yesterday but customers say they still see the old prices." Write the exact 3-step fix in the correct order, and explain in 2 lines why doing the browser refresh first would not work. Tests: cache purge order — CMS → CDN → browser.
  4. SSL detective: for your chosen site, report the certificate issuer, the expiry date, whether http:// redirects to https://, and whether the Console shows any Mixed Content warning. If any of these fail, write the one-line fix for each. Tests: all four SSL checks with real evidence.
  5. Find and report 3 real responsive bugs on any local business website using the 6-bug checklist. For each: which device size, screenshot, and a one-line suggested fix written so a non-technical owner understands it. Tests: bug hunting + plain-language reporting — her writer's strength.