Page title and meta description check sheet for small business websites: every page, missing, copied and too-long titles in one Google Sheet
What you get: a page title and meta description check sheet in one Google Sheet, with one row per page of your website: the page address, its title and title length, its meta description and length, the word count of the main text, the canonical address, whether the title or description is used on another page too, and an Issues column that lists what to fix (for example No description; Title used elsewhere). Sort by Issues and you have a to-do list for the pages people see in search results, before the Black Friday and Christmas traffic arrives. Formulas are below. The example rows are made up.
The finished sheet
pages tab (example rows are made up; settings: title 60, description 160, thin page 150 words)
| Page | Title length | Description length | Words | Issues | Fix |
|---|---|---|---|---|---|
| / | 12 | 0 | 420 | No description; Short title | Write both |
| /services/bookkeeping | 48 | 142 | 610 | ||
| /services/payroll | 48 | 142 | 590 | Title used elsewhere; Description used elsewhere | Copied from bookkeeping page |
| /blog/year-end-checklist | 78 | 205 | 1,240 | Long title; Long description | Shorten |
| /contact | 7 | 0 | 35 | No description; Short title; Thin page | Add opening hours and area served |
The payroll row is the most common problem on small business sites: a page copied from another page keeps the old title and description, so both pages look the same in search results.
Who this is for
Owners of small business websites (shops, clinics, accountants, trades, restaurants) and the freelancers and small web agencies who look after them. Search engines often show a page's title and meta description in the results, so a missing, copied or cut-off one costs clicks. Checking them page by page in a browser is slow; this sheet shows every page at once.
Step 1: crawl the site into a tab named crawl
With the website crawler
Open the Website Content Crawler (Half Price) on the Apify Store and use this input with your site's address:
{ "startUrls": [{ "url": "https://your-site.example/" }],
"maxPagesPerSite": 500, "maxDepth": 5, "useSitemap": true,
"minWords": 0, "outputMarkdown": false }
maxPagesPerSite: set it above the number of pages on the site (the default is 50).minWords: set it to0. The default of 20 skips near-empty pages, and those are exactly the pages you want to see here.outputMarkdown: this sheet does not need the page text, so switch it off to keep the file small. The word count is still delivered.useSitemapadds the pages listed in your sitemap (found through robots.txt), so pages with no internal links are included too.
The crawler follows robots.txt. Run it on your own site or a client's site that you look after.
In the run, export the dataset as CSV. In your Google Sheet use File → Import → Upload, "Insert new sheet", and name the tab crawl. Do not rename the headers.
What the columns contain
url: the page address after any redirect.title: the page's<title>. If the page has none, the crawler uses itsog:title, so a page that shows a title here can still lack a real title tag; check those by viewing the page source.description: the meta description, or theog:descriptionif there is none (same caution).wordCount: words in the page's main content, after menus, footers and cookie banners are removed.canonicalUrl: the address in the page's canonical tag, empty if there is none.language,headings/0,headings/1and so on: the page language and its main headings (H1 to H3), useful for a second pass.- A page whose main text exactly matches a page already delivered is skipped as a duplicate, so exact copies do not appear as rows.
Free routes
Google Search Console (free, for a site you own) shows which pages are indexed and the searches they appear for, but not a title and description list. Free desktop crawlers such as the free version of Screaming Frog SEO Spider (up to 500 addresses) export titles and descriptions too; paste their columns into a crawl tab with the same header names and the formulas below work unchanged.
Step 2: the settings tab
Add a tab named settings. Type 60 in B1 (longest title), 160 in B2 (longest description), 150 in B3 (fewer words than this counts as a thin page) and 20 in B4 (shortest title). These are our working numbers, not Google rules: Google sets no fixed length and cuts titles and snippets to fit the screen. Change them to suit your site.
Step 3: build the pages tab
Add a tab named pages. Row 1 holds the headers below; row 2 holds the formulas, which you copy down one row per row of crawl.
| Col | Header | Formula (row 2) |
|---|---|---|
| A | Page | =IFERROR(INDEX(crawl!$A2:$ZZ2, MATCH("url", crawl!$A$1:$ZZ$1, 0)), "") |
| B | Title | same pattern with "title" |
| C | Title length | =IF(A2="", "", LEN(TRIM(B2))) |
| D | Description | same pattern as A with "description" |
| E | Description length | =IF(A2="", "", LEN(TRIM(D2))) |
| F | Words | same pattern as A with "wordCount" |
| G | Canonical | same pattern as A with "canonicalUrl" |
| H | Title used elsewhere | =IF(OR(A2="", TRIM(B2)=""), "", COUNTIF($B$2:$B, B2)>1) |
| I | Description used elsewhere | =IF(OR(A2="", TRIM(D2)=""), "", COUNTIF($D$2:$D, D2)>1) |
| J | Issues | =IF(A2="", "", TEXTJOIN("; ", TRUE, IF(C2=0, "No title", ""), IF(AND(C2>0, C2<settings!$B$4), "Short title", ""), IF(C2>settings!$B$1, "Long title", ""), IF(E2=0, "No description", ""), IF(E2>settings!$B$2, "Long description", ""), IF(H2=TRUE, "Title used elsewhere", ""), IF(I2=TRUE, "Description used elsewhere", ""), IF(N(F2)<settings!$B$3, "Thin page", ""), IF(AND(G2<>"", G2<>A2), "Canonical points elsewhere", ""))) |
| K | Fix | you type: new title / new description / merge / noindex / leave |
Notes on the formulas:
- COUNTIF ignores upper and lower case, so
Payroll servicesandpayroll servicescount as the same title. COUNTIF also treats*and?as wildcards; if a title contains them, check column H by eye. - Canonical points elsewhere is not always a mistake: a filtered shop page or a print version should point to the main page. It is a mistake when a normal page points to the home page or to another page by accident.
- Thin page is a prompt to look, not a verdict. A contact page can be short and fine; a service page with 40 words usually needs more about what you do, where and for whom.
Step 4: fix in this order
- No title and Title used elsewhere on pages that sell something (services, products, booking). Write a title that says what the page offers and, for a local business, where.
- No description and Description used elsewhere on the same pages. Google may still write its own snippet from the page text, but a clear description gives it a good option.
- Long title on the pages with the most visits (Search Console shows which). Put the words that matter first, so a cut-off title still makes sense.
- After the fixes, run the crawler again, re-import the
crawltab with "Replace current sheet", and check that the Issues column has emptied.
Check before you act on it
- The number of rows is close to the number of pages you expect. If it is much lower, raise
maxPagesPerSiteormaxDepth, or check thatminWordswas0. - For a page whose title looks wrong, view the page source: the value may have come from
og:titlerather than the title tag. - The length numbers in
settingsare a rough guide. What matters is that each title and description is unique, accurate and says what the page offers.
Partner programme opening soon
Partner programme opening soon: join the free waitlist. Planned terms are 50% of each referred sale (75% once you have 5+ paying customers), single level, paid through Gumroad only from revenue received.
Sources
- Website crawler inputs and outputs (
startUrls,maxPagesPerSitedefault 50,maxDepth,useSitemap,minWordsdefault 20,outputMarkdown; per-pageurl,titlewithog:titlefallback,descriptionwithog:descriptionfallback,language,canonicalUrl,headings,wordCount; exact-duplicate pages skipped; robots.txt followed): Apify Store listing. - Title links and how Google may rewrite them: Google Search Central, Influencing title links in Google Search.
- Meta descriptions and snippets: Google Search Central, How to write meta descriptions.
- Canonical tags: Google Search Central, How to specify a canonical.
- Google Sheets COUNTIF, TEXTJOIN, LEN and INDEX/MATCH functions: Google Docs Editors Help.
Related
- Web agency client website contact check sheet
- WooCommerce to Shopify 301 redirect map sheet
- Google Shopping product listing check sheet
Unadhi Guides are free, independent explainers. We correct errors as soon as we find them: write to mininglife7@gmail.com.