{"id":172,"date":"2026-07-27T17:51:32","date_gmt":"2026-07-27T12:21:32","guid":{"rendered":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/"},"modified":"2026-07-30T14:51:27","modified_gmt":"2026-07-30T09:21:27","slug":"wordpress-content-audit","status":"publish","type":"post","link":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/","title":{"rendered":"How to Run a WordPress Content Audit (Step by Step)"},"content":{"rendered":"<p>A <strong>content audit<\/strong> is a structured review of everything you&#8217;ve published: what it earns, what it costs you, and what you&#8217;re going to do about it. Not a skim of your archive \u2014 an inventory, joined to real data, with a decision written next to every URL.<\/p>\n<p>Most sites publishing for two or three years are carrying dead weight: posts that ranked once and quietly decayed, three articles that all half-answer the same question, old landing pages nobody has looked at since. None of it is a disaster alone, but together it dilutes your topical focus and spreads your internal links across pages you don&#8217;t care about.<\/p>\n<p>The good news: an audit is one of the few SEO projects where the work is mostly decision-making rather than production. You already wrote the content. Here&#8217;s the process we use, in five steps.<\/p>\n<h2>Why bother? The four problems an audit actually solves<\/h2>\n<h3>Content decay<\/h3>\n<p>Rankings are not permanent. A post that hit position 4 two years ago slides as competitors publish fresher versions and as the query itself shifts. Decay is gradual \u2014 traffic doesn&#8217;t fall off a cliff, it leaks. An audit catches the leak by comparing each URL&#8217;s performance now against a year ago.<\/p>\n<h3>Thin and duplicate content<\/h3>\n<p>Every site has them: the 300-word post written to hit a quota, near-identical announcements, tag archives with one item in them. Individually harmless; collectively they tell search engines a meaningful share of your site is low value.<\/p>\n<h3>Cannibalization and crawl waste<\/h3>\n<p>Cannibalization is two of your pages competing for the same query \u2014 the most common finding in a first audit, and the one people most often get wrong, so it gets its own section below. Crawl waste is the quieter cousin: search engines give your site finite attention, and if a large share of your URLs are archives, thin posts and old redirects, the crawler spends its time there instead of on the pages you&#8217;re trying to rank. On a 50-post blog that doesn&#8217;t matter; on a 2,000-URL site it does.<\/p>\n<h2>Step 1: Build the inventory<\/h2>\n<p>You can&#8217;t audit what you haven&#8217;t listed. The goal is one spreadsheet, one row per URL. Three ways to get it, in rough order of effort:<\/p>\n<ul>\n<li><strong>Your XML sitemap.<\/strong> The fastest complete source \u2014 Yoast, Rank Math and WordPress core all publish one at <code>\/sitemap_index.xml<\/code> or <code>\/wp-sitemap.xml<\/code>. Copy the sub-sitemap URLs into a sheet. Captures posts, pages, and custom post types you&#8217;d forgotten about.<\/li>\n<li><strong>The WordPress admin list.<\/strong> Posts \u2192 All Posts, items per page set to 999 in Screen Options. Also shows the drafts and private posts your sitemap won&#8217;t.<\/li>\n<li><strong>A crawler.<\/strong> Screaming Frog&#8217;s free tier handles 500 URLs, and adds what the other two can&#8217;t see \u2014 word count, response codes, title tags, and crucially the internal link count per URL.<\/li>\n<\/ul>\n<p>Columns to start with: URL, title, post type, category, publish date, last modified date, word count. Add the data in step 2.<\/p>\n<p>While you&#8217;re here, check the URLs actually resolve \u2014 old posts accumulate broken links and occasionally break themselves after a slug change. Our guide to <a href=\"https:\/\/jnkplugins.com\/blog\/find-fix-broken-links-wordpress\/\">finding and fixing broken links in WordPress<\/a> covers that, and it&#8217;s cheaper during an audit than later.<\/p>\n<h2>Step 2: Pull the data<\/h2>\n<p>An audit without data is opinion. Three sources, all free.<\/p>\n<h3>Google Search Console<\/h3>\n<p>The most important one. Performance \u2192 Search results, date range set to the last 12 months, all four metric checkboxes enabled (clicks, impressions, CTR, average position), switch to the <strong>Pages<\/strong> tab, export. Then do it again for the <em>previous<\/em> 12 months and put both in your sheet side by side. The year-over-year delta is where decay becomes visible: a post that went from 400 clicks to 120 tells you something a single-period export never would.<\/p>\n<p>Also export the <strong>Queries<\/strong> tab \u2014 you&#8217;ll need it for the cannibalization work.<\/p>\n<h3>GA4<\/h3>\n<p>Reports \u2192 Engagement \u2192 Pages and screens, for sessions, engagement rate and average engagement time. GA4 tells you what happens <em>after<\/em> the click, which GSC can&#8217;t: a page with decent traffic and a 12-second engagement time is a different problem from one with no traffic at all. Be sceptical on short-answer content, though \u2014 a post that answers a question in two sentences <em>should<\/em> have a short dwell time.<\/p>\n<h3>Dates and internal links<\/h3>\n<p>Publish and last-modified dates come from your inventory; inbound internal link count comes from a crawler or an internal-linking plugin. That last column matters more than people expect: a page with strong impressions, poor position and zero internal links usually doesn&#8217;t need a rewrite. It needs links.<\/p>\n<h2>Step 3: Score every URL into one of four buckets<\/h2>\n<p>Now the actual audit. Assign each URL exactly one of <strong>KEEP<\/strong>, <strong>UPDATE<\/strong>, <strong>CONSOLIDATE<\/strong> or <strong>REMOVE<\/strong>. One decision per row, no &#8220;maybe&#8221; column \u2014 a maybe column is how audits die.<\/p>\n<table>\n<tr>\n<th>Bucket<\/th>\n<th>Criteria<\/th>\n<th>Typical signals<\/th>\n<\/tr>\n<tr>\n<td><strong>KEEP<\/strong><\/td>\n<td>Performing at or near its potential; no obvious defect<\/td>\n<td>Stable or growing clicks YoY, average position 1\u20135, no competing page on the same query<\/td>\n<\/tr>\n<tr>\n<td><strong>UPDATE<\/strong><\/td>\n<td>Real demand exists but the page isn&#8217;t capturing it<\/td>\n<td>High impressions, low CTR; position 6\u201320; clicks down &gt;30% YoY; last modified over 18 months ago; factually stale or thin next to what outranks it<\/td>\n<\/tr>\n<tr>\n<td><strong>CONSOLIDATE<\/strong><\/td>\n<td>Overlaps another page on your own site<\/td>\n<td>Two or more URLs appearing for the same query in GSC; near-duplicate titles; both under-performing where one strong page would rank<\/td>\n<\/tr>\n<tr>\n<td><strong>REMOVE<\/strong> or redirect<\/td>\n<td>No demand, no strategic role, no realistic path to either<\/td>\n<td>Near-zero impressions over 12 months; outdated announcements or event pages; nothing worth merging; no backlinks or conversions<\/td>\n<\/tr>\n<\/table>\n<p>Two honest caveats. First, traffic is not the only value: a page can have twelve visits a month and still be your best converting page, or hold a few good backlinks. Check backlinks and conversions before anything goes in REMOVE. Second, anything published in the last four to six months hasn&#8217;t had a fair run \u2014 mark it &#8220;too new to judge&#8221; and leave it alone.<\/p>\n<h2>Keyword cannibalization: how to actually spot it<\/h2>\n<p>Two of your own pages compete for one query, Google splits its confidence between them, and neither ranks as well as a single consolidated page would. The reliable way to find it in Search Console:<\/p>\n<ol>\n<li>Performance \u2192 Search results \u2192 <strong>Queries<\/strong> tab.<\/li>\n<li>Click a query you care about.<\/li>\n<li>With that query filter still applied, switch to the <strong>Pages<\/strong> tab.<\/li>\n<li>If more than one of your URLs shows impressions for that query, you have a candidate.<\/li>\n<\/ol>\n<p>The tell-tale pattern is a query where the ranking URL flips between two pages over time: compare the first half of the year to the second, and if page A ranked in spring and page B in autumn, Google isn&#8217;t confident which one you meant.<\/p>\n<p>Not every overlap is a problem, though, and this is where people over-correct. It&#8217;s fine if one page is clearly dominant and the other picks up incidental impressions at position 40, and fine if the two serve genuinely different intent \u2014 a &#8220;what is X&#8221; explainer and an &#8220;X pricing&#8221; comparison will both surface for &#8220;X&#8221;, correctly.<\/p>\n<p>When it <em>is<\/em> a real conflict, you have two fixes:<\/p>\n<ul>\n<li><strong>Consolidate.<\/strong> Pick the stronger URL (more backlinks, better historic performance), merge the unique value from the weaker page into it, and 301 the loser to the winner. Right when both pages genuinely answer the same question.<\/li>\n<li><strong>Differentiate.<\/strong> Keep both, but rewrite titles, headings and opening paragraphs so each targets a distinctly different intent, and link them to each other. Right when the pages <em>should<\/em> be different but drifted into each other.<\/li>\n<\/ul>\n<p>Deleting one without a redirect is almost never right \u2014 you throw away whatever authority it accumulated.<\/p>\n<h2>Step 4: Work the buckets<\/h2>\n<h3>UPDATE \u2014 refresh and republish<\/h3>\n<p>This is where most of your return comes from, so do it first. A refresh is not a light edit; it should meaningfully change the page:<\/p>\n<ul>\n<li>Re-check the query in GSC \u2014 intent shifts, and the page may no longer match what people are asking.<\/li>\n<li>Fix anything factually out of date: versions, prices, screenshots, deprecated features.<\/li>\n<li>Fill the gaps \u2014 what do the top three results cover that you don&#8217;t?<\/li>\n<li>Rewrite the title and meta description if impressions are high but CTR is low; that combination is a snippet problem, not a content problem. Our <a href=\"https:\/\/jnkplugins.com\/blog\/wordpress-on-page-seo-checklist\/\">on-page SEO checklist<\/a> covers what to revisit.<\/li>\n<li>Update the modified date \u2014 don&#8217;t fake it, but when you&#8217;ve done real work let the date reflect it.<\/li>\n<\/ul>\n<h3>CONSOLIDATE \u2014 merge and 301<\/h3>\n<p>Move the unique sections from the weaker page into the stronger one, then 301 the weaker URL to the stronger. Afterwards, find every internal link pointing at the old URL and repoint it directly \u2014 redirects work, but chains of them leak a little on every hop.<\/p>\n<h3>REMOVE \u2014 prune deliberately<\/h3>\n<p>If a removed page has a close topical relative, 301 it there. If it has no relevant successor, return a 410 (Gone) rather than redirecting to the homepage \u2014 irrelevant redirects get treated as soft 404s anyway. Update your sitemap, and prune in batches: if site-wide traffic dips, you removed something pulling more weight than the data suggested.<\/p>\n<h3>KEEP \u2014 but strengthen the internal links<\/h3>\n<p>After a consolidation round your link graph points at URLs that no longer exist or no longer matter. Repoint links that now go through redirects, then add links to the KEEP and UPDATE pages that don&#8217;t have enough \u2014 especially pages with high impressions sitting at position 8\u201320, where a handful of relevant internal links can push them onto page one far more cheaply than a rewrite. Anything with zero inbound links is worse off still; see <a href=\"https:\/\/jnkplugins.com\/blog\/find-orphaned-pages-wordpress\/\">how to find orphaned pages in WordPress<\/a> for that case.<\/p>\n<p>Doing this by hand across a few hundred posts is slow, so an internal-linking tool that maps your link graph helps: it can list orphans and suggest where to link to the pages you kept. Disclosure: <a href=\"https:\/\/jnkplugins.com\/jnk-linkweave\/\">JnK Linkweave<\/a> is our own plugin and free on WordPress.org, though any tool reporting inbound link counts per URL will do.<\/p>\n<h2>Step 5: Make it a cadence, not an event<\/h2>\n<p>A one-off audit fixes a backlog; it doesn&#8217;t stop the backlog re-forming. Put it on a schedule instead:<\/p>\n<ul>\n<li><strong>Monthly, 20 minutes.<\/strong> Sort GSC pages by clicks lost year over year and look at the top five decliners. Catching decay early is far less work than catching it late.<\/li>\n<li><strong>Quarterly, half a day.<\/strong> Cannibalization check on your ten most valuable queries, refresh the two or three highest-impression lowest-CTR pages, check for new orphans.<\/li>\n<li><strong>Annually, one to two days.<\/strong> The full process above \u2014 complete inventory, full data pull, every URL re-bucketed.<\/li>\n<\/ul>\n<p>One habit prevents most of the mess: before publishing anything new, search your own site for the target query. If something already covers it, improve that post instead of writing a competitor to it.<\/p>\n<h2>Related reading<\/h2>\n<ul>\n<li><a href=\"https:\/\/jnkplugins.com\/blog\/export-wordpress-posts-to-csv\/\">Exporting WordPress posts to CSV<\/a> \u2014 get your full content inventory into a spreadsheet first<\/li>\n<li><a href=\"https:\/\/jnkplugins.com\/blog\/wordpress-plugin-conflicts-debugging\/\">Debugging WordPress plugin conflicts<\/a> \u2014 when an audit turns up pages a plugin quietly broke<\/li>\n<\/ul>\n<h2>Frequently asked questions<\/h2>\n<h3>How often should I run a WordPress content audit?<\/h3>\n<p>A full audit once a year is enough for most sites, with a lighter quarterly pass on your highest-value pages and a 20-minute monthly check of your biggest year-over-year decliners in Search Console. Sites publishing several posts a week benefit from a full audit every six months, because they accumulate overlap faster.<\/p>\n<h3>Should I delete old blog posts that get no traffic?<\/h3>\n<p>Only after checking the page has no backlinks, no conversions and nothing worth merging into a stronger post \u2014 and only if it&#8217;s older than about six months, since newer posts haven&#8217;t had a fair chance to rank. When you do remove one, 301 it to the closest relevant page, or return a 410 if no relevant successor exists. Deleting without either discards whatever authority the page held.<\/p>\n<h3>How do I know if two pages are cannibalizing each other?<\/h3>\n<p>In Google Search Console, open Performance \u2192 Search results, click a query in the Queries tab to filter by it, then switch to the Pages tab. If two or more of your URLs show impressions for that query \u2014 especially if the ranking URL flips between them across the year \u2014 you have a conflict. It isn&#8217;t cannibalization if one page is clearly dominant, or if the two serve genuinely different search intent.<\/p>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How often should I run a WordPress content audit?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"A full audit once a year is enough for most sites, with a lighter quarterly pass on your highest-value pages and a 20-minute monthly check of your biggest year-over-year decliners in Search Console. Sites publishing several posts a week benefit from a full audit every six months, because they accumulate overlap faster.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Should I delete old blog posts that get no traffic?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Only after checking the page has no backlinks, no conversions and nothing worth merging into a stronger post \u2014 and only if it's older than about six months, since newer posts haven't had a fair chance to rank. When you do remove one, 301 it to the closest relevant page, or return a 410 if no relevant successor exists. Deleting without either discards whatever authority the page held.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How do I know if two pages are cannibalizing each other?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"In Google Search Console, open Performance \u2192 Search results, click a query in the Queries tab to filter by it, then switch to the Pages tab. If two or more of your URLs show impressions for that query \u2014 especially if the ranking URL flips between them across the year \u2014 you have a conflict. It isn't cannibalization if one page is clearly dominant, or if the two serve genuinely different search intent.\"\n      }\n    }\n  ]\n}\n<\/script><\/p>\n<h2>The bottom line<\/h2>\n<p>A content audit is mostly bookkeeping with a decision attached to each row, and the payoff is disproportionate because you&#8217;re improving assets you already own. Build the inventory, join it to twelve months of Search Console data, force every URL into one of four buckets \u2014 then do the UPDATE bucket first. Refreshing pages already sitting at positions 6 to 20 is the fastest win on the list, every time.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A content audit is a structured review of everything you&#8217;ve published: what it earns, what it costs you, and what you&#8217;re going to do about it. \u2026<\/p>\n","protected":false},"author":1,"featured_media":173,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-172","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seo"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Run a WordPress Content Audit - JnK Plugins Blog<\/title>\n<meta name=\"description\" content=\"Run a WordPress content audit step by step: inventory your posts, pull GSC and GA4 data, then keep, update, consolidate or prune each one.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Run a WordPress Content Audit - JnK Plugins Blog\" \/>\n<meta property=\"og:description\" content=\"Run a WordPress content audit step by step: inventory your posts, pull GSC and GA4 data, then keep, update, consolidate or prune each one.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/\" \/>\n<meta property=\"og:site_name\" content=\"JnK Plugins Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-27T12:21:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-30T09:21:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/jnkplugins.com\/blog\/wp-content\/uploads\/2026\/07\/wordpress-content-audit.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Suresh K Meena\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Suresh K Meena\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wordpress-content-audit\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wordpress-content-audit\\\/\"},\"author\":{\"name\":\"Suresh K Meena\",\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/#\\\/schema\\\/person\\\/601d025989fe7e0c285dd7fff36d9feb\"},\"headline\":\"How to Run a WordPress Content Audit (Step by Step)\",\"datePublished\":\"2026-07-27T12:21:32+00:00\",\"dateModified\":\"2026-07-30T09:21:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wordpress-content-audit\\\/\"},\"wordCount\":2106,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wordpress-content-audit\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/wordpress-content-audit.png\",\"articleSection\":[\"SEO\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wordpress-content-audit\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wordpress-content-audit\\\/\",\"url\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wordpress-content-audit\\\/\",\"name\":\"How to Run a WordPress Content Audit - JnK Plugins Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wordpress-content-audit\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wordpress-content-audit\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/wordpress-content-audit.png\",\"datePublished\":\"2026-07-27T12:21:32+00:00\",\"dateModified\":\"2026-07-30T09:21:27+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/#\\\/schema\\\/person\\\/601d025989fe7e0c285dd7fff36d9feb\"},\"description\":\"Run a WordPress content audit step by step: inventory your posts, pull GSC and GA4 data, then keep, update, consolidate or prune each one.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wordpress-content-audit\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wordpress-content-audit\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wordpress-content-audit\\\/#primaryimage\",\"url\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/wordpress-content-audit.png\",\"contentUrl\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/wordpress-content-audit.png\",\"width\":1200,\"height\":630,\"caption\":\"WordPress content audit \u2014 featured card\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wordpress-content-audit\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Run a WordPress Content Audit (Step by Step)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/\",\"name\":\"JnK Plugins Blog\",\"description\":\"Guides, comparisons, and tutorials for our WordPress plugins\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/#\\\/schema\\\/person\\\/601d025989fe7e0c285dd7fff36d9feb\",\"name\":\"Suresh K Meena\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a4697e28623a48b2ee5ce631fb355d9e2dcc08a7ffb793cc5dd2885fe53dc4b2?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a4697e28623a48b2ee5ce631fb355d9e2dcc08a7ffb793cc5dd2885fe53dc4b2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a4697e28623a48b2ee5ce631fb355d9e2dcc08a7ffb793cc5dd2885fe53dc4b2?s=96&d=mm&r=g\",\"caption\":\"Suresh K Meena\"},\"description\":\"Suresh has been building web apps for over 15 years and is the founder of JnK Plugins, where he makes honest, no-bloat WordPress tools that keep your data in your own hands. Away from the keyboard he is usually at a chessboard, thinking a few moves ahead \u2014 and he is always ready to learn something new.\",\"sameAs\":[\"https:\\\/\\\/jnkplugins.com\"],\"url\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/author\\\/suresh\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Run a WordPress Content Audit - JnK Plugins Blog","description":"Run a WordPress content audit step by step: inventory your posts, pull GSC and GA4 data, then keep, update, consolidate or prune each one.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/","og_locale":"en_US","og_type":"article","og_title":"How to Run a WordPress Content Audit - JnK Plugins Blog","og_description":"Run a WordPress content audit step by step: inventory your posts, pull GSC and GA4 data, then keep, update, consolidate or prune each one.","og_url":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/","og_site_name":"JnK Plugins Blog","article_published_time":"2026-07-27T12:21:32+00:00","article_modified_time":"2026-07-30T09:21:27+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/jnkplugins.com\/blog\/wp-content\/uploads\/2026\/07\/wordpress-content-audit.png","type":"image\/png"}],"author":"Suresh K Meena","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Suresh K Meena","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/#article","isPartOf":{"@id":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/"},"author":{"name":"Suresh K Meena","@id":"https:\/\/jnkplugins.com\/blog\/#\/schema\/person\/601d025989fe7e0c285dd7fff36d9feb"},"headline":"How to Run a WordPress Content Audit (Step by Step)","datePublished":"2026-07-27T12:21:32+00:00","dateModified":"2026-07-30T09:21:27+00:00","mainEntityOfPage":{"@id":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/"},"wordCount":2106,"commentCount":0,"image":{"@id":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/#primaryimage"},"thumbnailUrl":"https:\/\/jnkplugins.com\/blog\/wp-content\/uploads\/2026\/07\/wordpress-content-audit.png","articleSection":["SEO"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/","url":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/","name":"How to Run a WordPress Content Audit - JnK Plugins Blog","isPartOf":{"@id":"https:\/\/jnkplugins.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/#primaryimage"},"image":{"@id":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/#primaryimage"},"thumbnailUrl":"https:\/\/jnkplugins.com\/blog\/wp-content\/uploads\/2026\/07\/wordpress-content-audit.png","datePublished":"2026-07-27T12:21:32+00:00","dateModified":"2026-07-30T09:21:27+00:00","author":{"@id":"https:\/\/jnkplugins.com\/blog\/#\/schema\/person\/601d025989fe7e0c285dd7fff36d9feb"},"description":"Run a WordPress content audit step by step: inventory your posts, pull GSC and GA4 data, then keep, update, consolidate or prune each one.","breadcrumb":{"@id":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/#primaryimage","url":"https:\/\/jnkplugins.com\/blog\/wp-content\/uploads\/2026\/07\/wordpress-content-audit.png","contentUrl":"https:\/\/jnkplugins.com\/blog\/wp-content\/uploads\/2026\/07\/wordpress-content-audit.png","width":1200,"height":630,"caption":"WordPress content audit \u2014 featured card"},{"@type":"BreadcrumbList","@id":"https:\/\/jnkplugins.com\/blog\/wordpress-content-audit\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jnkplugins.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Run a WordPress Content Audit (Step by Step)"}]},{"@type":"WebSite","@id":"https:\/\/jnkplugins.com\/blog\/#website","url":"https:\/\/jnkplugins.com\/blog\/","name":"JnK Plugins Blog","description":"Guides, comparisons, and tutorials for our WordPress plugins","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jnkplugins.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/jnkplugins.com\/blog\/#\/schema\/person\/601d025989fe7e0c285dd7fff36d9feb","name":"Suresh K Meena","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a4697e28623a48b2ee5ce631fb355d9e2dcc08a7ffb793cc5dd2885fe53dc4b2?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a4697e28623a48b2ee5ce631fb355d9e2dcc08a7ffb793cc5dd2885fe53dc4b2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a4697e28623a48b2ee5ce631fb355d9e2dcc08a7ffb793cc5dd2885fe53dc4b2?s=96&d=mm&r=g","caption":"Suresh K Meena"},"description":"Suresh has been building web apps for over 15 years and is the founder of JnK Plugins, where he makes honest, no-bloat WordPress tools that keep your data in your own hands. Away from the keyboard he is usually at a chessboard, thinking a few moves ahead \u2014 and he is always ready to learn something new.","sameAs":["https:\/\/jnkplugins.com"],"url":"https:\/\/jnkplugins.com\/blog\/author\/suresh\/"}]}},"_links":{"self":[{"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/posts\/172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/comments?post=172"}],"version-history":[{"count":2,"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/posts\/172\/revisions"}],"predecessor-version":[{"id":267,"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/posts\/172\/revisions\/267"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/media\/173"}],"wp:attachment":[{"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/media?parent=172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/categories?post=172"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/tags?post=172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}