Free tool · No sign-up
SEO checklist: an on-page cheat sheet for any page
This SEO checklist covers everything to check on a service or product page before it goes live. Each table row says what good looks like and how to check it with free tools. Work top to bottom, one page at a time.
Section 1 of 9 · 4 checks
Search intent and keyword
Decide what the page is for before touching any tags. Every other row depends on this one.
| Number | Check | What good looks like | How to check | Done |
|---|---|---|---|---|
| 1.1 | 1.1One primary keyword | The page targets one main search phrase, plus a few close variations. | Write the phrase at the top of your notes. If you can't pick one, the page is trying to do two jobs. | |
| 1.2 | 1.2Intent match | The page type matches what Google already ranks: service page, product page, guide or list. | Search the phrase in a private window. Note what type of page each of the top 5 results is. Ignore which brand it belongs to. | |
| 1.3 | 1.3No competing page | No other page on your site targets the same phrase. | Search site:yourdomain.com "keyword" and check which of your pages appear. | |
| 1.4 | 1.4Answer early | The first 100 words say what the page offers and who it's for. | Read only the first paragraph. Could a visitor stop there and know they're in the right place? |
Section 2 of 9 · 5 checks
Title tag and meta description
These two lines are your listing on Google. They decide whether someone clicks.
| Number | Check | What good looks like | How to check | Done |
|---|---|---|---|---|
| 2.1 | 2.1Title length | About 50–60 characters, so it isn't cut off in results. | View the page source (Ctrl+U) and find the <title> tag. Count the characters. | |
| 2.2 | 2.2Keyword near the start | The primary keyword appears early in the title, written naturally. | Read the title aloud. It should sound like a heading, not a list of keywords. | |
| 2.3 | 2.3Brand at the end | Title ends with your brand, e.g. "| YourBrand". | Check the end of the <title> tag. | |
| 2.4 | 2.4Unique per page | No two pages share a title or a description. | In Search Console, compare the titles Google shows for your top pages. | |
| 2.5 | 2.5Description length | Roughly 140–160 characters, with the keyword, a clear benefit and a call to action. | Find <meta name="description"> in the source and count. |
Section 3 of 9 · 5 checks
Headings and content
Headings are the page's outline. Visitors scan them first, and so do search engines.
| Number | Check | What good looks like | How to check | Done |
|---|---|---|---|---|
| 3.1 | 3.1One H1 | Exactly one H1, containing the primary keyword in natural wording. | Search the source for <h1. There should be one match. | |
| 3.2 | 3.2H2s cover the questions | Each H2 names a topic the searcher cares about: what's included, cost, process, FAQs. | List your H2s. Compare them with the questions under "People also ask" for your keyword. | |
| 3.3 | 3.3Keyword in one H2 | The primary keyword or a close variation appears in at least one H2. | Scan your H2 list. | |
| 3.4 | 3.4Specific, not padded | Concrete details: what you deliver, for whom, how long it takes. No filler intros. | Delete any sentence that would fit on a competitor's page unchanged. | |
| 3.5 | 3.5Readable | Short paragraphs, plain words, lists and tables where they help. | Read it on your phone. If you scroll past a wall of text, break it up. |
Want this done for every page on your site? See our on-page SEO service.
Section 4 of 9 · 3 checks
URL
Short, readable URLs are easier to share and harder to break later.
| Number | Check | What good looks like | How to check | Done |
|---|---|---|---|---|
| 4.1 | 4.1Short and descriptive | Lowercase words separated by hyphens, e.g. /seo-services/local/. | Look at the address bar. Could someone guess the page topic from it? | |
| 4.2 | 4.2Keyword in the slug | The slug contains the main topic word, not an ID number or date. | Check the last part of the URL. | |
| 4.3 | 4.3One version only | Each page loads at one address. Other versions (http, www, missing slash) redirect to it. | Type the variations into your browser and see where you land. |
Section 5 of 9 · 4 checks
Internal links
Links between your own pages tell Google which pages matter and help visitors take the next step.
| Number | Check | What good looks like | How to check | Done |
|---|---|---|---|---|
| 5.1 | 5.1At least 3 contextual links | Links inside the text to the parent page, a related page and a next step such as pricing or contact. | Count the links in the body copy, not the menu or footer. | |
| 5.2 | 5.2Descriptive anchor text | Link text describes the target: "local SEO services", not "click here". | Read only the link text. Does each one make sense on its own? | |
| 5.3 | 5.3Linked from somewhere | At least one other page on your site links to this page. | Search Console: Links report, then Internal links, and look for the page. | |
| 5.4 | 5.4No broken links | Every link loads a live page, with no 404s and no redirect chains. | Click each body link once. Fix or remove any that fail. |
Section 6 of 9 · 4 checks
Images
Images make a page feel real. Heavy or unlabeled images slow it down and help nobody.
| Number | Check | What good looks like | How to check | Done |
|---|---|---|---|---|
| 6.1 | 6.1Descriptive alt text | Alt text says what is in the image, in plain words. The keyword appears once if it fits. | Right-click the image, choose Inspect, and read the alt attribute. | |
| 6.2 | 6.2Right size and format | Images are no wider than they display, in WebP or AVIF where possible. | In browser dev tools, open the Network tab, filter to Img and check file sizes. | |
| 6.3 | 6.3Lazy loading below the fold | Only the top image loads immediately. The rest load as the visitor scrolls. | Look for loading="lazy" on images further down the page. | |
| 6.4 | 6.4Width and height set | Each image has width and height so the layout doesn't jump while loading. | Inspect the <img> tag for width and height attributes. |
Section 7 of 9 · 4 checks
Structured data
Schema markup labels your content for search engines. It only helps when it describes what's really on the page.
| Number | Check | What good looks like | How to check | Done |
|---|---|---|---|---|
| 7.1 | 7.1Right type for the page | Service pages use Service, articles use BlogPosting or Article, and all pages use BreadcrumbList. | Paste the URL into Google's Rich Results Test or the Schema Markup Validator. | |
| 7.2 | 7.2FAQ markup matches the page | FAQPage markup only for questions and answers visible on the page. | Compare the questions in the test result with the questions on the page. | |
| 7.3 | 7.3No fake reviews | No star ratings in markup unless they come from real, verifiable reviews. | Search the source for AggregateRating. Remove it if you can't back it up. | |
| 7.4 | 7.4No errors | The test shows no errors. Warnings are worth reading but are often optional. | Rich Results Test, then review each item listed. |
Section 8 of 9 · 5 checks
Technical basics for this page
You don't need a full technical audit to check one page. These five rows catch the common blockers.
| Number | Check | What good looks like | How to check | Done |
|---|---|---|---|---|
| 8.1 | 8.1Indexable | No noindex tag, and the page isn't blocked in robots.txt. | Search Console: URL Inspection. It should say the URL is on Google, or can be indexed. | |
| 8.2 | 8.2Canonical tag | The canonical tag points to the page's own preferred URL. | Find <link rel="canonical"> in the source and check the address. | |
| 8.3 | 8.3Mobile-friendly | Text is readable and buttons are easy to tap at phone width without zooming. | Open the page on your phone, or use device mode in browser dev tools. | |
| 8.4 | 8.4Loads fast | Largest Contentful Paint under 2.5 seconds and no layout jumps. | Run PageSpeed Insights and read the field data first, then the lab data. | |
| 8.5 | 8.5In the sitemap | The page is listed in your XML sitemap, and the sitemap is submitted. | Open yourdomain.com/sitemap.xml (or sitemap-index.xml) and search for the URL. |
Need more than one page checked? Site-wide crawling, redirects and speed work belong to technical SEO services.
Section 9 of 9 · 4 checks
Local signals
For businesses that serve a city or area. Skip this table if you sell only online.
| Number | Check | What good looks like | How to check | Done |
|---|---|---|---|---|
| 9.1 | 9.1Consistent name, address, phone | Your business name, address and phone number match your Google Business Profile exactly. | Compare your footer or contact page with your profile, character by character. | |
| 9.2 | 9.2Area named in the content | The city or area you serve appears naturally in the copy and in at least one heading. | Search the page text for the city name. | |
| 9.3 | 9.3Profile links to the right page | Your Google Business Profile website link points to the most relevant page. | Open your profile and click the website link. | |
| 9.4 | 9.4LocalBusiness markup | The contact or home page has LocalBusiness schema matching the details on the page. | Rich Results Test or Schema Markup Validator on that page. |
Mistakes that undo the checklist
A page can pass every row once and still slip later. These are the usual reasons.
For the bigger picture beyond single pages, see our SEO services, or browse the other free SEO tools.
- Writing the title after the page is finished
- Decide the keyword and title first. The rest of the page follows from them.
- Copying a competitor's headings
- Use their pages only to see which topics are covered, then write your own.
- Two pages chasing one keyword
- Merge them, or give each page a clearly different target.
- Huge hero images
- Resize to the display width and compress before uploading.
- Schema that describes things not on the page
- Mark up only what visitors can see.
- Never re-checking
- Run the checklist again whenever the page changes, and at least once or twice a year.
Questions about this SEO checklist
How often should I run this checklist?
Run it on every new page before it goes live, and again whenever you change a page's content or template. For important pages, a re-check once or twice a year catches anything that has drifted.
Does every page need schema?
Every page benefits from BreadcrumbList. Beyond that, add a type only when it fits: Service for service pages, BlogPosting for articles, FAQPage only when the page shows questions and answers.
How long should a title tag be?
Aim for about 50–60 characters. Google cuts titles by pixel width, not character count, so a title full of wide letters can be cut sooner. Put the important words first.
What's the difference between on-page and technical SEO?
On-page SEO is what people and Google read on the page: titles, headings, copy, links and images. Technical SEO is how the site works underneath: crawling, indexing, speed, redirects and structured data. This sheet covers on-page checks plus the technical basics for one page.
Can I print this checklist?
Yes. Use your browser's print option (Ctrl+P or Cmd+P) and print or save it as a PDF.
Want help with these checks?
Tell us about your site and what you want to be found for. We'll reply with a quote for the SEO work.