Use this on-page SEO checklist for blog posts to review titles, headings, internal links, schema, images, and CTAs before you hit publish.

On-page SEO is what you can control on the page itself: the wording, headings, internal links, images, and any structured data you add. It makes a post easier to read and easier for search engines to understand.
A checklist helps because small misses stack up. One vague heading, a missing internal link, or an image without alt text can quietly hold a post back. A repeatable process turns those details into habits, so you’re not relying on memory or one person catching everything right before publish.
This checklist sticks to the pieces most content teams touch every time: headings that are easy to scan, internal links that guide the next step, schema basics (like Article and sometimes FAQ), image details (filename, alt text, size, load speed), and CTAs that feel natural for the topic.
What it isn’t: a promise of instant rankings. Search results depend on competition, site authority, and whether you’re answering what people actually want.
It also isn’t a replacement for picking the right topic. Perfect formatting can’t save a post that answers the wrong question. But when the topic is right, these checks make the page clearer, more consistent, and easier to maintain.
Treat the checklist like a routine, not a one-off audit. The goal is a consistent quality bar, even when different people write.
Pick one role to own the final pass (writer, editor, or SEO lead) and keep it consistent. When everyone is responsible, nobody is.
A simple two-pass rhythm works well:
Run the checklist in the same order each time. That keeps you from polishing “extras” (like schema or alt text) before the basics (like intent and headings) are solid.
Time-box it. Once the routine is familiar, many teams can do a full on-page review in about 15 to 25 minutes per post. If you keep running over, the checklist is probably too long or your templates need tightening.
After publishing, track what keeps going wrong: long titles, missing internal links, vague H2s, inconsistent schema fields. Log it in one shared place, then fix the root cause (briefs, templates, or guidelines) instead of patching the same mistake over and over.
Before you adjust headings or add schema, decide what the post is trying to rank for. Choose one primary query and write it down exactly as a reader would type it, like “on-page SEO checklist for blog posts.” One “north star” keeps the post focused.
Then lock in search intent. Ask what the reader is trying to do right now. If they want a checklist they can run today, but the post reads like a broad SEO lesson, they’ll bounce.
A fast intent check:
After that, pick a small set of related topics you can cover naturally. Supporting ideas should serve the reader’s question, not pad the post.
Write a plain-language promise for the article. For example: “You’ll have a repeatable checklist your team can run before publishing every blog post.” If a paragraph doesn’t help deliver that promise, cut it or move it.
Make sure the answer shows up early. Within the first screen, the reader should understand what the checklist includes, who it’s for, and roughly how long it takes.
These elements shape what people see in search results and what your page looks like when shared. Small improvements here can increase clicks even if the article body stays the same.
A good URL is readable out loud and still makes sense a year from now. Skip dates and filler words unless they truly matter.
Keep it simple:
Example: /on-page-seo-checklist-blog-posts
Include the main query people type, but write it like a human headline. Search results can cut titles off, so front-load the core phrase and put extra detail at the end.
Quick checks:
Think of the meta description as the back-cover summary. Say what it is, who it’s for, and what outcome they get.
Example pattern: “A repeatable checklist content teams can run before publishing: URLs, titles, internal links, images, schema, and CTAs.”
Then read the title and description together. If they repeat each other, tighten the description so it adds new detail.
Headings act like a table of contents. If someone skims only the headings, they should still understand what the page covers and in what order.
Start with one clear H1 that matches the page topic. Treat it as a promise: specific enough that it couldn’t fit ten different posts.
Use H2s for the main steps or questions a reader has, like headings, images, internal links, schema, and CTAs. Each H2 should represent a real chunk of work.
Use H3s only when they add clarity: examples, sub-steps, or common mistakes. If an H3 doesn’t add meaning, remove it.
Avoid vague headings like “Overview” or “More info.” Replace them with plain wording that matches what readers actually ask.
A quick structure check before publishing:
If your team uses a content generator like GENERATED, it helps to bake heading rules into your templates so drafts start with a clean outline instead of a wall of text.
Before schema, images, or internal links, make sure the post is worth reading. Most SEO fixes can’t save a page that feels unclear or thin.
Open with a short answer or takeaway (one or two sentences), then expand with steps and context. If the reader has to scroll to understand what the post will help them do, you’re making it harder than it needs to be.
Add one small proof point without big claims. A simple example often does the job.
Keep scanning easy: short paragraphs (1 to 3 sentences), clear subheads, and only short lists when they genuinely help.
A fast scan test:
Define terms where they appear, in plain language. For example, “search intent” is the reason someone searched (to learn, compare, solve, or buy). “Schema” is extra page information that helps search engines interpret your content.
Close with a next action, not a recap. Tell the reader what to do now, like: improve one weak section, add one example, then move on to internal links, images, schema, and your CTA.
Internal links are one of the easiest parts of an on-page SEO checklist to repeat because you control them. Done well, they guide readers to the next useful step and help search engines understand how your topics connect.
Add a small number of links that genuinely support the point you’re making. If you mention a concept you cover elsewhere, that’s a natural place to link.
A practical rule is 2 to 5 internal links per post, chosen for relevance, not volume. Use anchor text that tells the reader what they’ll get, not generic text like “click here.”
Quick checks:
A common mistake is repeating the same exact anchor text to the same page across lots of posts. Let anchors vary naturally and use the surrounding sentence to explain why the link matters.
Schema markup is code that helps search engines understand what your page is about. It won’t rescue a weak post, but it can reduce confusion and improve interpretation.
For most editorial content, choose Article or BlogPosting. Use Article for news-style or reporting posts. Use BlogPosting for typical blog content. The main goal is consistency across your library.
A solid checklist post usually includes these schema checks:
Here’s a small JSON-LD example you can adapt (make sure the values match the page exactly):
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "On-page SEO checklist for blog posts that teams can reuse",
"author": { "@type": "Person", "name": "Jane Doe" },
"datePublished": "2026-01-16",
"dateModified": "2026-01-16"
}
FAQ schema is where teams often slip. If the questions and answers aren’t on the page as plain text (and easy to find), don’t mark them up. When you add an FAQ section later, update both the content and the markup together.
If your content is published through a CMS, custom code, or an API, it helps to keep one schema template and reuse it. Tools like GENERATED can also make schema fields part of the content template so required properties don’t get skipped.
Images can lift a post, but they can also slow it down or confuse search engines if they’re an afterthought. Aim for one strong featured image that clearly matches the topic and fits your brand style.
Use clear filenames before upload. “on-page-seo-checklist-featured.jpg” is easier to manage than “IMG_4837.jpg.” Keep names short, readable, and separated with hyphens.
Alt text is mainly for accessibility. Describe what’s in the image in plain words. Mention a keyword only if it naturally belongs in the description. If an image is purely decorative, it usually doesn’t need alt text.
A quick set of image checks:
Performance matters because image weight adds up fast. If you use a system like GENERATED (generated.app), image generation plus resizing and polishing can be part of the routine so oversized files don’t slip through.
If you embed video, keep it focused and avoid stacking multiple heavy embeds on one page. One relevant media element that loads quickly usually beats three that distract and slow everything down.
A CTA should feel like a helpful next step, not a speed bump. Match it to intent. Someone searching for a checklist is usually trying to finish a draft, not make a purchase immediately.
Timing matters. Put the first CTA after you’ve delivered real value.
Keep it simple by choosing one primary CTA for the whole post. You can include a softer secondary option, but avoid turning every section into a mini landing page.
CTA copy stays clear when it does a few basic things well:
If you’re testing different CTAs, track performance by topic type (how-to, templates, comparisons). GENERATED supports adaptive CTA generation and performance tracking, which can help you learn what works for each category and reuse winners.
Most on-page SEO problems aren’t advanced. They happen when teams move fast and repeat the same shortcuts.
One trap is forcing the primary phrase everywhere. If headings and anchors start sounding repetitive, the page reads poorly and feels spammy. Use the main phrase where it fits, then switch to natural variations.
Internal links are another common slip. Generic anchors waste a chance to set expectations, and links added “just because” feel random. Good links have a reason: they help the reader continue, verify, or understand.
Schema gets misunderstood too. Mark up what’s visible on the page and matches the content. Don’t add FAQ markup without an actual FAQ section.
CTAs can backfire when there are too many, or when they don’t match the reader’s goal. One strong, relevant CTA near a natural decision point usually works better than several scattered asks.
Images can quietly hurt performance as well: oversized files, vague filenames, missing or unhelpful alt text.
To keep this repeatable, treat your checklist as a short final pass right after the edit is approved.
Example: your team is publishing a new how-to post, “How to clean a coffee grinder.” The draft is fact-checked and readable. Now run a quick pass that catches common issues:
What gets fixed most often is predictable: vague headings (“Step 1”, “Tips”), one missing internal link to a core guide, and an image that’s too large or has alt text like “image1.”
For handoffs, keep roles clear:
If you want fewer manual checks, moving parts of this into templates helps. GENERATED (generated.app) can fit here if you’re publishing through an API-based workflow: it generates blog content, images, and aligned CTAs, supports translations, and tracks CTA performance so you can reuse what works.
Use it as a repeatable final pass to catch easy-to-miss details like headings, internal links, image basics, schema, and a clear CTA. It’s meant to keep quality consistent across writers, not to guarantee rankings.
Do a two-pass routine: one right after the draft is finished and another right before publishing. In practice, most teams can time-box it to about 15–25 minutes once the process is familiar.
Pick one primary query and write it down exactly as a reader would search it, then confirm the intent (learn, compare, solve, or buy). If the page doesn’t match what the reader wants to do right now, small SEO tweaks won’t fix it.
Keep the URL short, readable, and stable, staying close to the main topic without dates or filler. Only change a published URL if you have a clear redirect plan, because casual URL changes can create avoidable problems.
Put the most important words early and write it like a human headline, not a keyword list. Aim for a clear promise that matches the page, since search results may cut off the end of long titles.
Write one clear promise that adds detail beyond the title, focusing on who it’s for and the outcome. Avoid stuffing keywords; a tight description that sets expectations usually earns better clicks.
Use one clear H1 that matches the topic, then structure H2s as the main steps or questions readers care about. If someone skims only the H1 and H2s, they should still understand the full outline of the page.
Add a small number of links that genuinely help the reader take the next step, usually around 2–5 per post. Use specific anchor text that describes what they’ll get, and make sure every link works and points to the right page.
Most blog posts should use either Article or BlogPosting and include key fields like headline, author, and publish/modified dates. Add FAQ schema only if the page visibly contains real question-and-answer text that readers can find.
Use clear filenames, descriptive alt text that matches what’s actually in the image, and keep file sizes small through resizing and compression. A strong featured image that loads fast usually helps more than multiple heavy images that slow the page down.