Unadhi Guides

Page title and meta description check sheet for small business websites: every page, missing, copied and too-long titles in one Google Sheet

Updated 24 Oct 2026 · Disclosure: the website crawler linked below is an Unadhi product on the Apify Store. This guide is free, and the same sheet works with a free crawl export from other tools. Current Apify pricing is only on the Store page. This page has no affiliate links and nobody paid to be mentioned.

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)

PageTitle lengthDescription lengthWordsIssuesFix
/120420No description; Short titleWrite both
/services/bookkeeping48142610
/services/payroll48142590Title used elsewhere; Description used elsewhereCopied from bookkeeping page
/blog/year-end-checklist782051,240Long title; Long descriptionShorten
/contact7035No description; Short title; Thin pageAdd 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 }

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

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.

ColHeaderFormula (row 2)
APage=IFERROR(INDEX(crawl!$A2:$ZZ2, MATCH("url", crawl!$A$1:$ZZ$1, 0)), "")
BTitlesame pattern with "title"
CTitle length=IF(A2="", "", LEN(TRIM(B2)))
DDescriptionsame pattern as A with "description"
EDescription length=IF(A2="", "", LEN(TRIM(D2)))
FWordssame pattern as A with "wordCount"
GCanonicalsame pattern as A with "canonicalUrl"
HTitle used elsewhere=IF(OR(A2="", TRIM(B2)=""), "", COUNTIF($B$2:$B, B2)>1)
IDescription used elsewhere=IF(OR(A2="", TRIM(D2)=""), "", COUNTIF($D$2:$D, D2)>1)
JIssues=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", "")))
KFixyou type: new title / new description / merge / noindex / leave

Notes on the formulas:

Step 4: fix in this order

  1. 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.
  2. 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.
  3. 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.
  4. After the fixes, run the crawler again, re-import the crawl tab with "Replace current sheet", and check that the Issues column has emptied.

Check before you act on it

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

Related

← All guides

Unadhi Guides are free, independent explainers. We correct errors as soon as we find them: write to mininglife7@gmail.com.