On-page SEO is the part of search ranking you control from inside your own website. It is the title of a page, the words in it, the headings, the images, and the links. No backlinks to chase and no agency needed.
This is the checklist I run on every page I build for a client. It is written for one page at a time, because that is how Google reads your site. Run it on your homepage first, then on each service page.
Two things before you start. I build websites and do SEO for small businesses in Baltimore, so I have an interest in what you conclude. And I wrote a free Chrome extension that runs this exact checklist in one click. I mention it near the end, and you can finish the whole list without it.
The short version
An on-page SEO checklist covers nine things on a single page: one target keyword, a title tag that uses it, a meta description written for the click, one H1 with H2s in order, a short readable URL, body copy that answers the searcher, images with alt text, links in and out, and structured data. Fix them in that order.
1. Pick one keyword for the page
Every page needs one job. Decide what search you want this page to win, and write it down before you touch anything else.
Think in the words a customer would type, not the words you use internally. A dentist in Canton wants "family dentist canton" or "dentist near me," not "comprehensive oral care solutions." A roofer wants "roof repair baltimore," not "residential exterior services."
One keyword per page. If you find yourself wanting two, that is usually two pages.
2. Write the title tag around it
The title tag is the blue link in Google's results. It is the single most important line on the page. Put your keyword in it, close to the front, and name the place if you serve a local area.
Google explains in its title link documentation that it may rewrite your title if it is stuffed, repetitive, or too long. So write one honest, descriptive title per page. "Roof Repair in Baltimore, MD | Chesapeake Roofing" beats "Home" every time.
Keep it under about 60 characters so it does not get cut off. Never reuse the same title on two pages.
3. Write the meta description for the click
The meta description is the grey text under the blue link. It does not affect ranking directly. It affects whether people click, which is the whole point.
Google's meta description guidance says it may show your description or pull a different snippet from the page. Write it anyway. Say what the page offers and who it is for, in about 155 characters, and give the reader a reason to choose you over the result above and below.
Each page gets its own. A site-wide description copied onto every page is the same as no description.
4. Use one H1 and put the H2s in order
Headings are the page's outline. One H1 that matches the title's promise, then H2s for each section, then H3s only inside an H2 if you need them.
The mistakes I see most: a page with no H1 because the theme uses the logo instead, a page with five H1s because the builder makes every big font an H1, and headings that are decorative rather than descriptive. "Our Approach" tells Google nothing. "Roof Repair Costs in Baltimore" tells it plenty.
Your keyword belongs in the H1. Write the rest of the headings for a reader skimming on a phone.
5. Keep the URL short and readable
A good URL says what the page is. Google's URL structure guidance recommends simple, descriptive words separated by hyphens, and warns against long ID strings and session parameters.
So /services/roof-repair beats /page?id=1837. Use lowercase, use hyphens, and do not change a URL that already ranks unless you set up a redirect. A working URL with history is worth more than a prettier one with none.
6. Write the body for the person who searched
The page has to actually answer the search. Google's helpful content guidance is long, but the core of it is simple: write for people first, cover the topic fully, and show why you are qualified to talk about it.
For a small business page, that means:
- Say what you do, for whom, and where. Name the neighborhoods you serve in real sentences, not a list at the bottom.
- Use the keyword naturally, in the first paragraph and a few more times where it reads well. Do not count.
- Answer the questions a customer would ask before they call: what it costs, how long it takes, what happens first.
- Show proof you are real. Your name, your photo, your address as text, and real projects.
Thin pages lose. A service page with two sentences and a contact form will not outrank a competitor who explained the service properly.
7. Give every image alt text and a real file name
Alt text describes the image for screen readers and for Google, which cannot see the picture. Google's image best practices also ask for descriptive file names and images that load fast.
So "chesapeake-roofing-crew-replacing-shingles-baltimore.jpg" with alt text "Roofing crew replacing shingles on a Baltimore rowhouse" beats "IMG_4471.jpg" with no alt text. Compress images before uploading. A single oversized hero photo can make a page slow on a phone, and phones are where your customers are.
8. Link in and link out
Internal links tell Google which pages on your site matter and how they relate. A blog post about roof repair costs should link to your roof repair service page. Your service pages should link to each other and to your contact page.
Outbound links to real sources are fine and often help. If you cite a fact, link to where it came from. It builds trust with readers and it is honest.
Check that every link works. Broken links on a small site are a sign nobody is minding it, to Google and to visitors.
9. Add structured data and social tags
Structured data is a block of code that states your business details in a format machines read reliably. Google's introduction to structured data explains the formats it supports. For a local business, a LocalBusiness block with your name, address, phone, and hours is the one to add.
Open Graph tags control how your page looks when someone shares it on Facebook or LinkedIn. The Open Graph protocol is a short spec: a title, a description, and an image. Without them, a share shows a blank card or a random image from the page.
This is the one item on the list where it is reasonable to pay someone for an hour rather than editing code yourself. It is also the item most builders and WordPress SEO plugins now handle for you, so check before you buy anything.
How to check a page in one click
You can run every item above by hand with the page open and view-source in another tab. I did that for years.
Then I built Optia, a free Chrome extension that does the checklist for you. Open any page, enter the keyword you chose in step 1, and Optia scores the page from 0 to 100. It lists every check by category, marks each issue High or Medium priority, and shows where your keyword appears across the title, meta description, headings, URL, alt text, and body.
The analysis runs in your browser. There is no account, no trial clock, and the checks themselves are never locked. If you want help writing a better title or meta description, Optia can draft one with AI. Free users get 25 of those a month.
Install Optia from the Chrome Web Store
If you would rather do it by hand, nothing on this page requires the extension. It just makes the second, third, and thirtieth page faster.
What you can skip
Automated tools flag plenty that does not matter at your size. Keyword density is not a real target. Meta keywords have been ignored for years. Exact word counts are not a ranking factor. A page with a couple of missing alt tags will not lose you a customer, though fixing them is the right thing to do for visitors using screen readers.
Do not let a tool's red warnings set your priorities. The order above is the order that matters.
Where this fits
On-page SEO is one piece. For a local business, your Google Business Profile often does more work than any single page, and the technical basics have to be in place before page-level fixes pay off. I wrote up the full local check as a do-it-yourself Baltimore SEO audit. Run that first if you have never looked at your profile.
If you work through this checklist and the list of fixes is short, do them yourself. You do not need me for that. If it is long, or the real problem is that the site was never built to convert the visitors it already gets, that is a different conversation. You can read how I approach SEO for Baltimore small businesses, and my website pricing is published in full so you know the numbers before you call.
Your digital website sherpa: practical web tips for small businesses, straight to your inbox
Join the Digital Website Sherpa newsletter. No spam, just practical, actionable advice to help you grow your business online. Unsubscribe anytime.
Paul Mulligan
Freelance Web Developer
Paul Mulligan is a freelance web developer based in Baltimore, MD with 10+ years of experience building WordPress and Webflow sites for small businesses. He focuses on clean design, fast performance, and real results.
Support My Open Source Work
I build free, open-source developer tools like Flavian and Aurelius. If you find my work helpful, consider supporting me on Patreon.
Support on PatreonReady to Transform Your Business's Website?
Let's discuss how I can create a website that attracts and converts more customers.
Get a Free Consultation