---
title: "What I check before shipping a site"
description: "A working checklist, refined over several launches, for the things that are cheap to verify now and expensive to discover later."
author: "Ali Demir"
published: 2026-07-22
tags: ["process", "the web"]
canonical: https://alideemir.com/blog/what-i-check-before-shipping/
source: https://alideemir.com/blog/what-i-check-before-shipping.md
---

# What I check before shipping a site

Every item here exists because I once skipped it and paid for it. The list is ordered by how much it costs to find the problem after launch rather than before.

## Content reaches the reader

- View source on the deployed page, not the local one. If the article text is not in the raw HTML, no crawler that matters will see it.
- Disable JavaScript entirely and reload. Whatever remains is what most machine readers get.
- Fetch a page with `curl` and read the output. Browsers repair broken markup silently; `curl` does not flatter you.
- Confirm the canonical URL is absolute, correct, and points at the version you actually want indexed.
- Check that a page with no content — an empty category, a tag with one post — still renders something coherent rather than an empty shell.

## Structure holds up

- Read the heading outline on its own. It should be a fair summary of the page. If it is not, the headings are decoration.
- Verify there are no skipped heading levels. An `h2` followed by an `h4` is a claim about structure that is not true.
- Confirm exactly one `h1` per page, and that it says what the page is rather than what the site is.
- Check that every link's text makes sense read in isolation. "Read more" appears in an index of links with no context around it.
- Make sure the language attribute on `html` is set and correct. It is one attribute and it changes how the page is pronounced, hyphenated, and translated.

## The machine-facing files exist and are right

- Load `/robots.txt` and read it aloud. Misplaced `Disallow` lines are the single most expensive typo available on the web.
- Load the sitemap and count the URLs. If the number is wrong, something is being excluded silently.
- Fetch the RSS feed and put it through a validator. Feeds fail quietly and nobody reports it.
- Check that drafts are absent from all three. It is easy to exclude a draft from the page listing and forget the feed.

## Typography survives contact with reality

- Read a long post on a phone, outdoors, at whatever brightness you actually use. Contrast decisions made on a calibrated monitor in a dim room do not survive this.
- Resize the window to the narrowest and widest plausible sizes and watch the measure. Lines longer than about seventy-five characters stop being readable, and nothing warns you.
- Print a page, or at least open the print preview. Print stylesheets are almost always broken, because almost nobody looks.
- Check the page in both colour schemes, including the moment of switching. A theme that only works in one direction is a theme that was tested once.
- Look at a paragraph of text with the fonts blocked. If the layout collapses without the webfont, it will collapse for the first paint too.

## Nothing is quietly broken

- Click every link in the navigation and footer. This takes two minutes and catches the embarrassing ones.
- Load the site with a cold cache on a throttled connection and time it honestly.
- Check the 404 page exists, is styled, and offers a way back.
- Confirm the favicon actually resolves. A missing one produces a 404 on every single page load.
- Search for your own domain in the output of a full crawl for stray `localhost` or staging URLs.

---

The list is not exhaustive and it is not meant to be. It is the set of checks whose cost is under a minute each and whose failure is measured in weeks of quiet damage. Anything that stops meeting that ratio comes off the list, and anything that starts meeting it goes on.
