The Blog Post SEO Checklist: 20 Checks Before You Hit Publish

Twenty two-minute checks that catch the mistakes quietly capping most blog posts — plus a condensed copy-paste version at the end.

July 4, 2026 · 13 min read
The Blog Post SEO Checklist: 20 Checks Before You Hit Publish

Most blog posts fail before anyone reads them. Not because the writing is bad — because the post shipped with a 70-character title tag, no internal links, a slug with the publish date baked in, and a meta description Google rewrote into mush. Every one of those mistakes takes under two minutes to catch. Almost nobody catches them.

This blog post SEO checklist is the fix: 20 checks to run before you hit publish, grouped so you can work through them in order. Each check comes with a short "why" so you're not following rules blindly. At the bottom there's a condensed copy-paste version you can drop into your notes app or your CMS workflow.

TL;DR: Before publishing, confirm one search intent, keyword in title/H1/first 100 words, a ≤60-char title tag, a hand-written 150-160 char meta description, clean H2/H3 structure, a short dateless slug, 3-5 internal links, 2-3 external citations, optimized images with alt text, BlogPosting schema, canonical + sitemap + mobile checks — then submit to Search Console and link from two older posts.

None of this is exotic. That's the point. SEO for individual blog posts is mostly a discipline problem, not a knowledge problem.


Group 1: Intent and Keyword

Get this group wrong and nothing else on the list matters. A perfectly optimized post targeting the wrong intent ranks for nothing.

Check 1: The post targets one search intent

One post, one intent. If your draft tries to serve "what is X" readers and "best X tools" readers at the same time, Google sees a page that half-matches two queries instead of fully matching one — and ranks a competitor that committed.

Why it matters: Google ranks pages by how well they satisfy a query. A page split across intents satisfies none of them completely. If you find two intents in your draft, that's two posts. Split them and interlink.

Check 2: Keyword in title, H1, and first 100 words — naturally

Your target keyword (or a close variant) should appear in the title tag, the H1, and somewhere in the first 100 words of body copy. The operative word is naturally. If the sentence reads like it was written for a crawler, rewrite it.

Why it matters: These three placements are how search engines — and readers — confirm the page is about what the title promised. Skip them and you're asking Google to infer relevance. It might. It might not.

Keyword density beyond that? Ignore it. Write the post, use synonyms the way a human would, and move on. Stuffing the exact phrase 14 times is a 2012 tactic that now reads as spam to both algorithms and people.

Check 3: Check the SERP — does your format match?

Before publishing (ideally before writing), search your target keyword and look at what ranks. If the top 10 results are listicles and you wrote a 3,000-word essay, you have a format mismatch. If they're step-by-step tutorials and you wrote an opinion piece, same problem.

Why it matters: The SERP is Google telling you what searchers want for that query. You can disagree with it, but you won't outrank it. Match the dominant format, then differentiate on depth, data, or first-hand experience.


Group 2: Title and Meta

Your title tag and meta description are your ad in the search results. They decide whether a #5 ranking gets clicks or gets scrolled past.

Check 4: Title tag is 60 characters or fewer

Keep the title tag at or under 60 characters. Longer titles get truncated with an ellipsis in search results, and your carefully chosen closing words vanish mid-sentence.

Why it matters: A truncated title looks broken and hides information searchers use to decide whether to click. Front-load the keyword and the value — "Blog Post SEO Checklist: 20 Checks Before Publishing" beats "Everything You Need to Know About How to Optimize Your Blog Posts for Search Engines."

Check 5: Meta description written by hand, 150-160 characters

Write the meta description yourself. Every time. Never let the CMS auto-generate it from the first paragraph, and never leave it blank hoping Google picks a good snippet. Aim for 150-160 characters: state what the reader gets and why this page over the other nine.

Why it matters: Auto-generated descriptions are usually a sentence cut off mid-thought. Google rewrites descriptions it doesn't like — but a strong hand-written one gets used more often, and it's the one place you control the pitch. This is exactly why UnfoldCMS gives every post its own SEO title and meta description fields, separate from the post title — the display title and the search snippet have different jobs.

Check 6: Compelling, not clickbait

Read your title and description as a stranger. Would you click? Now read them again: does the post actually deliver what they promise? Both answers need to be yes.

Why it matters: A boring title loses the click. A clickbait title wins the click and loses the reader — they bounce in eight seconds, and that pattern across visitors tells Google your page didn't satisfy the query. Promise something specific, then deliver it.


Group 3: Structure

Nobody reads blog posts top to bottom. They scan, find the part they need, and leave. Structure for scanners and you serve everyone.

Check 7: Clean H2/H3 hierarchy

Every major section gets an H2. Sub-points within a section get H3s. Never skip levels (no H2 jumping straight to H4), and never use headings for styling — they're an outline, not a font picker.

