Image SEO Tool: Website Alt Text Checker, PDF Report & Auto-Fix
Pricing
from $20.00 / 1,000 page audits
Image SEO Tool: Website Alt Text Checker, PDF Report & Auto-Fix
Find every image missing alt text on any website and get ready-to-paste fixes in EN/FR/AR. Also flags heavy images, no WebP, missing width/height and on-page SEO gaps. CSV + white-label PDF report. A 20-page audit costs about $0.50. Works with WordPress, Wix, Webflow, custom sites and AI agents.
Pricing
from $20.00 / 1,000 page audits
Rating
0.0
(0)
Developer
Youssef ferri
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Security
Limited permissionsShare
Image SEO Checker & Alt Text Checker for Any Website audits image SEO on any site: missing or weak alt text, heavy images, no WebP/AVIF, missing dimensions and lazy loading, on-page SEO and Google Discover readiness. It suggests alt text fixes in English, French or Arabic and can apply them at the edge with an optional Cloudflare auto-fix.
Made for publishers, blogs, online shops, company sites and the SEO agencies behind them, on WordPress, Drupal, Joomla, Ghost, Webflow, Wix, Squarespace, Magento or custom code. Output: a dataset of page and image issues with fixes, CSVs and a white-label SEO report (HTML + PDF). Run it in Apify Console, through the API, or as a tool for AI agents through the Apify MCP server. Paste a URL and it finds the pages through your sitemap. No login, no paid APIs, no AI keys.
Use with AI agents (MCP)
This Actor is an AI agent / MCP tool. Through the hosted Apify MCP server, Claude, Cursor, VS Code, ChatGPT or any MCP client can call it, read the input fields below as the tool's docs, and get the results as JSON.
- This tool only:
https://mcp.apify.com/?tools=j0l30/website-image-seo-audit - All 5 Lycorax tools:
https://mcp.apify.com/?tools=j0l30/shopify-seo-alt-text-fixer,j0l30/woocommerce-seo-alt-text-fixer,j0l30/website-image-seo-audit,j0l30/domain-rdap-dns-reputation-checker,j0l30/website-exposure-defense-knowledge
Sign in with Apify (OAuth) when your client asks, or send the header Authorization: Bearer <APIFY_TOKEN>. Runs are billed to your Apify account at the prices in "How much does it cost?". The tool returns the run and its datasetId; the agent then reads the rows with get-dataset-items, which the server adds for you.
Claude Desktop / claude.ai: Settings → Connectors → Add custom connector → paste the URL as Remote MCP server URL.
Claude Code:
$claude mcp add --transport http lycorax "https://mcp.apify.com/?tools=j0l30/website-image-seo-audit"
Cursor (~/.cursor/mcp.json, or .cursor/mcp.json in your project):
{ "mcpServers": { "lycorax": { "url": "https://mcp.apify.com/?tools=j0l30/website-image-seo-audit" } } }
VS Code (.vscode/mcp.json):
{ "servers": { "lycorax": { "type": "http", "url": "https://mcp.apify.com/?tools=j0l30/website-image-seo-audit" } } }
ChatGPT (Developer mode on): Settings → Apps & Connectors → Create → MCP Server URL = the URL, Authentication = OAuth. ChatGPT can't change a connector's tools later, so pick the one-tool or the all-tools URL first.
Swap in the all-tools URL to give your agent every Lycorax tool at once.
Example prompts
- "Audit image SEO on https://books.toscrape.com (20 pages) and list the pages missing a meta description, canonical or og:image, plus the images with weak alt text."
- "Audit my news site https://my-news-site.com (50 pages) and tell me which articles fail the Google Discover image checks (large lead image, max-image-preview)."
- "Re-audit https://my-site.com with baselineDataset set to the dataset of last month's run and summarise what got fixed and what is new, with the proof report link."
The audit is read-only. The Cloudflare Worker option only generates code for the site owner to deploy; agents should set confirmAuthorized only after the owner says yes.
Output sample. Two items from a real run on the public test site books.toscrape.com (shortened). Rows have type page, image and report, plus proof, monitoring or search_console when those options are on.
[{"type": "page", "url": "https://books.toscrape.com/", "score": 59, "issues": ["missing_meta_description", "missing_canonical", "missing_og_image"], "title": "All products | Books to Scrape - Sandbox", "h1_count": 1, "images_total": 20, "images_without_alt": 0, "language": "en", "is_article": false, "speed_issues": ["images_missing_dimensions", "images_not_lazy_loaded", "images_legacy_format"]},{"type": "image", "image_src": "https://books.toscrape.com/media/cache/55/33/553310a7162dfbc2c6d19a84da0df9e1.jpg", "current_alt": "Olio", "issues": ["generic"], "suggested_alt": "", "confidence": "manual", "speed_issues": ["missing_dimensions", "not_lazy_loaded", "legacy_format"]}]
Other Lycorax tools: Shopify Alt Text Generator · WooCommerce Alt Text Generator · Domain Reputation Checker · Website Exposure Audit & Dorks List for Defense.
What does it check?
- Image alt text:
missing,empty_alt,generic("image", "photo"), afilename(IMG_1234.jpg), aduplicate,too_longor aredundant_prefix("image of..."). Logos and icons repeated in the layout are counted once, and decorative images are skipped. - Alt text suggestions in English, French and Arabic, picked from each page's
<html lang>(or forced withaltLanguage). Suggestions are deterministic:highfrom the image caption,mediumfrom its title or the site name for logos,reviewfrom the file name or the page heading plus a localized word like "vue de face" or "منظر أمامي", andmanualwhen there's no honest context. It never makes up what's in a photo, and no paid AI is used. - Image page speed (Core Web Vitals): images over 200 KB, missing
width/height(layout shift, CLS), missingloading="lazy"below the fold (the first two images are left alone, since lazy-loading the hero hurts LCP), and JPEG/PNG instead of WebP/AVIF. File size and format come from light HEAD requests: capped (maxImageChecks, 50 by default), robots.txt-aware and at least 1 second apart. - On-page SEO: title and meta description length, H1 count, canonical tag, Open Graph image and a 0 to 100 score per page.
- Google Discover & News readiness, on article pages:
- the
max-image-preview:largerobots tag, which Discover needs for large image cards - a lead image at least 1200px wide
- Article/NewsArticle schema with
author,datePublishedanddateModified - a news sitemap
- the
- CMS detection and a fix-first list of the 5 most common problems.
Who is it for?
- SEO agencies: white-label proof reports in your brand, monthly monitoring for every client, any CMS
- News and media sites that want Google Discover and Google Images traffic
- Bloggers, shops and company sites that live on organic search, in English, French or Arabic
- AI agents and MCP clients that need clean JSON
For stores, the platform-specific versions read the product catalog directly: Shopify and WooCommerce & WordPress.
How much does it cost?
Pay per result, and platform usage is included.
| Event | Price |
|---|---|
| Page audit (SEO, Discover/News and image speed checks) | $0.02 per page |
| Image with an alt text issue and a suggested fix | $0.004 per image |
| Site report + CSVs (and the monitoring diff, when on) | $0.10 per run |
| Proof report (before/after, HTML + PDF, white-label) | $0.25 per report |
| Auto-fix: image fixed via the Cloudflare Worker (premium) | $0.01 per image |
Page fixes in the Worker (meta description, canonical, Open Graph, robots, JSON-LD), image speed checks, monitoring, the PDF and Search Console proof cost nothing extra. A 50-page blog with 120 images to fix costs about $1.58.
Input
{ "siteUrl": "https://your-site.com", "maxPages": 50, "onlyImagesWithIssues": true, "altLanguage": "auto", "maxImageChecks": 50 }
Output
{ "type": "page", "url": "https://site.com/2026/10/story", "score": 79, "language": "fr", "issues": ["title_too_long"], "is_article": true, "news_issues": ["missing_max_image_preview_large"], "speed_issues": ["images_over_200kb", "images_missing_dimensions"], "image_speed": { "over_200kb": 1, "missing_dimensions": 2, "not_lazy_loaded": 0, "legacy_format": 3 } }
{ "type": "image", "image_src": "https://site.com/uploads/cafe-epices.jpg", "used_on_pages": 1, "current_alt": null, "issues": ["missing"], "suggested_alt": "Tasse de café aux épices sur une table en bois", "confidence": "high", "alt_language": "fr", "speed_issues": ["over_200kb", "legacy_format"], "file_size_kb": 312, "image_format": "legacy" }
The report item gives the CMS, languages, page and article counts, an average score, image speed totals, a fix_first list and links to alt-text-fixes.csv and image-speed.csv.
Proof mode: before and after (white-label HTML + PDF)
- Run an audit and keep the run.
- Fix the issues (by hand, or with the Cloudflare Worker below).
- Run again, choosing the first run's dataset as Proof mode: baseline.
You get a proof item, a shareable proof-report.html and a proof-report.pdf with the score before and after, image issues fixed, page issues fixed, new issues, image speed totals, and Google Lighthouse accessibility and SEO scores if you add your own free PageSpeed API key. The proof report costs $0.25.
White-label SEO report for agencies: set brandName, brandLogoUrl (PNG or JPEG for the PDF), brandColor and optionally brandWebsite. The HTML and PDF then carry only your brand, with no Lycorax branding. Leave them empty for the default report. The PDF is made inside the Actor with a small JavaScript library (no browser, no paid service) and supports French accents and Arabic text.
Search Console proof (no API, no paid tools)
Add the owner's own exports from Search Console > Performance > Export > Download CSV for the period before and after the fixes (gscBeforeCsv, gscAfterCsv). Each one can be:
- a URL to the ZIP or CSV,
- an Apify key-value store record (
kv://STORE_ID/KEYor itsapi.apify.com/v2/key-value-stores/.../records/...URL), or - the CSV text pasted into the field.
The Actor reads the real export format (Dates.csv, Pages.csv or Queries.csv, Filters.csv; English or French headers) and adds clicks, impressions, CTR and average position before and after, plus the pages or queries that moved most, to the proof report. Totals come from Dates.csv when both exports have it; otherwise from the top 1,000 table rows, and the report says so. Tip: set Search type to Image on both exports to show Google Images traffic alone; the report tells you which search type it read. This compares two periods. Seasons, demand and Google updates also move traffic, so it isn't proof of cause.
Monthly monitoring with alerts
Turn on Monitoring. Each run saves a compact snapshot of the site in a named key-value store in your own account (website-image-seo-monitor, one record per site, or per monitorKey). Named storages are kept between runs, unlike run datasets, which expire. The next run lists new issues and fixed issues since the last one, page by page and image by image, with an alert summary like "12 new issues (8 missing, 4 over_200kb), 30 fixed since 2026-09-17. Average score 74 -> 81 (+7)." It's in the monitoring item, in monitoring.json and in the run's status message. No extra charge.
Run it every month:
- In Apify Console, open Schedules > Create new, set the cron to
0 6 1 * *(06:00 on the 1st of each month), and add this Actor with your saved input (monitoring: true). - For alerts, open this Actor's Integrations tab and add a webhook on Run succeeded. Point it at Slack, Zapier, Make, n8n or your own endpoint; the payload template can include
{{resource.statusMessage}}, which holds the alert summary. Or add the Slack or Gmail integration there to get the summary as a message or email. - Keep
maxImageChecksthe same each month, so file-size results stay comparable.
Auto-fix (premium) for any site: Cloudflare edge Worker
For sites proxied through Cloudflare (the free plan works), turn on Generate a Cloudflare Worker. You get cloudflare-worker.js, a ready-to-paste Worker that improves the HTML at Cloudflare's edge on every page view, including the HTML Google's crawler sees, plus page-fix-map.json listing every change per page.
- Image alt text: missing or weak alt text is replaced; good human-written alt text is kept. A suggestion in one language is only used on pages in that language.
- Page tags, only where missing or weak, and only from the page's own data: meta description (missing or under 50 characters, from
og:descriptionor the first real paragraph), self-referencing canonical,og:title,og:image, robotsmax-image-preview:large(never onnoindexpages, and never over an explicitstandardornone), and Article or Product JSON-LD when the page clearly declares itself (og:typearticle with a publish date, or a product with price and currency). Nothing is invented. - Never overwrites good tags: the Worker checks each tag again at the edge on every request, so a tag you add later always wins.
- Responses carry
x-lycorax-alt-fixandx-seo-edge-fixheaders so you can check the Worker is running. - Instant rollback: delete the Worker route. Your server files are never changed.
- Runs on your Cloudflare account. The free plan covers 100,000 requests a day.
- $0.01 per image included in the Worker; page fixes are included. Requires confirming you own or are authorized to change the site.
- Then run Proof mode to show the before and after.
Live test on Cloudflare (17 Oct 2026, fictional demo coffee site on workers.dev, deleted afterwards): 4 pages in English, French and Arabic. With the generated Worker in front of it, Proof mode measured the average page score going from 51 to 77 (+26), 12 page issues fixed and 0 new: meta descriptions, canonicals, Open Graph images, max-image-preview:large and Article/Product JSON-LD. 4 of 6 image alt problems were fixed; the other two had no honest context to write from, or their only suggestion was in another page's language, so they were left for a human. Good existing tags, such as a product page's own max-image-preview:standard and its good alt text, were kept. Image speed issues stayed the same, as expected: the Worker doesn't resize or convert images.
AI agents can pay here (x402, USDC)
Agents can pay with x402 in USDC on Base and call https://api.apify.com/v2/acts/j0l30~website-image-seo-audit/run-sync-get-dataset-items.
FAQ
Does it change my site?
No. It only reads public pages. Only the premium Worker changes what visitors see, on your own Cloudflare account, and you can remove it any time.
Will fixing these raise my rankings?
Nobody can promise rankings. These are issues Google documents in its own guidelines (alt text, Discover image size, max-image-preview, canonical tags, structured data, Core Web Vitals), and fixing them removes known blockers to Search, Image and Discover traffic. Re-run after fixing to see your score go up.
Does it use AI?
No. Every suggestion comes from text already on your site, by fixed rules, so the same page always gets the same result.
My site blocks bots.
The run stops with a clear message if the home page can't be opened, and you're charged nothing.
Is this an alt text generator too?
It suggests alt text from text already on the page (captions, titles, headings) and marks each suggestion's confidence. It never guesses what a photo shows, and marks images with no honest context as manual. For Shopify or WooCommerce stores, the Shopify and WooCommerce versions write alt text from the product catalog and can save it in the store.
How it compares (honestly)
- Lighthouse and PageSpeed Insights: they test one page at a time and measure performance in depth. This Actor covers many pages from your sitemap and lists every image with an alt problem and a suggested fix, plus Discover checks. It doesn't measure real-user Core Web Vitals; it points to the image causes.
- Full SEO crawlers: they cover far more site-wide technical checks, such as internal linking. This one focuses on images, alt text, on-page basics and Discover, and adds before/after proof reports and an optional edge fix.
- The Shopify and WooCommerce versions: they read the product catalog and can write alt text into the store. This one reads public pages, so it works on any CMS.
Real case study (anonymized)
Major tech news publisher on WordPress, audited 17 Oct 2026, 6 pages. 41 of 68 unique images had alt problems: 25 empty, 9 over 125 characters, 7 duplicates and 3 file names. Its Discover setup was already solid: a 1200px lead image, a news sitemap and complete Article schema. That shows the audit credits what's done right instead of padding the list. Average page score: 83/100 (scored before image speed checks were added).
Lab test: before and after (fictional demo site)
We built a fake coffee shop site with common mistakes, audited it, fixed every issue, and ran Proof mode (17 Oct 2026). The site had 4 pages: home, 2 blog guides and 1 product.
| Before | After | |
|---|---|---|
| Average SEO score | 54 | 100 (+46) |
| Images with alt problems | 8 of 8 | 0 |
| Page issues | 21 | 0 (no new ones) |
What was wrong: empty alts, missing alts, file-name alts (IMG_2041.jpg), "image of..." alts, duplicates, titles over 60 characters, no meta descriptions, two H1s per page, no canonical, no OG image. The demo site was deleted after the test. (That test ran before image speed checks were added; speed now counts in the score too.)
More tools from the same publisher
- Shopify Alt Text Generator: bulk alt text audit and auto-fix for Shopify product images.
- WooCommerce Alt Text Generator: the same for WooCommerce products and WordPress media, with a WP-CLI script.
- Domain Reputation Checker: bulk RDAP lookup, DNS, SPF and DMARC checks and a risk score.
- Website Exposure Audit & Dorks List for Defense: playbooks to find and fix leaked files on sites you own.
Legal and responsible use
- Public pages only. It reads what any browser or search engine can see. No login, and it never bypasses paywalls, captchas or blocks.
- Respects robots.txt. It follows the rules for
User-agent: *andLycoraxSEOAudit, honorsCrawl-delay, and waits at least 1 second between requests, including the capped HEAD requests for image sizes (checked against each image host's own robots.txt). Every skipped URL is counted inskipped_by_robots_txt. - No personal data. It collects only page URLs, image URLs, alt text, image sizes and SEO tags. Search Console exports you add hold page or query totals only. Nothing is stored after your run except your own results and, if you turn on monitoring, the snapshot in your own account.
- Read-only by default. It changes a site only in premium auto-fix mode, with the owner's own credentials or Cloudflare account and explicit authorization.
- Your responsibility. Audit sites you own or are authorized to audit, or use the data for public research, and follow the target site's terms.
- Anonymized case studies. We don't name any brand without its permission.
- Not affiliated with or endorsed by Shopify, WooCommerce, WordPress, Google or Cloudflare. Google Search Console, Google Discover and Google Images are Google trademarks; Cloudflare Workers is a Cloudflare trademark. Trademarks belong to their owners.
Privacy
No tracking, and no calls beyond the site you name, its image hosts, and the files or logo you link to yourself. By Youssef Ferri / Lycorax Technologies.