# Auditing by template, not by page

> Most audit findings on a large site come from a few templates. How netweft groups URLs into shapes, measures performance once per shape, and reads duplicates.

Source: https://netweft.com/blog/auditing-by-template
Updated: 2026-10-17

**A large site is a few templates rendered many times, so a finding on forty product pages is usually one fault in one template. netweft groups URLs into shapes by replacing ids, dates and long slugs, measures performance once per shape, up to ten pages, and lists duplicates with the pages sharing them.**

A 500-page crawl of an online shop is not 500 pages. It is a home page, a few
category pages, a few hundred product pages and a blog, each rendered from its
own template. When the audit finds forty duplicate titles, it has usually
found one template that does not put the product name in the title.

Reading an audit by template turns forty fixes into one.

## How a URL becomes a shape

netweft decides which pages share a template from their paths alone. Each
segment of a path is replaced if it looks like it varies per record:

- a number becomes `:id`, so `/orders/1042` is `/orders/:id`
- a UUID becomes `:uuid`
- a date like `2026-10-08` becomes `:date`
- a segment of three or more hyphenated words becomes `:slug`, so
  `/blog/what-a-crawl-costs` is `/blog/:slug`

Two-word segments stay as they are. `/my-account` and `/gift-cards` are
usually fixed routes rather than records, and collapsing them would fold a
site's whole navigation into one group.

## Performance once per shape

A [performance check](/glossary/core-web-vitals) is 50 credits a page,
50 times the cost of crawling it, and it is opt-in per audit. When it is on,
netweft does not measure every page. It measures the start URL, then one page
per shape it has not measured yet, up to 10 pages. Only pages that loaded
are eligible, because measuring a 404 reports the speed of the error page.

So the most a performance pass can add to an audit is 500 credits, and a site
with three shapes settles at 150. Measuring forty product pages would buy forty
copies of one answer; [what a 500-page crawl costs](/blog/what-a-crawl-costs)
has the arithmetic.

## Reading duplicates

Duplicate titles, duplicate meta descriptions and duplicate content each list,
for every affected page, the other pages that share the value, up to twenty of
them, with the full count beside it. Read that list for the pattern:

- **Every page in one shape shares the value.** The template writes a fixed
  string. Put the distinguishing attribute, the product or article name, into
  the template.
- **Pairs of pages share it.** Usually the same content at two URLs: with and
  without a parameter, an old path and a new one. A
  [canonical](/glossary/canonical-url) or a redirect fixes it.
- **Pages from different shapes share it.** Usually a fallback value: the
  site's default description, printed wherever a page has none of its own.

## Thin content and orphans by shape

The same reading helps with the findings that are not duplicates. Thin content
across one shape is a template with too little on it, often a listing page
with no introduction. Orphan pages across one shape are a section that the
navigation forgot, which [internal linking](/glossary/internal-linking) from
one hub page fixes for all of them.

## The routine

1. Sort the findings by severity, as in
   [reading an audit by severity](/blog/reading-an-audit-by-severity).
2. Within each severity, group the affected URLs by shape.
3. Fix the template, not the page.
4. Re-run the audit. A Pro audit is up to
   1,000 pages at 1 credit a page, so
   checking the fix costs less than looking for it did.