Why it matters: Headings are how search engines parse what your page covers, how screen readers let users jump between sections, and how scanners decide whether to stop scrolling. A flat wall of bolded text does none of those jobs. Bonus: well-structured sections are what Google pulls into featured snippets and AI Overviews.

Check 8: Short paragraphs

Two to four sentences per paragraph. If a paragraph fills more than four lines on a phone screen, split it.

Why it matters: Dense paragraphs read fine in your editor at desktop width and become a gray brick on mobile, where most of your readers are. Readers who hit a brick leave. Short paragraphs aren't dumbing down — they're respecting how people actually read on screens.

Check 9: The post passes a scan test

Scroll through the post quickly. Within ten seconds of scanning, can you tell what it covers and where the answers are? You should see headings, bolded key phrases, a list or two, maybe a table — visual variety every 150-300 words.

Why it matters: Scanners outnumber readers something like nine to one. A post that scans well gets read deeper, shared more, and earns the engagement signals that correlate with rankings. A post that fails the scan test loses people before your best argument.


Group 4: URLs

The slug takes ten seconds to set and lives forever. Get it right the first time.

Check 10: Short slug — lowercase, hyphens, no dates

The ideal slug is 3-5 words: your keyword, lowercase, hyphen-separated. /blog/blog-post-seo-checklist/ — not /blog/2026/06/13/the-ultimate-blog-post-seo-checklist-for-beginners/.

Why it matters: Dates in slugs make content look stale the moment the year changes, and they lock you out of updating the post without a redirect. Long slugs get truncated in SERPs and mangled when shared. And changing a slug later breaks every existing link to the page — unless your CMS handles it. UnfoldCMS keeps a slug history and 301-redirects old URLs automatically when you rename one, but the better move is to not need the safety net.

If you're choosing a platform partly on URL handling, the flat-file vs database CMS comparison covers how different architectures treat slugs and redirects.


Links are how authority flows into, out of, and around your site. A post with zero links is an orphan in both directions.

Link to 3-5 related posts or pages on your own site, from within the body copy, using anchor text that describes the destination. "Our CMS SEO feature checklist" — not "click here" or "this post."

Why it matters: Internal links pass authority to the pages you link, help crawlers discover and re-crawl your content, and keep readers on your site. Descriptive anchors tell Google what the destination page is about — that's free relevance signaling you control completely. We keep a running checklist of SEO features a CMS should ship with for the platform-level version of this same discipline.

Check 12: 2-3 external citations to authoritative sources

Cite your sources. If you quote a statistic, link the study. If you reference documentation, link the docs — Google Search Central, MDN, official vendor documentation, peer-reviewed research. Two or three solid external links per post.

Why it matters: Citing primary sources signals the content is researched, not regurgitated — that's an E-E-A-T signal Google explicitly cares about. It also helps readers verify your claims, which builds the trust that brings them back. Linking out doesn't "leak" ranking power. That fear is folklore.


Group 6: Images

Images are the heaviest assets on most blog posts and the most commonly neglected. Three checks cover 90% of the problems.

Check 13: Descriptive filenames

Name image files for what they show: blog-post-seo-checklist-printable.webp, not IMG_4302.jpg or Screenshot 2026-06-13 at 10.41.22.png.

Why it matters: The filename is one of the few signals Google Images has about what a picture contains. It costs nothing and compounds — image search drives real traffic for tutorial and comparison content.

Check 14: Alt text on every image, 5-15 words

Every image gets alt text that describes what's in it: alt="Pre-publish SEO checklist with 20 items grouped by category" — not alt="image", not alt="screenshot", never empty.

Why it matters: Alt text is how screen-reader users experience your images, how search engines index them, and what displays when an image fails to load. Describe the image honestly and work the topic in where it fits naturally. Stuffed alt text helps no one and reads as spam.

Check 15: WebP format and lazy loading

Convert images to WebP (25-35% smaller than JPEG at the same quality) and add loading="lazy" to everything below the fold. Don't lazy-load the hero image — that one should load immediately.

Why it matters: Image weight is the #1 cause of slow blog pages, and page speed feeds Core Web Vitals, which feed rankings. If your CMS converts uploads to WebP automatically — UnfoldCMS does this on upload — this check becomes a one-time configuration instead of a per-post chore.


Group 7: Schema

Structured data tells search engines exactly what your page is, instead of making them guess from the HTML.

Check 16: BlogPosting JSON-LD is on the page

View source and confirm a <script type="application/ld+json"> block with "@type": "BlogPosting" (or Article). It should carry the headline, author, publisher, and image. Validate it with Google's Rich Results Test if you're unsure.

