Lean SEO
Ultra-lightweight SEO plugin for WordPress. Canonical, meta, OG, Twitter, JSON-LD @graph, breadcrumbs, sitemap lastmod. Zero JS. No bloat. ~780 LOC.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/ctala/lean-seo/archive/refs/heads/main.zipThe SEO plugin that does the essentials and nothing else.
Canonical, meta description, Open Graph, Twitter Cards, JSON-LD @graph (12 schema types), breadcrumbs, FAQ/HowTo schema, AI crawlers control, llms.txt, llms-full.txt, IndexNow pings, image sitemap, News Sitemap (Google News format), Organization enrichment + editorial trust signals, Person (personal brand), sameAs — automated and REST-accessible. Zero JavaScript on frontend. No bloat. ~3,100 LOC.
Why?
Most SEO plugins (Yoast, Rank Math, SmartCrawl, AIOSEO) load thousands of lines of code, JavaScript, admin analytics, and upsell banners on every page load. Some keep telemetry callbacks active in the frontend. They want to be your "SEO suite" with score widgets, internal linking analyzers, redirects, schema builders, and breadcrumb editors all bundled.
Lean SEO does the essentials and lets specialized plugins do everything else. Pair it with:
lean-redirects— 301/302/307 redirects with one indexed querylean-autolinks— keyword auto-linking (glossary, affiliates)
Same family, same lean philosophy. Each plugin is independent — switch any of them without losing data from the others.
| Plugin | LOC (est.) | Frontend JS | Frontend CSS | Telemetry | Upsell |
|---|---|---|---|---|---|
| Yoast SEO | ~50,000+ | No | No | Yes | Yes |
| Rank Math | ~30,000+ | No | No | Yes | Yes |
| SmartCrawl Pro | ~25,000+ | No | No | Yes | Yes |
| AIOSEO | ~40,000+ | No | No | Yes | Yes |
| Slim SEO | ~3,000 | None | None | None | Some |
| Lean SEO | ~3,100 | None | None | None | None |
Features
Core SEO (every page)
- Canonical URL (per-post override + correct handling of paginated/archives/search/404)
- Meta description with smart fallback (custom → excerpt → trimmed content)
- Open Graph (
og:typedynamic: article/website/profile) - Twitter Cards (
summary_large_imageauto if og:image present) - Per-post SEO title override (via
wp_get_document_titlefilter) - Per-post
noindex/nofollowtoggles - Automatic
noindexfor search results, attachment pages,?replytocom=, 404 - Advanced robots directives by default (
max-snippet:-1,max-image-preview:large,max-video-preview:-1) - OG image fallback chain: custom meta → featured → first content
<img>→ site default
JSON-LD @graph (12 schema types)
All nodes are cross-referenced via @id — one clean `