Skip to content
Contractor Website Score

The checklist

Three steps, then the actual point values

Heuristic estimate from the public HTML. Not a Lighthouse run, not a measured load time, and not a ranking or revenue prediction. The numbers on this page are the ones in the code.

  1. 01

    Paste the URL you already give to customers

    The homepage, a trade page, or a city page. We add https if you leave it off, and we refuse local addresses, private networks, and odd ports.

  2. 02

    We fetch the public HTML

    A server route downloads the page, follows a few ordinary redirects, and stops at about 1.5 MB. We do not run JavaScript, log into anything, or pretend to be Lighthouse. If the site returns an error or a file that is not a page, you get that fact instead of a score.

  3. 03

    You get a score and the reasons

    The score starts at 100. Each failed check deducts the points below. Passed checks stay on the report so you can see they ran. Then you can book a mockup or email the score to Henry.

Score a site

What costs points

Website builder

Wix, Squarespace, GoDaddy Website Builder, Weebly, and WordPress.com leave fingerprints in the HTML. Self-hosted WordPress does not cost points.

  • Wix: −22
  • Squarespace: −20
  • GoDaddy Website Builder: −20
  • Weebly: −20
  • WordPress.com: −16
  • “Coming soon” or “under construction” with no builder: −24
  • Unfinished language on top of a builder: extra −8, capped at −30
  • Self-hosted WordPress: 0. We say so when we see it.

Mobile viewport

We look for a viewport meta tag set to the device width. Without it, phones often get a desktop page.

  • No viewport meta tag: −16
  • Viewport present, but not width=device-width: −8

Phone and calls to action

Tap-to-call links, a visible phone number, a form, and phrases like “free estimate” or “call now.”

  • No phone, no form, no action phrase: −14
  • Form or action, and no phone number: −10
  • A phone number in the text, not a tel: link, and no clear action: −10
  • A visible number plus a form or action phrase, but no tel: link: −8
  • A tel: link with no estimate, schedule, or call-now phrase: −6
  • A tel: link with only “contact us” or a form: −4

Contact email

A Gmail, Yahoo, or AOL address (and the same class of free inbox) as the contact email costs points. An address on your own domain does not.

  • Only a free inbox (Gmail, Yahoo, AOL, Hotmail, Outlook.com, iCloud, and the same family): −10
  • A business domain and a free inbox together: −4
  • No email in the visible text or a mailto link: −3

Copyright year

We read years next to a copyright mark. A missing year or a year that is several seasons behind is a signal the page is neglected.

  • Newest copyright year is 3 or more years behind the review year: −10
  • Two years behind: −4
  • No copyright year found: −6
  • Current year or last year: 0

Page copy

We count visible words after removing scripts and styles, and we flag placeholder lines like “lorem ipsum,” “coming soon,” and “welcome to our website.” JavaScript-only copy is invisible to this check.

  • Under 70 visible words: −14
  • Under 150 visible words: −8
  • Placeholder language such as lorem ipsum, “your text here,” or “welcome to our website”: at least −8
  • Thin page plus placeholder language: −16

Title and H1

The browser title and the main heading should say what you do. “Home” and “Welcome” do not.

  • Missing or generic title (“Home”, “Welcome”, “Untitled”): −8
  • Missing or generic H1: −6
  • More than one H1: −2
  • Title longer than 70 characters: −2
  • This check is capped at −12

HTTPS and HTML weight

We record whether the final URL is HTTPS, how large the HTML response is, and how many script tags it contains. That is a weight estimate, not a measured load time.

  • Final URL is HTTP: −6
  • HTML at least 1200 KB, or cut off at the read limit: −8
  • HTML at least 500 KB: −4
  • 35 or more script tags: −6
  • 18 or more script tags: −3
  • This check is capped at −14

Grades

  • 90–100 · A · Strong
  • 80–89 · B · Solid
  • 70–79 · C · Average
  • 55–69 · D · Weak
  • Under 55 · F · Costing you jobs

Grades are labels for the same number. They are not a promise about leads. A POST to /api/score with { "url": "https://example.com" } returns score, grade, findings, and summary.

Modern Websites

Get a free mockup

Modern Websites builds contractor sites for $250/month: live in 7 days, no setup fee, month-to-month. The demo is 20 minutes. No pitch deck.