Why it matters: Schema is machine-readable confirmation of authorship, publish context, and content type. It feeds rich results, knowledge panels, and increasingly the AI answer engines that summarize the web. A good CMS emits this automatically per post; if yours doesn't, you're hand-maintaining JSON in templates.

Check 17: Schema dates are correct

Inside that JSON-LD, check datePublished and dateModified. They should match reality — not the date you created the draft, not a placeholder, not a modified date that updates on every trivial save.

Why it matters: Google cross-references schema dates with visible dates and crawl history. Mismatched or gamed dates erode trust in all your structured data. Honest dateModified values, updated when you substantively revise a post, are a freshness signal worth having.


Group 8: Technical

Three fast checks that catch the failures readers never see but crawlers always do.

Check 18: Canonical set and post in the sitemap

Confirm the page has a rel="canonical" tag pointing at its own clean URL, and that the URL appears in your XML sitemap. Both should happen automatically; verify anyway the first time you use any new platform or theme.

Why it matters: The canonical protects you from duplicate-content dilution when the post gets syndicated or picked up with tracking parameters. The sitemap is how crawlers find new content fast. A post missing from the sitemap can take weeks longer to index. While you're in there: keep your robots.txt sane, and consider an llms.txt file for AI crawlers — the AI-search equivalent of a sitemap is becoming table stakes.

Check 19: The post renders correctly on mobile

Open the published preview on an actual phone, or at minimum in browser dev tools at 375px width. Check for horizontal scroll, tables that overflow, images that break the layout, and tap targets that overlap.

Why it matters: Google indexes the mobile version of your page — desktop rendering is secondary. A table that forces horizontal scrolling on mobile is a usability failure on the exact version of the page Google evaluates.


Group 9: Post-Publish

The publish button isn't the finish line. The last check happens after the post is live.

Three actions within 48 hours of publishing:

  1. Submit the URL in Google Search Console. Use URL Inspection → Request Indexing. It can cut discovery time from weeks to hours.
  2. Add links from 2 older posts. Find two existing posts on related topics and add a contextual link to the new one. New posts with zero inbound internal links are orphans — crawlers reach them late and rank them lower. When we published our Strapi alternatives comparison, links from older headless-CMS posts went in the same day.
  3. Monitor impressions for 2-4 weeks. Watch the Search Console performance report. Impressions rising but clicks flat? Rewrite the title and meta. No impressions at all after three weeks? Re-check intent match and indexing status.

Why it matters: Posts that get submitted, interlinked, and watched get indexed faster and improve over time. Posts that get published and abandoned stay wherever they land — which is usually page four.


The Condensed Checklist (Copy-Paste Version)

BLOG POST SEO CHECKLIST — 20 CHECKS BEFORE PUBLISH

INTENT & KEYWORD
[ ] 1.  One search intent per post
[ ] 2.  Keyword in title, H1, first 100 words (naturally)
[ ] 3.  SERP checked — post format matches what ranks

TITLE & META
[ ] 4.  Title tag ≤ 60 characters
[ ] 5.  Meta description hand-written, 150-160 characters
[ ] 6.  Both compelling, neither clickbait

STRUCTURE
[ ] 7.  Clean H2/H3 hierarchy, no skipped levels
[ ] 8.  Paragraphs 2-4 sentences
[ ] 9.  Passes the 10-second scan test

URL
[ ] 10. Slug short, lowercase, hyphens, no dates

LINKS
[ ] 11. 3-5 internal links, descriptive anchors
[ ] 12. 2-3 external citations to primary sources

IMAGES
[ ] 13. Descriptive filenames
[ ] 14. Alt text on every image (5-15 words)
[ ] 15. WebP format + lazy loading below the fold

SCHEMA
[ ] 16. BlogPosting JSON-LD present and valid
[ ] 17. datePublished / dateModified correct

TECHNICAL
[ ] 18. Canonical set + URL in XML sitemap
[ ] 19. Renders correctly on mobile

POST-PUBLISH (within 48h)
[ ] 20. Submit to Search Console + link from 2 older
        posts + monitor impressions for 2-4 weeks

Run all 20 and you'll catch the mistakes that quietly cap most posts. The first few times it takes fifteen minutes. After a month it's muscle memory — and the best version of this checklist is the one your platform absorbs for you. Half these checks (meta fields, schema, sitemap, WebP, slug redirects) are things a CMS should handle by default, so your fifteen minutes shrink to five spent on the parts that actually need a human: intent, titles, and links.

Free & Open Source

Own your CMS. No subscriptions.

Unfold CMS is free to download and self-host. Built on Laravel + React, full source code included.

Share this post:

Discussion

Comments (0)

Leave a Comment

Please log in to leave a comment.

Don't have an account? Register here

No comments yet. Be the first to share your thoughts!

Keep Reading

Related Posts

Back to all posts