The on-page SEO checklist I run before every post

When I published my first blog post back in my PHP developer days, I did everything wrong. No heading structure, a title that read like a filename, and images straight off my camera at 4MB each. It got eleven visits in three months — nine of them mine.

On-page SEO is the part of ranking you actually control. No backlink outreach, no budget, no waiting on someone else. Here is the checklist I now run on every post before I hit publish.

1. Decide the search intent before you write a word

Most new bloggers pick a keyword and start typing. That is backwards. Open an incognito window, search your target phrase, and look at what is already ranking on page one. If the top ten results are all step-by-step tutorials, Google has already decided that phrase means “show me how.” A 2,000-word opinion piece will not outrank them no matter how well written it is.

Three intent buckets cover almost everything:

  • Informational — “what is schema markup” → explainer, definitions, examples.
  • Commercial — “best WordPress caching plugin” → comparison, pros and cons, a table.
  • Transactional — “hire WordPress developer” → service page, pricing, contact form.

Match the format of what is already winning. You can be better than page one, but you rarely get to be a different type of thing than page one.

2. Title tag, H1, and URL — three different jobs

These get confused constantly. The title tag is what shows in search results and has roughly 60 characters before Google truncates it. The H1 is what the reader sees on the page and can be longer and friendlier. The URL slug should be short — three to five words, no dates, no stop words.

A real example from a post of mine:

  • Title tag: On-Page SEO Checklist for New Bloggers (2026)
  • H1: The on-page SEO checklist I run before every post
  • Slug: /on-page-seo-checklist/

Put your main keyword near the front of the title tag. Not because of some magic weighting, but because people scan the first few words of a result and stop. Front-loading improves click-through rate, and click-through rate is the thing that actually moves you.

One rule I hold firmly: never change a slug after a post starts getting traffic unless you set up a 301 redirect. I have watched a client lose four months of rankings because someone “tidied up” the permalinks.

3. Structure the page for someone who is skimming

Assume nobody reads top to bottom. They land, scan the subheadings, and decide in about five seconds whether to stay. Your heading hierarchy has to survive that scan.

Practical rules:

  • One H1 per page. WordPress usually makes your post title the H1 — do not add a second one in the editor.
  • H2 for main sections, H3 for subsections underneath. Do not skip from H2 to H4 because the font size looks nicer; fix it with CSS instead.
  • Write headings that mean something on their own. “Compress your images” beats “Step 3.”
  • Keep paragraphs to three or four lines. On a phone, a six-line paragraph fills the entire screen and feels like homework.

Add a table of contents on anything over roughly 1,200 words. It helps readers, and it sometimes earns you sitelinks in the search result — extra clickable rows under your listing that take up more space on the page.

4. Meta description, internal links, and images

The meta description is not a ranking factor, and people use that as an excuse to skip it. Skip it and Google auto-generates one from a random sentence in your post — often the least persuasive one. Write 150 characters that make the click feel worth it. Say what the reader gets, not what the article is about.

Internal linking is the most underused tool a new blogger has. Every time you publish, do two things: add two or three links from the new post to older relevant posts, and go back into two older posts and link forward to the new one. That second half is the step everyone forgets. A brand new URL with zero internal links is essentially invisible — the crawler has no path to it except the sitemap.

For images, three checks:

  • Compress. Run everything through a tool that outputs WebP. A 2.4MB hero image becoming 180KB is normal, and that difference is real seconds on a 4G connection.
  • Descriptive filenames. yoast-focus-keyword-settings.webp, not IMG_4471.jpg.
  • Real alt text. Describe the image for someone who cannot see it. If the description happens to include your keyword, fine. If it does not, leave it alone — keyword-stuffed alt text helps nobody and hurts screen reader users.

Also set explicit width and height attributes on images. It costs nothing and prevents the layout from jumping as images load, which is a Core Web Vitals metric Google measures directly.

5. The pre-publish pass that takes ten minutes

Before publishing, I run through this quickly:

  • Title tag under 60 characters, keyword near the front.
  • Meta description written manually, under 155 characters.
  • Slug short and clean.
  • One H1, logical H2/H3 structure.
  • Two to three internal links out, two links in from older posts.
  • All images compressed, named, and with alt text.
  • Keyword appears in the first 100 words — naturally, in a sentence you would have written anyway.
  • Opened on a phone and actually read the first two paragraphs.

That last one catches more problems than the rest combined. Text that looks fine on a 27-inch monitor often reads like a wall on mobile, where most of your traffic will come from.

What to ignore for now

New bloggers burn weeks on things that do not matter yet. Keyword density has not been a meaningful signal in over a decade — write naturally and stop counting. Chasing a green light in an SEO plugin is not a goal; the plugin is a checklist, not a judge, and I regularly publish posts with an orange indicator because the suggestion was to make the writing worse. And do not buy backlinks in month one. You do not have enough content for links to point at, and cheap links are the fastest route to a problem you will spend a year cleaning up.

The takeaway

On-page SEO is not clever. It is a checklist you run every single time until it becomes muscle memory. Ten minutes per post, done consistently across fifty posts, will beat one heavily optimised article every time — because the compounding effect comes from the habit, not from any single trick.

Pick your next post, run the eight-point list above, and publish. Then go back and fix your last five posts. That backlog cleanup is usually where the first real traffic jump comes from.

Faizan Khan
Faizan Khan

Technical PM & PHP developer — the manager who still ships code. 13 years turning “can we build this?” into “it’s live”.

Work with me →

Enough talk. Let’s launch.

One call. An honest scope, a real timeline, and weekly updates until it ships.