A checklist for testing a website before release or after a big change. Test two or three real pages of each page type (homepage, listing, detail page, form, static page) rather than every page: bugs live in templates. Download the checklist as a spreadsheet with a status column for each check, or follow the step-by-step guide.
Content
- No placeholder text, “Lorem ipsum” or test data on any page — search the site for “lorem”, “test”, “asdf”
- Headings, buttons and labels have no typos — read them aloud
- Dates, prices and phone numbers are correct and in the right format — compare with the source of truth
- Copyright year and legal pages are current — footer, terms, privacy
- Images load, are sharp and are not stretched — check on a high-density phone screen
- Every image that carries meaning has alt text — empty alt for decorative images
Links and navigation
- Every link in the header, menu and footer works — including on phones
- No internal links lead to 404 pages — use a crawler for the whole site
- External links open the right page — and important ones still exist
- Anchor links (#section) jump to the right place — and the target exists
- The logo links to the homepage — on every page
- The 404 page answers with status 404 and offers a way back — try a made-up address
Layout on screens
- No horizontal scroll at 320, 375, 414 and 768 px wide — drag the browser width slowly
- No overlapping or cut-off text at any width — including between breakpoints
- Buttons and links are at least 24 by 24 px with space between them — test with a finger, not a mouse
- Text is readable without zooming on a phone — body text at least 16 px is a safe default
- Form fields are at least 16 px so iPhones do not zoom — tap each field on an iPhone
- The menu opens, closes and fits on a phone — also in landscape
- Dialogs, pop-ups and the cookie banner fit and can be closed — on the smallest width
- Fixed headers and bars leave enough room for content — especially in landscape
- The layout holds with long text and missing images — longest product name, a translated label, a broken image
Forms
- Required fields are marked — before submitting
- Submitting an empty form shows clear errors next to the fields — not only browser bubbles
- Invalid input is caught with a helpful message — email without @, letters in a phone field
- A correct submission shows a clear confirmation — and the data arrives where it should
- Email and phone fields use the right input type — phones show the right keyboard
- Name, email and address fields allow autofill — autocomplete attributes set
- Double-clicking submit does not send twice — check the receiving side
- Every field has a visible label — placeholders disappear when typing
Functionality
- Site search returns relevant results and handles no results — search for a page title and for nonsense
- Filters and sorting work and can be reset — on listings
- Sign-up, log-in, log-out and password reset work — with a fresh account
- Cart and checkout work end to end in test mode — including discounts and shipping options
- Videos and media play — on phone and desktop
- No errors in the browser console on key pages — open DevTools → Console
Browsers and devices
- Chrome, Safari, Firefox and Edge on desktop — current versions
- Safari on iPhone and Chrome on Android — real devices for key flows
- Tablet in portrait and landscape — around 768 and 1024 px
Speed
- Largest Contentful Paint under 2.5 s on a mobile test — PageSpeed Insights or Lighthouse
- No visible layout shifts while loading — images have width and height
- Images are compressed and sized for the screen — WebP or AVIF where possible
- The main image at the top is not lazy-loaded — check the img tag
SEO basics
- Each page has a unique title and meta description — check widths with the snippet checker
- Each page has one H1 — matching the page's topic
- No noindex left from staging — view source and headers
- robots.txt does not block the site — open /robots.txt
- The sitemap lists real, indexable pages — open /sitemap.xml
- Canonical tags point to the page itself on indexable pages — view source
Accessibility basics
- Everything works with the keyboard alone — Tab through the page
- Keyboard focus is visible on every link and button — never removed with outline: none
- Text has enough contrast — 4.5:1 for normal text
- The page language is set — html lang attribute
- Animations respect the “reduce motion” setting — test with the OS setting on
Security basics
- Every page loads over HTTPS without mixed content warnings — check the padlock and the console
- HTTP and www variants redirect to one HTTPS address — test all four variants
- No debug output, stack traces or test accounts are public — try invalid input and unknown URLs
- Admin and staging areas are not linked or indexable — search for them