Broken links, missing meta descriptions, duplicate H1s, unembedded YouTube videos — small technical issues that quietly cost you rankings and clicks every day. SEOMedic finds all of them in one place and gives you the tools to fix them fast.
No more crawling through posts one by one. No more spreadsheets. One dashboard, every issue, fixed in minutes.
🔗 Broken Link Detection
Scan every post and page for broken external links. SEOMedic checks the live HTTP status of each URL and flags anything returning an error. Fix the URL inline — no need to open the post editor — then re-check immediately to confirm.
📝 Missing & Broken Meta Descriptions
See every post missing a meta description in one sorted list. Flags meta descriptions that are too short (rewritten by Google) or too long (truncated in SERPs).
🔍 Focus Keyword Assistant
See every post missing a focus keyphrase. Bulk-sync focus keywords to Yoast SEO or Rank Math with one click.
🧹 Content Pruning & Redirects
Find low-performing posts that drag the rest of your site down. Save 301 redirect targets per post (stored locally — no external service). Decide which trashed posts should redirect somewhere and which should 404 cleanly.
🖼️ Image Optimisation
Rename uploaded image files to SEO-friendly basenames, audit alt-text coverage, and find images embedded without dimensions.
H1 Tag Issues
Posts with more than one H1 confuse search engines. SEOMedic lists every offending post and shows you the exact text of each H1 so you know which ones to demote to H2 or H3.
▶️ YouTube & Video Issues
Three video problems caught in one panel: plain YouTube links that will never auto-embed, Gutenberg embed blocks missing the 16:9 aspect ratio class, and Classic Editor iframes with hardcoded dimensions that break on mobile.
🔀 Internal Link Health
Find orphan posts with no inbound internal links, and spot link opportunities where another post on your site already mentions the topic but does not link to it.
🗺️ Sitemap & Schema Audits
Verify your sitemap is reachable and well-formed. Scan every post for
Schema.org markup coverage and surface missing types.
⚡ Core Web Vitals (optional)
Connect a free Google PageSpeed Insights API key and audit your site's Core Web Vitals (LCP, INP, CLS) per page. The API key is yours — the plugin never proxies through us.
⚙️ Bulk Link Management
Browse every link across your entire site in one table. Apply nofollow, sponsored, UGC, or open-in-new-tab to hundreds of links at once. Find and replace a URL site-wide in seconds.
Works with Yoast SEO and Rank Math
Meta descriptions and SEO titles sync with Yoast SEO or Rank Math if active. Falls back to the native post excerpt when neither is installed.
Want AI generation, Search Console, and Bing?
Those features live in the separate
SEOMedic Pro add-on plugin, which you can install alongside this one. Pro adds AI meta/title generation (Claude), Google Search Console integration with CTR opportunity scoring, Bing Webmaster Tools integration, and a Gutenberg post-insights sidebar. Install Pro from your account at the plugin author's site — it is not hosted here.
2.63
- New (Pro): Your top 3 SEO tasks — a card near the top of the dashboard where AI picks the three highest-impact things to do this week to improve your rankings, focused on the pages that already get the most impressions in Google. Tick them off as you go; the list and progress are saved.
2.62
- Improved: the Broken Video Embeds check is now more accurate — it only tests the video that actually renders on the page (not an old URL left in an edited block) and confirms against the same cache your visitors see, so working videos are no longer wrongly flagged.
- New: a one-click Refresh embed button on each broken embed — clears WordPress's cached copy and re-fetches, fixing embeds that went blank because the cache went stale (a deleted or private video still needs its URL replaced).
2.61
- New: Deep scan button in Broken Video Embeds — optional, checks every video embed on every post and page (including pages nobody has viewed recently, which the fast scan can miss), with progress and a Stop button. The fast scan stays the default; deep scan only runs when you click it.
2.60
- New: Broken Video Embeds check — finds posts where a YouTube/Vimeo embed shows a blank box instead of the video (the embed stopped resolving after it was published). The regular video scanner can't see this because the stored block still looks fine; this checks each embed against its provider. Includes a per-video "re-check" button.
- Fixed: the video scanner no longer flags a working embed as "not embedded" when its block's saved URL had drifted from the one it actually displays.
2.59
- Fixed: the Focus Keyword vs Ranking section could show a "connect Google Search Console" message even when it was connected and already displaying your keyword-vs-query summary. It now shows the data whenever it has it.
2.58
- New: Internal Link Map — a whole-site visual map of how your posts link to each other, coloured into clusters, with zoom/pan and click-to-edit. See your hubs, islands and orphaned posts at a glance.
- New (Pro): Branded Search — track how your brand name performs in Google Search Console (impressions, clicks, CTR, position) versus the previous period, with a per-query breakdown. The brand term is auto-detected from your domain and editable for multi-word brands.
2.57
- Maintenance: further internal cleanup of how post titles are decoded for display; no functional changes.
2.56
- Maintenance: internal code cleanup (consolidated a duplicated helper); no functional changes.
2.55
- Fixed: post titles containing an apostrophe or ampersand showed raw codes (e.g. "Why I’m…") in Internal Link Impact and a few other panels. Titles now display correctly, in the panels and in CSV exports.
- Improved: the Internal Link Impact "vs site" column is now "Page vs. whole site" and states plainly whether a page ran ahead of or behind the site-wide trend.
2.54
- Housekeeping: WordPress.org compatibility fixes (plugin-checker), no functional changes.
2.53
- New (Pro): manage which links count as affiliate — add your own networks or cloak paths (e.g.
mynetwork.com, /go/) on top of the built-in list, from the Affiliate Link Clicks panel.
- New (Pro): notes on any affiliate link — jot "offer expired", "swap for X", etc. against a link; notes stay put even as click history rolls over.
2.52
- New (Pro): Affiliate Link Clicks — see how many times visitors click your outbound affiliate links, per link and per page, with a trend line. On a newer site, sales are a slow signal; clicks show a page is working long before it earns a commission, and a link with lots of clicks but nothing to show for it is worth a look (the offer may be wrong, or the link dead).
- Ties into Search Console: a "clicks per organic click" column shows how well each page turns Google traffic into affiliate clicks.
- Counts are collected in the visitor's browser and stay on your site — nothing is sent anywhere. They're approximate (ad-blocked and no-JavaScript visits aren't counted) and track clicks, not sales.
2.51
- Changed: the image-optimiser link in the Oversized images panel is now an affiliate link, and is labelled "(affiliate link)" like the hosting one, with
rel="nofollow sponsored". The FAQ disclosure has been updated to list both.
- Nothing about what the plugin reports changes. The Oversized images panel recommended a dedicated optimiser before there was any commercial relationship, for the same reason it does now: resizing and compressing are different jobs, and this plugin only does the first.
2.50
- Maintenance: rebuilt release with no functional changes from 2.49 (fresh package).
2.49
- Changed: affiliate links in the plugin are now labelled "(affiliate link)" where they appear, with a note explaining that SEOMedic earns a commission at no extra cost to you and that it never affects what the plugin reports. A matching disclosure has been added to the FAQ. There is one such link today — WordPress-optimized hosting, shown only when the dashboard is loading slowly.
2.48
- New: which element is your LCP, shown under each page in the Core Web Vitals table. An LCP of 3.4s tells you there's a problem but not what to fix — this names the actual element whose render time is that number, and flags when it's an image.
- New: redirect chains. If a page is served through one or more redirects, the row says so and how many milliseconds it costs. Linking the final URL directly removes it — and this is the kind of thing that's invisible until something measures it.
- Both come from the PageSpeed response the Core Web Vitals scan already makes. No extra requests, no extra quota.
- Note: the LCP element depends on which Lighthouse version PageSpeed happens to be running. Google removed the audit it came from and replaced it, so SEOMedic tries the old and new names and simply shows nothing if neither is available.
2.47
- New: Save original link on every oversized image, next to the Resize button. Resizing overwrites the full-size file and can't be undone, so this is the one chance to keep a copy. The confirmation now points at it rather than just warning you.
- Changed: the Oversized images panel now links to an image optimiser for the half of the job it deliberately doesn't do, and explains the difference — an optimiser shrinks the file it's given, this decides the file is the wrong size.
Earlier versions
Older entries are trimmed here to meet
WordPress.org’s 5000-character changelog limit. The complete history ships with the plugin in changelog.txt.