All writing
Jul 30, 20268 min read

A practical launch checklist for small websites

The quiet checks I like to make before a portfolio, marketing site, or small content site goes live.

ProcessWeb Development

The final week before launch can make a small website feel either dependable or improvised. Most of the visible work is already done by then. The pages exist, the content is close, and the design direction is clear. What remains is the careful pass that catches the small things users notice when nobody is watching.

I like to treat launch as a checklist, not a mood. A checklist turns vague confidence into specific evidence: the contact form delivered a message, the mobile navigation closed correctly, the social preview used the right image, and an invalid URL produced a useful page.

Define what “ready” means

Before testing, I write down the public routes and the actions that matter. A portfolio might need the home page, project pages, blog index, articles, contact form, résumé link, RSS feed, and sitemap. A small marketing site may add service pages, analytics, redirects, and a newsletter form.

This list becomes the launch surface. Without it, testing tends to follow whichever page is easiest to remember. The homepage gets checked repeatedly while a stale footer link or an untested form on a secondary page survives.

I also separate launch blockers from improvements. A broken contact path is a blocker. A minor animation adjustment usually is not. This keeps the final pass focused and prevents launch from becoming an endless polishing session.

Read every page like a visitor

The first pass is not technical. I open the site and read it as if I have no context. Does the first screen explain what this is? Are the next steps obvious? Do project cards, service sections, and calls to action use the same language? Does anything sound like placeholder copy that survived too long?

Small sites often suffer from inconsistent labels. One section says “work,” another says “projects,” and another says “case studies.” That can be fine, but it should be intentional. Button labels should also describe where they lead. “View project” is more useful than “Learn more” when the destination is a project page.

I check names, dates, prices, email addresses, legal names, and claims separately from general proofreading. Factual errors are easy to skim past because the sentence still reads smoothly. If the site includes client work or testimonials, I confirm that the wording and permission to publish are accurate.

Follow every navigation path

I click every header, footer, card, logo, social link, and inline call to action. Internal links should reach the intended route without an unexpected redirect. External links should use the correct destination and only open a new tab when that behaviour is genuinely useful.

Navigation needs testing from both directions. Can a visitor enter through an article found in search, understand whose site it is, and reach the relevant next step? Can someone return from a project page without relying on the browser back button?

I also test failure paths. A made-up URL should return a helpful 404 page with working navigation. Old URLs should redirect deliberately rather than disappearing. Anchor links should land below sticky headers instead of hiding the heading they target.

Test uncomfortable content and screen sizes

Real content rarely behaves like design content. I check long titles, short titles, missing optional images, uneven card descriptions, empty collections, and buttons with labels that wrap. If the layout breaks as soon as the words change, it is not ready for the person who will maintain it.

Responsive testing means more than opening one phone preset. I drag the viewport through the space between breakpoints and look for crowded navigation, sudden jumps in spacing, clipped graphics, and grids that become awkward before they stack. I test at a small phone width, a larger phone, a tablet-sized width, a laptop, and a wide desktop.

At each size I check horizontal overflow, readable line length, tap target size, image cropping, and the order of content. A desktop composition may rely on side-by-side elements that need a different reading sequence on mobile. The visual order and document order should still make sense.

Walk through forms slowly

Forms deserve their own pass. I submit them empty, with invalid email addresses, with a very long message, and with a normal message. I check focus, helper text, field-level errors, loading states, disabled buttons, success states, and whether entered text survives a recoverable failure.

The copy matters too. “Something went wrong” is sometimes true, but it is rarely helpful by itself. A useful message explains whether the submission was received, whether retrying makes sense, and whether another contact route is available.

A successful interface message is not proof of delivery. I confirm that the request reached the server, validation ran there as well as in the browser, spam protection behaved correctly, and the email or stored record arrived at its destination. I test the production configuration because local and staging credentials can hide missing environment variables.

Check accessibility as a user journey

Automated accessibility tools are useful, but I do not stop with a report. I use the keyboard from the top of each important page. Focus should remain visible, menus should open and close predictably, and the focus order should match the reading order.

I zoom the page, check text contrast, inspect heading hierarchy, and make sure meaningful images have useful alternative text. Decorative images should not add noise. Form controls need visible labels, and error messages should be associated with the relevant fields.

If the site moves, I enable reduced motion. Essential content and controls must remain available without animation. I also check that the page still communicates its purpose when an image fails or client-side JavaScript is slow.

Verify metadata and sharing

A website does not only appear as a page. It appears as a browser tab, search result, social preview, sitemap entry, and pasted message link.

Before launch, I check page titles, meta descriptions, canonical URLs, favicons, Open Graph titles and images, robots rules, and the sitemap. If the site publishes articles, I check RSS output and publication dates. Draft content should not leak into production routes, feeds, or search metadata.

I view the actual generated HTML rather than trusting that a framework configuration probably works. Dynamic project and article pages deserve individual metadata derived from their content. The production domain should replace development or preview URLs everywhere.

Confirm performance basics

I do not expect every small site to chase a perfect score, but I do expect it to feel fast. Images should have appropriate dimensions and formats. Fonts should not create distracting layout shifts. Important content should appear without waiting for unnecessary client-side JavaScript.

I test a cold load with the cache disabled and use a slower network profile to expose hidden assumptions. The largest image near the top of the page deserves particular attention. Below-the-fold images can usually load later, while the main visual should not be delayed by an oversized asset or a chain of scripts.

Third-party scripts need a reason to exist. Analytics, chat tools, embeds, and tracking pixels add network and privacy cost. If a script is not needed at launch, removing it is often safer than promising to optimise it later.

Test the production environment

A successful local build is necessary, not sufficient. I run type checks, linting, tests, and the production build, then test the output that will actually be deployed. Environment variables, image hosts, server routes, caching, and case-sensitive paths can behave differently outside development.

After deployment, I check HTTPS, the preferred www or non-www domain, redirects, security-sensitive headers where relevant, and the absence of mixed-content warnings. I inspect the console and network panel for errors that users may not report clearly.

I also confirm ownership details: who controls the domain, where deployment logs live, how form failures are noticed, and how a previous stable version can be restored. A launch is calmer when recovery is understood before it is needed.

Launch, then watch

The checklist does not end at deploy. I check the live URL from another device and network, submit one final real form, confirm analytics without generating unnecessary test noise, and revisit the most important routes after caches have warmed.

For the first few days, I watch for broken links, delivery failures, unexpected 404s, and layout problems reported from real devices. I keep a short record of what changed at launch and which optional improvements were intentionally deferred.

Launch is not a dramatic moment where the work becomes perfect. It is the point where private assumptions meet public use. A practical checklist makes those assumptions visible, verifies the paths that matter, and gives the site a much calmer first day in public.

Continue the conversation

Get the next field note.

Occasional writing about development, systems, and better web decisions.