ImgRank — Bulk Image SEO & Optimizer
Bulk optimize images, convert to WebP, and update alt text, titles and more via flexible CSV mapping. Built for serious SEO.
by Ezekiel Apetu · github.com/apetuezekiel/imgrank · website
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/apetuezekiel/imgrank/archive/refs/heads/main.zipReadme
ImgRank — Bulk Image SEO & Optimizer
A commercial WordPress plugin I co-built and co-own with ClickWave Co. The plugin covers the full image SEO lifecycle — optimization, metadata management, media library hygiene, auditing, and front-end performance — in a single lightweight package, without relying on external image processing services.
Live product site: https://imgrank.clickwaveco.com
What it does
Image Optimization
Converts images to WebP or compresses them in-place using the server's GD or Imagick library. Every image is backed up before processing. After WebP conversion, all references across post_content, postmeta, options, and Elementor data are updated automatically. New uploads can be processed on-the-fly via the auto-optimize hook.
Bulk SEO Updater
Accepts a CSV with arbitrary column headers, presents a mapping UI so editors can assign columns to alt text, title, caption, and description, then matches rows to WordPress attachments by filename or URL and bulk-updates all fields in one operation.
Media Manager
Three tools in one tab:
- Unused Image Detector — scans post content, postmeta, widgets, and customizer data to find attachments with no remaining references
- Duplicate Image Detector — groups attachments by filename and filesize to surface exact copies
- Folder Organisation — custom taxonomy (
imgrank_folder) on the attachment post type for named grouping and filtering
Image Audit
Scores every attachment out of 100 across five weighted SEO criteria: missing alt text (−35), missing title (−20), oversized file (−20), non-WebP format (−15), duplicate alt text (−10). The audit table is filterable by score band, supports inline alt text editing via AJAX, and exports to CSV for client reporting.
Performance Tools
- Lazy Loading Enforcement — bulk-injects
loading="lazy"on all<img>tags across post content - Responsive Image Checker — reports images missing
srcsetattributes - XML Image Sitemap — generates a Google-compatible image sitemap served at
/imgrank-image-sitemap.xml - Schema Markup — injects
ImageObjectJSON-LD structured data into singular page<head>tags
Architecture
imgrank/
├── imgrank.php # Plugin header, constants, loader, activation/deactivation hooks
├── uninstall.php # Clean removal — options, postmeta, taxonomy terms
├── readme.txt # WordPress.org readme format
├── includes/
│ ├── class-imgrank-settings.php # Tabbed Settings API UI
│ ├── class-imgrank-account.php # Token activation + Dev Mode
│ ├── class-imgrank-welcome.php # First-activation onboarding page
│ ├── class-imgrank-optimizer.php # WebP conversion + compression (GD/Imagick)
│ ├── class-imgrank-csv-updater.php # Bulk metadata updates via CSV
│ ├── class-imgrank-media-manager.php # Unused/duplicate detection + folders
│ ├── class-imgrank-image-audit.php # SEO scoring + inline editing + CSV export
│ └── class-imgrank-performance.php # Lazy loading, srcset check, sitemap, schema
├── assets/
│ ├── css/imgrank-admin.css
│ └── js/imgrank-admin.js
└── languages/
Technical notes
- PHP 7.4+ required; tested up to WordPress 6.7
- Image processing is entirely server-side — no third-party API calls for optimization
- Account activation calls
imgrank.clickwaveco.com/api.phpto validate a licence token; a Dev Mode toggle bypasses this for local development - All
$wpdbqueries use prepared statements; all output is escaped at the point of rendering - Activation includes a migration path for data from the predecessor ClickWave Image SEO plugin
Installation (local/dev)
- Copy the
imgrankfolder towp-content/plugins/ - Activate from the WordPress Plugins screen
- Go to ImgRank → Settings → Account and enable Dev Mode to skip API activation
Author: Ezekiel Apetu — github.com/Apetuezekiel · apetudevbeast@gmail.com