On-page SEO is the most actionable part of SEO for bloggers because it’s entirely within your control. You can’t force other sites to link to you. You can’t control Google’s algorithm updates. But you can control every element on your own pages.
I’ve audited hundreds of blog posts for clients, and the same mistakes show up over and over. Missing meta descriptions. Headings used for styling instead of structure. Images with file names like “IMG_4382.jpg.” URLs that look like “/p=1247.” These aren’t obscure technical issues. They’re basics that take five minutes to fix and can mean the difference between page 3 and page 1.
This chapter covers the on-page elements that actually move rankings. I’m skipping the stuff that doesn’t matter anymore (keyword density, bold keywords, meta keywords tag) and focusing on what I’ve seen work across 800+ client projects.
Title Tags and Meta Descriptions That Earn Clicks
Your title tag is the single most important on-page SEO element. It’s what shows up as the clickable blue link in search results. It tells both Google and searchers what your page is about.
Writing effective title tags:
Keep them under 60 characters. Google truncates anything longer, and truncated titles look sloppy in search results. I aim for 50-58 characters to be safe.
Put your target keyword near the front. Not because of keyword positioning magic, but because searchers scan from left to right. If your keyword is the first thing they see, they know your result is relevant to their query.
Make them compelling. “How to Start a Blog” is accurate but boring. “How to Start a Blog That Makes Money (My 2025 Process)” is more clickable because it promises a specific outcome and freshness. Adding parenthetical modifiers like “(Free Template),” “(Step by Step),” or “(With Examples)” consistently improves click-through rates. I’ve tested this across dozens of posts.
Include the current year for keywords where freshness matters. If you’re writing about “best WordPress themes” or “top email marketing tools,” searchers want current recommendations. Adding “2025” or “2026” signals that your content is up to date. This one change alone has boosted CTR by 15-25% on several of my posts.
Avoid clickbait. “You Won’t Believe What Happened When I Tried SEO!” might get clicks on social media. In search results, it tells the searcher nothing about whether your content answers their question. Be specific and honest.
Writing effective meta descriptions:
The meta description is the 2-3 line snippet below your title tag in search results. Google sometimes rewrites it (more on that in a second), but when it uses yours, it directly affects click-through rate.
Keep them under 155 characters. Front-load the value proposition. Why should the searcher click your result instead of the other 9 on the page? “I’ve tested 23 WordPress themes on real client sites. Here’s which ones actually perform well and which ones are all marketing.” That tells the searcher they’ll get real, experience-based recommendations. Way more compelling than “This article discusses the best WordPress themes available.”
Include your target keyword naturally. Google bolds matching query terms in meta descriptions. When your target keyword appears in the description, it visually jumps out to searchers. But don’t stuff it. Write for humans.
Google rewrites meta descriptions about 60-70% of the time, pulling text from your content that it thinks better matches the specific query. This doesn’t mean you should skip writing them. When Google does use yours, it makes a difference. And a well-written meta description helps Google understand your page’s topic even when it doesn’t display it.
Heading Hierarchy: H1 Through H4
Headings aren’t just formatting. They’re semantic structure. Google uses headings to understand your content’s organization and hierarchy. Readers use them to scan and find what they need. Getting this right matters more than most bloggers realize.
H1: Your page title. Every page should have exactly one H1 tag, and it should be your post title. If you’re using WordPress, your post title automatically becomes the H1. Don’t add another one in your content.
A common mistake: using H1 tags for section headings within the content. I see this all the time. Your content should have one H1 at the top, then H2s for major sections, H3s for subsections, and H4s if you need another level. Never skip levels (don’t jump from H2 to H4).
H2: Major sections. These are your chapter headings within the post. Each H2 should represent a distinct subtopic. Google pays attention to H2 text. Including keyword variations in your H2s (naturally, not forced) helps Google understand the scope of your content.
For a post about “best WordPress hosting,” your H2s might be: “What to Look for in WordPress Hosting,” “Best WordPress Hosting for Beginners,” “Best WordPress Hosting for High Traffic Sites,” “How I Tested These Hosting Providers.” Each H2 covers a distinct angle that someone searching for WordPress hosting might care about.
H3: Subsections under H2s. If your H2 section is long enough to need sub-sections, use H3s. Under the “Best WordPress Hosting for Beginners” H2, you might have H3s for each hosting provider: “Cloudways,” “SiteGround,” “A2 Hosting.”
H4: Rarely needed. If you’re going to H4 depth, your content structure might be too complex. Consider splitting into multiple posts or simplifying the hierarchy. I use H4s maybe once every 20 posts.
The real rule: your heading structure should outline your post. If someone only read your H1, H2s, and H3s, they should understand the complete structure and coverage of your article. If they can’t, your headings are decorative, not structural.
URL Structure
URLs are a minor ranking factor, but they matter for two reasons: they help Google understand your page topic, and they affect how your result looks in search.
Keep URLs short and descriptive. /best-wordpress-hosting/ is better than /2025/03/15/the-complete-guide-to-finding-the-best-wordpress-hosting-for-your-blog/. Short URLs are easier to read, easier to share, and look cleaner in search results.
Include your target keyword. Not stuffed, just present. /keyword-research-guide/ works. /the-ultimate-complete-definitive-keyword-research-guide-for-seo-beginners/ doesn’t.
Use hyphens, not underscores. Google treats hyphens as word separators. best-seo-tools is read as three separate words. best_seo_tools used to be read as one word. Google says they handle underscores now, but hyphens are the standard. Stick with them.
Remove stop words. “A,” “the,” “and,” “of,” “for,” “in” can usually be removed from URLs without losing meaning. /how-to-start-blog/ is cleaner than /how-to-start-a-blog-for-beginners-in-2025/.
Never change URLs of published posts without redirects. If you change a URL, you need a 301 redirect from the old URL to the new one. Otherwise, you lose all the ranking equity that URL has built. I’ve seen sites lose 30-50% of their organic traffic by changing URL structures without proper redirects. Don’t do it.
Set your permalink structure once and leave it. In WordPress, go to Settings > Permalinks and choose “Post Name.” This gives you clean URLs like /your-post-slug/. Don’t use the default structure that includes dates or category names. Set it when you launch your site and never touch it again.
Image Optimization
Images are one of the most overlooked on-page SEO opportunities. Most bloggers upload images straight from their camera or stock photo site without any optimization. That’s leaving traffic and performance on the floor.
File names matter. Before uploading, rename your image files to something descriptive. wordpress-dashboard-settings.jpg is infinitely better than IMG_2847.jpg or screenshot.png. Google reads file names and uses them to understand image content. It takes three seconds to rename a file. Do it.
Alt text is not optional. Alt text (alternative text) serves two purposes: it describes the image for visually impaired users using screen readers, and it tells Google what the image shows. Write alt text that accurately describes the image and naturally includes relevant keywords when appropriate.
Good alt text: “WordPress dashboard showing permalink settings page.” Bad alt text: “best WordPress SEO settings WordPress dashboard WordPress permalinks SEO.” Write for humans first. Google can spot keyword stuffing in alt text just like it can in body copy.
Compress your images. Large image files slow down your page load time, which hurts both user experience and SEO. Google has explicitly stated that page speed is a ranking factor. I use ShortPixel or Imagify for WordPress. Both automatically compress images when you upload them. A typical blog post image should be under 100KB. If your images are over 500KB each, you’ve got a problem.
Use WebP format. WebP images are 25-35% smaller than equivalent JPEGs and PNGs with no visible quality loss. Most modern browsers support WebP. If you’re on WordPress, plugins like ShortPixel can automatically convert your images to WebP and serve them to supported browsers. This alone can cut your page weight significantly.
Specify image dimensions. Always include width and height attributes on your image tags. This prevents layout shift (the annoying jumping effect when images load after text). Layout shift is part of Google’s Core Web Vitals metrics and affects rankings.
Use descriptive captions when appropriate. Image captions are some of the most-read text on any page. If a caption can add context or value, use it. Don’t force them, but don’t ignore the opportunity either.
Schema Markup for Blog Posts
Schema markup (structured data) is code you add to your pages that helps Google understand your content in a more structured way. It doesn’t directly improve rankings (Google has said this), but it can improve how your results look in search, which improves click-through rate, which does affect your traffic.
Article schema. Every blog post should have Article or BlogPosting schema. This tells Google basic info about your post: title, author, date published, date modified, featured image. If you’re using WordPress with a decent SEO plugin (Yoast SEO or Rank Math), this is usually added automatically. Check by pasting one of your post URLs into Google’s Rich Results Test (search.google.com/test/rich-results). If it shows Article markup, you’re set.
FAQ schema. If your post includes a frequently asked questions section, adding FAQ schema can get your questions displayed directly in search results as expandable dropdowns. This takes up more space on the results page and can dramatically increase clicks. I’ve seen posts with FAQ schema get 25-40% more clicks than the same post without it.
In WordPress, Rank Math and Yoast both offer FAQ blocks that automatically add the schema. If you’re writing FAQ sections anyway (which you should be for most informational content), there’s no reason not to add the markup.
HowTo schema. If your post is a step-by-step tutorial, HowTo schema can display your steps directly in search results with images. This is powerful for tutorial content. Google shows each step as a numbered list in the search results, giving your result a huge visual advantage.
The honest truth about schema: it’s useful, not transformational. I’ve seen measurable CTR improvements from FAQ and HowTo schema. But I’ve never seen schema alone take a post from page 5 to page 1. Think of it as a multiplier on content that’s already ranking reasonably well. If you’re not on page 1 or 2, schema won’t save you. If you are, it can help you get more clicks.
Don’t go overboard. Stick to Article, FAQ, and HowTo markup for blog content. Those three cover 90% of what matters. You don’t need breadcrumb schema, organization schema, or 15 other types unless you have a specific reason.
The On-Page SEO Checklist I Use for Every Post
After 16 years, I’ve distilled my on-page SEO process into a checklist I run through before hitting publish. This takes me 10-15 minutes per post. It’s boring. It works.
Before writing:
- [ ] Target keyword identified through research (Chapter 3)
- [ ] SERP analyzed for intent and format (Chapter 4)
- [ ] Content outline created with heading hierarchy
While writing:
- [ ] H1 is the post title (one per page, contains target keyword)
- [ ] H2s cover major subtopics (include keyword variations naturally)
- [ ] H3s used for subsections under H2s as needed
- [ ] Target keyword appears in the first 100 words
- [ ] Content matches the intent and format the SERP demands
- [ ] Internal links to 3-5 relevant posts on your site
- [ ] External links to authoritative sources where appropriate
Before publishing:
- [ ] Title tag: under 60 characters, keyword near front, compelling
- [ ] Meta description: under 155 characters, value proposition clear
- [ ] URL slug: short, descriptive, includes keyword, hyphens used
- [ ] All images: descriptive file names, alt text written, compressed, WebP format
- [ ] Image dimensions specified (no layout shift)
- [ ] Schema markup: Article schema present, FAQ/HowTo if applicable
- [ ] Post is mobile-friendly (check in browser dev tools)
- [ ] Page loads in under 3 seconds (check with PageSpeed Insights)
After publishing:
- [ ] Submit URL in Google Search Console for indexing
- [ ] Share on your primary social channel to generate initial signals
- [ ] Add internal links from 2-3 existing relevant posts to this new post
I don’t obsess over SEO scores from plugins. Yoast giving you a “green light” doesn’t mean you’ll rank. I’ve published posts with an “orange” Yoast score that hit page 1, and posts with “all green” that went nowhere. The plugin checks are useful as reminders, not as gospel.
What matters is the fundamentals: match the intent, write the best answer, make sure Google can understand and index your content, and give searchers a reason to click your result over the other nine on the page.
On-page SEO isn’t glamorous. It’s not the exciting part of blogging. But it’s the difference between content that compounds and content that collects dust. Do it for every post. Make it automatic. The compound returns are worth the 15-minute investment.
Chapter Checklist
- [ ] I know how to write title tags under 60 characters with front-loaded keywords
- [ ] I can write meta descriptions that give searchers a reason to click
- [ ] I understand heading hierarchy (one H1, H2s for sections, H3s for subsections)
- [ ] I’ve set my WordPress permalink structure to “Post Name”
- [ ] I rename image files before uploading and write descriptive alt text
- [ ] I compress images and use WebP format
- [ ] I understand Article, FAQ, and HowTo schema and when to use each
- [ ] I have an on-page SEO checklist I’ll use for every post going forward
Chapter Exercise
This exercise applies everything from this chapter to a real post. Pick either a new draft or an existing post that isn’t performing well.
-
Audit the title tag. Is it under 60 characters? Does it include the target keyword near the front? Is it more compelling than the titles currently ranking for that keyword? Rewrite it if needed.
-
Check the heading structure. Open your post and list out every heading. Is there exactly one H1? Do the H2s cover distinct subtopics? Are there any heading-level skips (H2 jumping to H4)? Fix any structural issues.
-
Audit your images. For every image in the post, check the file name, alt text, file size, and format. Rename files that are generic. Write alt text for any images missing it. Compress anything over 100KB. Convert to WebP if possible.
-
Check the URL. Is it short and descriptive? Does it include the target keyword? If it’s a published post with a bad URL, don’t change it now (we’ll cover redirects later). Just note it for future posts.
-
Test for schema markup. Paste your post URL into Google’s Rich Results Test. Does it show Article markup? If your post has an FAQ section, is FAQ schema present? If not, add it using your SEO plugin.
-
Run the full on-page checklist. Go through every item in the checklist from this chapter. Score yourself: how many items did you already have right vs. how many need fixing? That gap is your improvement opportunity.
If you do this exercise for your top 5 posts, you’ll likely find 10-15 quick fixes that can start improving your rankings within weeks. On-page SEO is the fastest lever you can pull because the changes take effect as soon as Google recrawls the page.
Disclaimer: This site is reader-supported. If you buy through some links, I may earn a small commission at no extra cost to you. I only recommend tools I trust and would use myself. Your support helps keep gauravtiwari.org free and focused on real-world advice. Thanks. - Gaurav Tiwari