Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/headwalluk/slimseo-to-yoast/archive/refs/heads/main.zipMigrates post, taxonomy and term meta data from Slim SEO into Yoast SEO, in batches, via WP-CLI.
Built by Headwall Hosting.
What it does
Slim SEO stores everything as a single serialised array per object. Yoast splits
the same information across individual meta rows for posts, and a single option
for terms. This plugin translates between them — including rewriting Slim SEO's
{{ post.title }} template syntax into Yoast's %%title%%, and resolving image
URLs to the media library attachment IDs Yoast needs.
It also handles the things a naive field-copy misses, each of which changes what the site reports to Google without changing a single meta row:
- Legacy Yoast data. If the site ran Yoast before switching to Slim SEO, its old meta is still in the database and reactivating Yoast brings it back — much of it in fields Slim SEO has no equivalent for, so a migration cannot overwrite it. On the site this was built for, that was 2,345 stale Open Graph titles silently overriding the migration on every social share.
- Auto-generated descriptions. Slim SEO generates a meta description from content when a post has none; Yoast leaves it empty by design. Without a settings change, more than half that site's pages would have lost their meta description entirely.
- Archive indexing. Slim SEO keeps its per-post-type, per-taxonomy and author archive noindex flags in its settings option rather than in meta, so nothing in a migration moves them. Yoast's defaults index all three, which on a news site means a large number of thin listing pages entering the index the day you switch.
- The title separator. Slim SEO leaves it to WordPress, which texturises
titles on output and turns a hyphen into an en dash. Yoast emits its own
separator untexturised, so a site that looks like it uses
-is publishing–and the obvious mapping changes every title on the site.
The last two are derived from the live site at run time rather than configured, so they need no per-site editing.
Who it's for
Anyone moving a WordPress site from Slim SEO to Yoast who would rather not hand-copy a few thousand rows — particularly on a site with existing search rankings, where silently changing what every page reports to Google is not an option.
It is a one-shot tool: run it, verify, deactivate it, delete it. There is no admin UI, no front-end output and no hooks — outside of WP-CLI it does nothing at all, and there is no updater keeping it phoning home after you're done with it.
Install
Clone straight into your plugins directory. The directory must be named
slimseo-to-yoast — GitHub's "Download ZIP" gives you slimseo-to-yoast-main,
so rename it if you go that route.
cd wp-content/plugins
git clone git@github.com:headwalluk/slimseo-to-yoast.git
There are no releases and no updater by design: this is a run-once tool, so delete the directory when you're finished rather than leaving it installed.
Quick start
wp plugin install wordpress-seo --activate # Yoast must be active first
wp plugin activate slimseo-to-yoast
wp slimseo-to-yoast status # What's on each side
wp slimseo-to-yoast migrate --dry-run --reset # Rehearse; read the warnings
wp slimseo-to-yoast migrate --reset # Do it
wp slimseo-to-yoast configure # Keep front-end output equivalent
wp plugin deactivate slim-seo
Back up first — --reset is destructive, and only needed on a site that ran Yoast
previously; status tells you whether it does. Two things configure
deliberately leaves alone also need a hand afterwards: the title of a static front
page, and any page whose entire content is a shortcode.
Do not run this on production without reading the runbook; the ordering matters more than it looks.
Documentation
- docs/usage.md — every command and flag, and how to read the output
- docs/runbook.md — the ordered production sequence, what to check before committing, and how to roll back
- docs/data-mapping.md — which field becomes which, the template variable table, and how images are handled
- docs/research.md — how both plugins actually store their data, and the findings that shaped this tool
- docs/architecture.md — code structure, conventions, and notes on porting to another plugin pair
Per-version release notes: CHANGELOG.md.
Compatibility
Developed and verified against Slim SEO 4.9.11 and Yoast SEO 28.3, on WordPress 7.1 / PHP 8.5. Requires WordPress 6.0+ and PHP 8.0+.
Yoast's storage format has been stable for years, but the plugin writes through
Yoast's own public APIs (WPSEO_Meta::set_value(),
WPSEO_Taxonomy_Meta::set_values()) rather than touching the database directly,
so it should survive schema changes that a raw-SQL approach would not.