LivecheckThe checklist

40 things that have to be true
before your site is actually live.

This is the whole checklist we run. Not a summary of it, not a teaser — the same 40 checks, with what each one is for and how to fix it. Work through it yourself and you will not need us.

DNS

Blocks a launch

The domain resolves correctly and consistently, worldwide.

The domain resolves

dns.resolves

If the name does not point anywhere, nobody reaches the site at all. This is the failure people describe as "the domain is not working".

How to fix it

Add an A record pointing at your host, or a CNAME pointing at your platform. New records can take up to 48 hours to spread.

Both www and the bare domain work

dns.www_and_apex

People type both. If only one resolves, half your visitors land on an error and assume you are closed.

How to fix it

Create a record for whichever form is missing and redirect it to the other.

It resolves the same way everywhere

dns.propagation

When one resolver knows the domain and another does not, the site works for you and not for your customers. This is the single most confusing failure to diagnose alone.

How to fix it

Wait for the TTL to expire. If it persists past 48 hours, look for conflicting records at your DNS provider.

No CNAME on the bare domain

dns.apex_cname

The DNS standard does not allow it. Some providers paper over it; where they do not, email for the domain stops working.

How to fix it

Use A records on the bare domain, or your provider ALIAS or ANAME type if it has one.

More than one nameserver

dns.nameservers

One nameserver is one thing that can fail and take the whole domain with it.

How to fix it

Configure at least two at your DNS provider. Most do this by default.

Email is configured

dns.mx

Without MX records, mail to the domain bounces — including replies to anyone who writes to the address on your contact page.

How to fix it

Add MX records if you want email here. Safe to ignore if you deliberately use email elsewhere.

SSL / TLS

Blocks a launch

The certificate is valid, complete, and trusted by every browser.

HTTPS connects and is trusted

ssl.handshake

An untrusted certificate shows a full-page security warning. Almost nobody clicks through one.

How to fix it

Issue the certificate from a public authority. Self-signed certificates are rejected by every browser.

The certificate covers this domain

ssl.hostname_match

A certificate issued for a different name is treated exactly like no certificate at all.

How to fix it

Reissue it with your domain in the subject alternative names.

The certificate chain is complete

ssl.chain_complete

The worst kind of broken, because it looks fine to you. Your browser already cached the intermediate certificate; a visitor on a new phone gets a security warning.

How to fix it

Install the full chain file from your certificate authority, usually named fullchain.pem, rather than the certificate alone.

The certificate is in date

ssl.expiry

Certificates expire, usually every 90 days. When one lapses the site is unreachable until somebody notices.

How to fix it

Renew it and confirm auto-renewal is switched on. Then confirm the renewal actually ran once.

Plain HTTP redirects to HTTPS

ssl.https_redirect

Anyone typing the address without https:// stays on an unencrypted connection, and so does anyone following an old link.

How to fix it

Add a permanent 301 redirect from http:// to https:// at your host or CDN.

HSTS is enabled

ssl.hsts

Without it, the first visit of each session can be intercepted before the redirect happens.

How to fix it

Send Strict-Transport-Security once you are confident every subdomain serves HTTPS.

Form submissions

Blocks a launch

Forms reach a real destination instead of failing silently.

Forms have somewhere to send data

forms.has_destination

A form with no destination reloads the page and discards everything typed. The visitor sees no error and assumes it worked. You never find out.

How to fix it

Point the form at a real endpoint, or connect it to a form service. Then send yourself one and confirm it arrives.

Every field carries its data

forms.fields_named

A field without a name attribute is not submitted at all, so the message arrives half empty and you cannot tell what is missing.

How to fix it

Add a name to every input, select and textarea.

Forms can be submitted

forms.submit_control

Without a submit button the form can only be sent by pressing Enter, which many people will not try.

How to fix it

Add a button with type="submit".

Fields are labelled

forms.labels

Screen readers announce unlabelled fields as unlabelled, and a placeholder vanishes the moment somebody starts typing.

How to fix it

Give each field a label, or an aria-label. A placeholder is not a substitute.

A real submission is delivered

forms.delivery

The only way to know a form works is to send one. We fill it in, submit it, and confirm something actually left the page and was acknowledged.

How to fix it

Connect the form to a working endpoint, and show the visitor a confirmation afterwards so they do not send it three times.

Mobile responsiveness

4 checks

The layout holds together on real phone viewports.

The page is configured for phones

mobile.viewport_meta

Without the viewport tag a phone renders the page at desktop width and shrinks it. Your responsive stylesheet does nothing at all until this tag exists.

How to fix it

Add the viewport meta tag with width=device-width to the head.

No sideways scrolling on a phone

mobile.horizontal_overflow

One element wider than the screen drags the whole page sideways, and every section below it looks broken. Invisible on a desktop browser at full width, which is why it survives to production.

