Description
SEOWrench does the everyday SEO work of a WordPress site, and shows you the evidence behind every number on screen.
It writes the tags your pages need, reads every published page straight from your database, and puts the whole site in one list grouped by problem — not one warning at a time.
All of it runs on your own server, with no account, and nothing is behind a paywall. And when something cannot be known from inside WordPress, the plugin says so instead of filling the gap with a guess.
Your tags, written properly
Title, meta description, canonical URL, robots directives, Open Graph and Twitter cards. Templates take variables (%title%, %sep%, %sitename%), and the preview shows the real line, with your own content, before you save.
Pagination, static front pages, archives and search results are handled too — those are where SEO plugins leave holes, not the simple post.
The whole site, grouped by problem
“22 pages with no meta description” is a job you can finish. “This page has a warning” is not.
Every page is checked for six things: title, meta description, H1, heading hierarchy, images with no alt text, and how much content there is. What comes out is one sortable, filterable list with a count beside each problem — and a page the plugin could not read is labelled as such, with the reason, instead of being scored as if it had been.
GEO: what AI crawlers can actually read
Generative engine optimisation — GEO — is a measurement problem before it is a content problem: what an AI assistant can read on your site, and what it is blocked from. This plugin measures it.
Nine signals, and seven of them are read on your own site, with no account and no waiting:
- The five AI search crawlers, allowed or blocked, read from your own
robots.txt— blocking one of these takes your site out of live answers - The eight AI training crawlers, kept as a separate list, because blocking those is a legitimate choice and not a defect
- Whether your
robots.txtcan be read at all, because an unreadable one leaves all thirteen answers unknown - Whether your domain answers at
/llms.txt— one click serves it, built from titles and descriptions you already wrote, without writing a file to your server - Schema coverage by content type, and which types are still missing it
- Which content types reach your sitemap, and which are left out
- What is set to be indexed, and what is not
The two that cannot be known from inside WordPress — the GEO score of the whole site, and what is left of each page with JavaScript off, which is how the crawlers read it — need the site walked from the outside. That is the audit, and a free account covers it.
You will not find a promise here that any of this gets your site cited by an AI. No plugin can honestly make that promise. This one reads what is readable, tells you what it measured, and tells you what it did not.
What you wrote stays yours
If another SEO plugin ever ran on this site, its titles and descriptions are still in your database — even if that plugin is long gone. SEOWrench finds them and brings them over.
A field you have already filled is never overwritten. Only empty ones are filled, the original data stays exactly where it is, and one click undoes the whole import.
One click also downloads every SEO title and meta description as a spreadsheet, one row per page, with the address. It is a copy: nothing is changed or removed. Leaving a plugin should not cost you your work.
It refuses to fight another plugin
While another SEO plugin is active, SEOWrench emits nothing. Two meta descriptions in the same HTML is the classic WordPress SEO defect, and there is no setting here that can turn it on.
Does it need an account?
No. Everything above works with no sign-up, no key and no connection. Nothing is limited, locked or time-boxed.
A free account adds the one thing no plugin can do from inside your server: the whole-site audit. It requests every URL of your site from the outside, the way a search engine does, and returns a 0–100 score with the problems found on each page.
That part is a service, so it has a quota. Reaching the quota stops nothing else in the plugin.
External services
This plugin works without any external connection. The features below reach a service only when you trigger them.
1. SEOWrench (seowrench.com) — the whole-site audit
What it does: fetches the public pages of your site over HTTP, one by one, follows the links between them and returns a report with a 0–100 score, the indexing status of each URL and the problems found.
Why it is not done inside the plugin: auditing a site means requesting every page of it. Doing that from the site itself means the server crawling itself — hundreds of requests competing with real visitors, on the machine that has to answer them. The audit runs on our infrastructure so your site only answers the requests, and only during the audit.
What is sent: the public address of your site, and the address of a page when you ask for a single-page analysis. This happens at the moment you click, never in the background. The account connection sends the site address and an access token.
Terms: https://seowrench.com/terms — Privacy: https://seowrench.com/privacy
2. SEOWrench (seowrench.com) — the suggested title, description and focus keyword
What it does: when the plugin cannot write a title or a description from your own page, and when you ask for a focus keyword, the service writes one for that page and returns it. Nothing is applied until you press “Apply”, and you can discard it.
What is sent, at the moment you click: the page title, an excerpt of the page text (up to about 2,400 characters), the headings, the slug, the categories and tags, one of the other fields as context, the site name and tagline, and the site language. The excerpt is plain text — the page HTML is never sent.
What comes back: a single line of text for the field you asked about. For the focus keyword it is a short search phrase, and it is a suggestion drawn from your own page — not search volume data, which this plugin does not have and does not claim to have.
When it happens: only on that click, only on that page, and only while your account is connected — and most clicks never get that far. Titles and descriptions are written on your own server, from your own page, with nothing sent and no credits spent; the panel says which of the two wrote what you are reading. The service is asked only when the page has no text to work with, or for a focus keyword, which is not on the page at all. Those spend credits from your account, and with no account connected the plugin says so instead of sending anything.
Terms: https://seowrench.com/terms — Privacy: https://seowrench.com/privacy
3. Google (search.google.com and pagespeed.web.dev)
The “Rich Results Test” and “PageSpeed Insights” items in the admin bar open those Google tools with the address of the page you are viewing. The request happens on click and nothing is sent in the background.
Terms: https://policies.google.com/terms — Privacy: https://policies.google.com/privacy
Nothing else leaves your server. Everything the plugin reads to fill its screens — your posts, pages, taxonomies, robots.txt and llms.txt — is read on your own site and stays there. No credentials, no visitor data and no personal data are sent anywhere, and nothing is sent in the background: every request above happens because you clicked something.
Source code
Everything in this package is readable. The files in dist/ are compiled, and the sources they are built from ship right here under resources/: dist/admin.js comes from resources/scripts/admin/index.js, dist/editor-panel.js from resources/scripts/editor-panel/index.js, and dist/admin-style.css from resources/styles/admin/style.scss and its partials.
BUILD.txt has the exact command, the Node version and the pinned dependency versions, and `webpack.config.js` is included, so the build can be reproduced and reviewed. No third-party library is bundled: the compiled files contain only the code from `resources/`.
The PHP under src/ is not compiled. It is the code that runs, as written. vendor/ holds the Composer autoloader and nothing else, because the plugin has no runtime PHP dependency.
Installation
- Install and activate the plugin.
- If another SEO plugin ever ran on this site, open SEOWrench Settings Import. The plugin tells you what it found and what it would bring over.
- Open any post or page: the SEOWrench box appears in the editor.
- SEOWrench Overview answers “how is the site doing?” in one screen.
FAQ
-
Can I use it together with Yoast SEO or Rank Math?
-
You can keep them installed, and SEOWrench will not fight them: while another SEO plugin is active, SEOWrench emits no tags at all. It keeps reading and reporting, and the import screen stays available.
To have SEOWrench write your tags, deactivate the other plugin. SEOWrench never does that for you — that is your decision, not ours.
-
I imported from Rank Math. Can I go back?
-
Yes. The import copies into our fields and never touches the original, so the Rank Math data is still there. The import screen has an “Undo this import” button that removes only what came from that plugin and is still identical to it — anything you edited afterwards stays.
-
Can I take my data out?
-
Yes, and it takes one click. SEOWrench Settings Import ends with “Take it with you”: a CSV of every SEO title and meta description on the site, with the address of each page. Nothing is changed or removed — the file is a copy.
Your titles and descriptions are also stored in ordinary WordPress post meta, not in a private table, so they stay in your database whatever you decide to run next.
-
What about All in One SEO?
-
AIOSEO stores its data in its own database table instead of post meta. SEOWrench detects it and stays read-only: it analyses and reports, but does not import from it or write over it. Reading another plugin’s private table from the outside breaks on its first update.
-
Some values were not imported. Why?
-
Values that use the other plugin’s template variables (like
%sep%or%%sitename%%) are left behind and counted on screen. Those are instructions for that plugin’s engine, not text — copying them as-is would print the percent signs on your page. -
What is GEO, and what does this plugin measure?
-
GEO — generative engine optimisation — is about whether AI assistants can read your site and use it in an answer. This plugin measures the readable part of that, and says which part it cannot see. Locally: which of the thirteen AI crawlers your
robots.txtallows, whether/llms.txtanswers, how much schema each content type has, what reaches your sitemap, and what is set to be indexed. From the outside, with the audit: a GEO score for the whole site, and what is left of each page with JavaScript off, which is how the crawlers read it. What it will never tell you is that any of this makes an AI cite you — nobody can measure that from a plugin. -
Is a GEO score the same as an SEO score?
-
No, and they are kept apart on purpose. The SEO side is about being found and ranked by a search engine. The GEO side is about being readable and usable by an AI assistant, which fails for different reasons — a page built entirely in JavaScript can rank and still leave an assistant with nothing to read. Both come from our own rules, measured on your pages, never from a model’s opinion.
-
Does the suggestion send my content anywhere?
-
Most of the time, nowhere: the title and the description are written on your own server, from your own page. Your content travels only when the page has no text for that to work with, or when you ask for a focus keyword — then, on that click and only while your account is connected, what goes is plain text: the title, an excerpt of the page, the headings, the slug and the terms. Never the page HTML, and never in the background.
-
Does it slow my site down?
-
The tags are written from data already in memory when the page is built. The analysis screens run only in the dashboard, for logged-in users. Visitors trigger nothing.
-
How many pages does the plugin screen check?
-
The 200 most recently modified ones, and the screen says so. An unbounded scan would freeze the dashboard on large sites.
-
What happens when the free audit limit is reached?
-
Nothing in the plugin stops working. Titles, descriptions, social tags, the import, the sitemap controls and every analysis screen keep running exactly the same — the limit applies only to how often the audit service runs.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“SEOWrench” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “SEOWrench” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.1 – 2026-09-22
- Sitemap: the alternate language links now close each entry, as the sitemap schema requires.
- Sitemap stylesheet: the notice line no longer wraps with a single word left over.
- Code comments clarified across the plugin. No change in behaviour.
1.0.0 – 2026-09-21
- First public release.






