Skip to content
WP Visibility

Everyday SEO

Run the Site Audit and Read Its Checks

Run wp visibility audit for the site and post-audit for one post. Each check reports pass, warn or fail with a plain reason; the results are a checklist, not a ranking score.

Updated September 27, 2026

Docs

The audit is a set of read-only checks you run from WP-CLI, over REST, or through a connected assistant. wp visibility audit checks five site settings and prints four counts; wp visibility post-audit <id> checks one post. Each finding is pass, warn or fail with a sentence saying why. Nothing is changed by running it.

Run it

wp visibility audit
wp visibility post-audit 123
wp visibility audit --format=json

--format accepts table (the default), csv, json, yaml or count. Over REST, GET /wp-json/wpvis/v1/audit/site needs manage_options and GET /wp-json/wpvis/v1/audit/post/<id> needs permission to edit that post. With the Assistant connection module on, an assistant uses the “Audit the site”, “Audit a post” and “Get site SEO health” abilities, the last of which sums the site checks up as good, fair or needs_attention.

There is no audit screen in the settings. The editor’s pre-publish panel and content checks are separate checks run in the browser.

The site checks

Check Fails or warns when What to do
blog_public Fail: Settings → Reading discourages search engines Untick it on a live site. On staging it is correct.
permalink_structure Warn: plain permalinks (?p=123) Choose any structure other than Plain in Settings → Permalinks.
site_represents Warn: no organization name, or person mode with no user Set your site identity.
default_social_image Warn: no default social image Set one.
sitemaps_module Warn: the Sitemaps module is off Turn it on, or accept WordPress’s own sitemap.

The counts that follow are published posts, an estimate of posts missing a hand-written description (posts relying on their excerpt count as missing), posts with their own noindex setting (in any status, and not counting a site-wide rule for a post type), and redirect rules (zero while the Redirects module is off).

The post checks

Check Passes when Otherwise
title 30 to 60 characters Warn with the length; fail if there is no title at all
description 70 to 160 characters Warn with the length; fail if none is set and none can be generated
noindex The post is indexable Warn: the post is set to noindex
canonical No canonical, or one on this site’s host Warn: it points to another host
thin_content 150 words or more Warn with the word count
social_image A social, featured or default image resolves Warn: no image resolves
single_h1 At most one H1 in the content Warn with the count

The title and description are measured as stored, before templates are rendered, so a post relying on its template is measured against the raw post title, and a post with no description is measured against the excerpt the plugin generates from its excerpt or content. The noindex check reads the post’s own setting, not a site-wide rule for its post type.

Read the results with care

The thresholds are editing checks. A 62-character title, a 140-word announcement or a deliberately noindexed page can all be right. Google publishes no ideal title length and says it has no preferred word count (both checked September 27, 2026), so treat a warning as a prompt to look, not an order. Your SEO Plugin Score Is a Checklist explains why.

A canonical on another host can be deliberate, for example on a post republished from another site or a headless site where another address is the public one.

Turn missing descriptions into proposals

With the Autopilot module on, WP Visibility → Review queue has a Run audit button, and the empty queue offers Run an audit now. It looks at up to 50 of the newest published posts with no hand-written description and queues a proposal for each, drafted from the post’s own text, for you to approve or reject. A post that already has an open proposal, or has no text to draft from, is skipped. It can run once a minute. The Weekly audit toggle in the Autopilot section, off by default, does the same once a week. Nothing is applied until you approve it, and the other checks never create proposals.

Behavior checked against WP Visibility 2.10.3.