How to fix it

Find the element wider than the viewport and constrain it. Usually a fixed pixel width, an image without max-width, or a long unbroken string.

Buttons are big enough to tap

mobile.tap_targets

A link that is comfortable with a mouse can be almost impossible with a thumb.

How to fix it

Give interactive elements at least 44 pixels in each direction, adding padding if you need to.

Text is readable without zooming

mobile.text_legibility

Anything under about 12 pixels forces people to pinch to read, and most will not bother.

How to fix it

Set body text to at least 16 pixels on phones.

SEO tags

10 checks

Search engines and social platforms can read the page.

The page can be indexed

seo.noindex

The most expensive invisible mistake there is. The site looks perfect and simply never appears in search results. Builders and staging environments leave this behind constantly.

How to fix it

Remove the noindex directive from the meta tag or the response header.

robots.txt allows crawling

seo.robots_txt

A Disallow rule left over from staging blocks every search engine from the entire site.

How to fix it

Remove the site-wide Disallow under User-agent: *.

The page has a title

seo.title

It is the line people click in search results and the label on their browser tab. Without one they see a bare URL.

How to fix it

Write a title of 10 to 60 characters describing the page.

The page has a meta description

seo.description

Without one, search engines invent a snippet from whatever text they find first, which is rarely the sentence you would have chosen.

How to fix it

Write 50 to 160 characters summarising the page.

Exactly one main heading

seo.h1

No H1 leaves nothing stating what the page is about; several muddle it.

How to fix it

Use one H1 for the subject and H2s for the sections beneath it.

The language is declared

seo.lang

Screen readers and translation tools otherwise have to guess, and they guess wrong.

How to fix it

Add a lang attribute to the html element.

A canonical URL is set

seo.canonical

If the page is reachable at more than one address, search engines split its ranking between them.

How to fix it

Add a canonical link pointing at the address you want to be the real one.

Shared links show a preview

seo.social

Without Open Graph tags, a link posted to social media or a messaging app shows a bare URL and no image. It reads as unfinished.

How to fix it

Add og:title, og:description and og:image.

A sitemap is published

seo.sitemap

Not required, but it is how search engines find pages that nothing links to yet.

How to fix it

Publish sitemap.xml and reference it from robots.txt.

A favicon is set

seo.favicon

The blank page icon in a browser tab reads as unfinished, and it is the cheapest thing on this list to fix.

How to fix it

Add a favicon link, or place favicon.ico at the root.

Page speed

5 checks

The page loads fast enough to keep visitors.

The page is fast enough overall

speed.performance_score

Measured by Google, the same way it measures you for ranking. A slow page loses visitors before they see anything.

How to fix it

Work through the savings below, largest first. Images are almost always the biggest win.

The main content appears quickly

speed.lcp

How long until the biggest thing on screen has loaded. Past about 2.5 seconds people start leaving.

How to fix it

Compress and correctly size the hero image, serve it as WebP or AVIF, and preload it.

The layout does not jump

speed.cls

Content shifting while the page loads makes people tap the wrong thing, which is worse than being slow.

How to fix it

Set width and height on images and reserve space for anything that loads late.

The page responds to taps promptly

speed.tbt

JavaScript blocking the main thread means early taps are simply ignored, and the visitor thinks the site is broken.

How to fix it

Defer non-essential scripts. Analytics and chat widgets are the usual culprits.

No obvious wasted bytes

speed.opportunities

Uncompressed images, unminified code and missing cache headers cost real load time for no benefit.

How to fix it

Address them in order of saving. None of these require redesigning anything.

Browser compatibility

4 checks

The site renders and runs in Chrome, Firefox, and Safari.

It renders in every major browser

compat.renders

A site that works in Chrome can be blank in Safari. If you use Chrome, you will never see it.

How to fix it

Open the site in the affected browser with the console open and fix the first error reported.

No JavaScript errors

compat.js_errors

One uncaught error stops the script dead, and everything after it never runs. AI-generated sites fail this in Safari more than anywhere else.

How to fix it

Fix the first error; the later ones usually cascade from it.

Every asset loads

compat.failed_requests

Missing images and stylesheets are what make a finished site look half-built. Paths that worked locally often do not once deployed.

How to fix it

Fix or remove the broken references.

The layout is consistent across browsers

compat.layout_consistency

A page markedly shorter in one browser usually means a whole section is not rendering there.

How to fix it

Compare side by side in the affected browser. Unsupported CSS is the usual cause.

Or have it run for you

Every check above, against your live site, in three browser engines. Free, and no account.

Free, and no account. We only read the page — nothing is changed.

When this changes

The checklist grows as we find new ways AI-built sites break. Nothing on it is ever removed without saying so.

Only when the checklist actually changes. No newsletter, no sequence.