- Single-page analysis: when your score is a clean 100/100, "Download PDF Report" now produces a landscape Certificate of Perfect SEO instead of an empty issues report
- Full-site crawl: when every crawled page scored 100/100, the crawl PDF button does the same - one certificate covering the whole site, with the page count in the body text
- The certificate is professionally laid out (double border, RJL.io wordmark, embedded
/images/certified/favicon-certified-square.pngbadge, large green 100/100 pill, issue date, signature line) and mirrors the favicon-checker's certificate styling - Sites scoring below 100 (or crawls with any imperfect page) get the standard issue-detail PDF report as before - no change to that path
- Filename pattern:
seo-certificate-<domain>-YYYY-MM-DD.pdf - The landscape certificate (introduced in v6.11.0) now carries a signature line: RJ — Creator of RJL.io in italic, positioned just above the certificate's horizontal rule
- The rule auto-widens to fit the signature, keeping the layout balanced no matter the signer's name length
SEO Analyzer
Audit Your Site's SEO & Performance
#1 tool for analyzing any URL for SEO issues, deprecated meta tags, and head tag ordering for optimal performance. Now with platform-aware recommendations for WordPress, Shopify, Wix, and Squarespace. 100% client-side. Zero data stored.
SEO Analyzer Tool
Analyze Website
Validate standalone display, scope, orientation, share_target, and dual-screenshot requirements for installable PWAs
Press Enter to analyze
What We Analyze
- Meta tags (title, description, OG, Twitter)
- Head tag order for performance
- Deprecated tags (keywords, generator, etc.)
- Site resources (sitemap, robots, manifest)
- Favicons and PWA readiness
- Manifest: id, description, screenshots, scope
- CMS/platform detection (WordPress, Shopify, Wix, Squarespace)
Need to Create Meta Tags?
Use our Meta Tag Generator to create optimized meta tags with live previews.
Direct Link
Share analysis with ?url=domain.com
Site Resources
Favicon Analysis Generate Favicons
Web Manifest Generate 2026 Manifest
Head Tag Order Analysis Why Order Matters
Order Issues Found Why Order Matters
Move these tags earlier in your <head> for better performance.
Analyzing website...
Initializing analysis...
Crawling Site
Enter a URL to analyze
We'll check meta tags, head order, and SEO best practices
Error analyzing URL
Site-Wide SEO Analysis
0
Pages Analyzed
0
Critical Issues
0
Warnings
0
Suggestions
AI Assistant Prompt
Copy and paste to ChatGPT, Claude, etc.Validation Results
Why Order MattersCopy this prompt and paste it into your AI assistant (Claude, ChatGPT, etc.) to get help fixing these SEO issues.
Complete reference of all SEO validation rules used by this analyzer.
Download a branded, human-readable PDF summarizing every issue, warning, and suggestion - what's wrong, where, and how to fix it. Hand to a developer or stakeholder.
What's in the PDF?
- Cover page with score, grade, URL, and generation date
- Critical issues, warnings, and suggestions - each with the exact deduction value
- Successes (what's already working)
Download Fixed Code
Download a ZIP file with your corrected files. We preserve your existing code and only make targeted fixes - removing deprecated tags and adding missing essentials. An original/ folder is included for easy comparison.
What's Included
original/ folder with your current files for easy diff comparison
Important: Review Before Using
These files are generated automatically and may contain errors. Always review and test the generated code before deploying to your live site. Compare with your existing files and verify all changes are correct.
| Tag | Value | Status |
|---|
Why Head Tag Order Matters for Performance
The order of tags in your <head> directly impacts how fast browsers render your page. Place critical tags first for optimal performance.
Strongly Recommended Order
These are million dollar performance tips. Buy us a Coffee for these!
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 1. Charset & Viewport (The Physics) -->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 2. Title & Description (The Hook) -->
<title>Page Title</title>
<meta name="description" content="Your description here">
<!-- 3. Canonical (The Source of Truth) -->
<link rel="canonical" href="https://example.com/page">
<!-- 4. Robots & Sitemap (The Map) -->
<meta name="robots" content="index, follow">
<link rel="sitemap" type="application/xml" href="/sitemap.xml">
<!-- 5. Social Open Graph (The Share) -->
<meta property="og:title" content="Page Title">
<meta property="og:image" content="https://example.com/image.jpg">
<!-- 6. Icons & Theme (The Look) -->
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<meta name="theme-color" content="#ffffff">
<!-- 7. Preconnect (The Handshake) -->
<link rel="preconnect" href="https://www.google-analytics.com">
<!-- 8. Inline Analytics (The Blobs) -->
<script>/* Clarity / PostHog / GTM Setup Blob */</script>
<script async src="https://www.googletagmanager.com/gtag/js"></script>
<!-- 9. Visuals (Stability First) -->
<!-- Critical Layout Locks (Prevents Jumps) -->
<!-- Inline styles strictly for reserving container space to prevent Cumulative Layout Shift (CLS) during load -->
<style>
#home.container-xl { max-width: 1280px; }
@media (min-width: 992px) { .home-banner h1 { white-space: nowrap; } }
</style>
<!-- 10. Framework (The Foundation) -->
<!-- Bootstrap Core: Loads the structural grid and utility classes. 'fetchpriority=high'-->
<!-- signals the browser to prioritize this resource to paint the layout structure immediately -->
<link rel="stylesheet" href="/css/bootstrap.css" fetchpriority="high">
<!-- 11. Custom (The Identity) -->
<!-- Site-Specific Overrides: Loads your branding, colors, and tailwind/custom rules.-->
<!-- Placed *after* the framework to ensure your CSS rules correctly overwrite defaults via the cascade -->
<link rel="stylesheet" href="/styles.css">
<!-- 12. Logic (The Brains) -->
<!-- 12a. Libraries (Dependencies First) -->
<script src="/js/jquery-3.5.1.min.js" defer></script>
<script src="/js/bootstrap.bundle.min.js" defer></script>
<!-- 12b. Plugins (Visuals & Features) -->
<script src="/js/nswf.min.js" defer></script>
<script src="/js/headshot.js" defer></script>
<!-- 12c. Execution (Your Custom Code) -->
<script src="/js/theme.js" defer></script>
<script src="/js/main.js" defer></script>
<!-- 12d. Inline Config (Safe Wrapper) -->
<script>
// We wrap this in an event listener to ensure headshot.js (above) is loaded before this runs
document.addEventListener('DOMContentLoaded', function() {
if (typeof headshot !== 'undefined') {
headshot.initializeHeadShot("headshotThumb", {
allowClickToChange: true,
borderRadius: true,
glowAlways: true,
glowColor: "#5439F8"
});
}
});
</script>
<!-- 13. Structured Data (The Details) -->
<script type="application/ld+json">{ "@context": "https://schema.org" }</script>
</head> 1. Charset & Viewport
Must be first. Defines how the browser reads text (Charset) and scales the window (Viewport). If these aren't first, mobile browsers delay rendering to guess the zoom level.
2. Title & Description
Search crawlers parse top-down. You want your identity established immediately so the browser knows what to display in the tab and history.
3. Canonical URL
Crucial for preventing "duplicate content" SEO penalties. It tells Google: "Even if this page was loaded via a weird link, THIS is the official URL."
4. Robots & Sitemap
Explicitly telling bots to "index, follow" is safer than assuming they will. The sitemap link here ensures bots find your deep content even if they miss robots.txt.
5. Social Open Graph
Crucial for link previews. Slack and LinkedIn bots give up quickly; placing these high ensures your image and title appear correctly when shared.
6. Icons & Theme
Defines the browser tab icon and mobile address bar color. Placing these early prevents the "default icon" flicker, but they are non-blocking.
7. Preconnect
Warms up connections to external servers (like Google/Clarity) while your HTML is still parsing. Saves ~300ms of latency when the scripts below finally run.
8. Inline Analytics
The "Blob" scripts go here. They initialize the data layer instantly and trigger the file download before CSS blocks the page, ensuring parallel loading.
9. Visuals (Stability First)
This is purely for CLS (Cumulative Layout Shift). We use inline styles to reserve space for the main container immediately so the page doesn't "jump" when CSS loads.
10. Framework (The Foundation)
Bootstrap/Tailwind core goes here. We use fetchpriority="high" because the browser must paint this layout before anything else. It is the "skeleton" of the page.
11. Custom (The Identity)
Your styles.css must come after the framework. This protects the "Cascade" (the C in CSS), allowing your custom branding to override framework defaults without using !important.
12a. Libraries (Dependencies)
Order Matters: Bootstrap 4/5 requires jQuery to run. By placing jQuery first and using defer on both, we guarantee jQuery loads before Bootstrap executes, preventing console errors.
12b. Plugins (Features)
We removed your "Lazy Load" hack. Using defer allows the browser to download these files in parallel with the HTML (faster) but waits to run them until the page is ready (safer).
12c. Execution (Custom)
Your custom logic (theme.js, main.js) comes last. This ensures that when your code tries to use jQuery or a plugin, those libraries are already loaded and waiting.
12d. Inline Config
Since we kept the Headshot config in the HTML, we wrapped it in DOMContentLoaded. This tells the code: "Wait until all deferred scripts (above) are finished before trying to run this."
13. Structured Data
Pure JSON-LD data for Google. It has zero visual impact. Placing it last ensures it doesn't delay the browser from fetching visual assets like CSS or images.
Common Use Cases
SEO Audits
Comprehensive analysis of any page's meta tags, structured data, and SEO best practices.
Competitor Analysis
See how competitors structure their meta tags and what SEO techniques they use.
Pre-Launch Checks
Verify all SEO requirements are met before launching a new website or page.
Performance Optimization
Fix head tag ordering to improve page load performance and Core Web Vitals.
Deprecated Tag Cleanup
Find and remove deprecated meta tags like keywords that can hurt your SEO.
Team Reviews
Share analysis results with your team using direct links with the URL parameter.
WordPress SEO Audit
Get WordPress-specific recommendations with Yoast, Rank Math, and AIOSEO plugin detection.
E-Commerce SEO Check
Audit Shopify, WooCommerce, and Squarespace stores with platform-aware fix instructions.
Platform-Aware Analysis
Generic SEO Tools
- "Add a meta description to your HTML head section"
- "Remove the generator meta tag from your code"
- "Create a robots.txt file in your web root"
- No guidance on WHERE to make changes in your CMS
RJL.io Platform-Aware Analysis
- "In the Yoast SEO panel, click SEO tab and edit Meta description"
- "Add to functions.php: remove_action('wp_head', 'wp_generator')"
- "Shopify generates robots.txt automatically via robots.txt.liquid"
- Exact steps for your specific CMS and SEO plugin
Supported Platforms
Need to generate new meta tags?
Use our Meta Tag Generator to create optimized meta tags with live previews for Google, Facebook, and Twitter.
Frequently Asked Questions
Release Notes
aspect-ratio CSS and Tailwind aspect-* classes - Fixed false positive: images using inline
style="aspect-ratio: 16 / 9"are no longer flagged - the browser reserves layout fromaspect-ratiojust as well as fromwidth/heightattributes - Fixed false positive: images with a Tailwind aspect utility class (
aspect-square,aspect-video,aspect-auto,aspect-[4/3],aspect-[1.618]) are no longer flagged - Tailwind compiles these toaspect-ratioCSS - The CLS warning's "Fix:" line now lists all four accepted techniques (
width/heightattrs, inline width/height, inlineaspect-ratio, Tailwindaspect-*) instead of only the first two - so users know modern CSS is a valid answer - Custom CSS classes (anything that isn't a recognized Tailwind
aspect-*pattern) are still flagged - external stylesheets are opaque to a static-HTML analyzer, so this is intentional - If you're using
aspect-ratioon your responsive images, your score may go up on the next run
- New: Person and ProfilePage schemas are now recognized first-class types (personal sites and author pages finally earn the success bonus)
- New: Course / LearningResource validation for EdTech sites -
name,description,provider - New: ISO 8601 date format validation - flags
5/20/2026-style values that break rich-result eligibility - New:
dateModifiedearlier thandatePublishedis now flagged MODERATE (-3) - a classic copy/paste freshness bug - New: future-dated
datePublishedflagged MODERATE (-3) - usually means a broken publishing pipeline - New: Organization logo dimensions checked against Google's 112x112 Knowledge Graph minimum
- New:
sameAspresence suggestion for Organization and Person (E-E-A-T signal) - New: multiple JSON-LD blocks without any
@idget a deduplication hint so crawlers can link entities across blocks - New: sitemap freshness check - if the newest
<lastmod>is more than a year old, you'll see a 0-point note - New: H1 identical to
<title>hint - vary the H1 slightly to give crawlers a second descriptive signal - New:
color-schemeconsistency hint - if a darktheme-coloris set butcolor-schemeomitsdark, browsers won't apply it - New: apple-touch-icon size hint when the declared size isn't 180x180
- Recalibrated: hreflang on multi-language sites (2+ language tags, or
x-default+ a real language) is no longer flagged - only true single-language hreflang abuse is - Recalibrated:
twitter:image:alt,google-site-verification,msvalidate.01, and GIFog:imageare now 0-point recommendations instead of deductions - real-world usage doesn't deserve a penalty
- When the analyzer flags an image as missing
width/heightattributes, it now Range-fetches the file's first 2 KB and reads the intrinsic dimensions from the header - Each flagged image gets a literal
Suggested: width="X" height="Y"line you can copy straight into your tag - no guessing, no measuring tools, no opening the file in Photoshop - Works for any framework (Tailwind, Bootstrap, vanilla CSS, custom) - it parses the actual file bytes, not your stylesheet
- Supports PNG, JPEG, WebP (VP8/VP8L/VP8X), GIF, AVIF, and SVG
- URL-deduped across a crawl: a shared logo on 49 pages is fetched once, not 49 times
- Bounded parallelism (10 concurrent) and a 10-second per-request timeout keep crawls fast even on image-heavy sites
- Silent fallback if a fetch fails - the warning still fires, just without the Suggested line
- 21 FAQs grouped into 5 logical sections: What's New, Features, Scoring, CMS & Platforms, Privacy
- All groups collapsed by default except "What's New" - one click to scan, no scrolling fatigue
- Single-page mode: new "PDF Report" tab with one-click download - cover, score box, all findings, meta-tag appendix
- Full-crawl mode: multi-page PDF with average/min/max scores, table of contents, and a dedicated page per URL
- Built on the existing pdf-lib infrastructure - lazy-loaded so it doesn't bloat first-paint
- New:
llms.txtdiscoverability (the AI-era robots.txt, proposed by Anthropic Sep 2024) - New: AI crawler directive detection in robots.txt (GPTBot, ClaudeBot, Google-Extended, PerplexityBot, +8 more)
- New:
noai/noimageaiopt-out meta detection (Bing/Microsoft 2024 standard) - New: image
width/heightwarning (Cumulative Layout Shift prevention) - New: image
loading="lazy"recommendation for image-heavy pages - New: render-blocking
<script>detection in<head>(LCP/INP risk) - New: JSON-LD
speakableschema awareness for voice/AI readback - New: RSS / Atom / JSON Feed link detection (AI crawlers use feeds for freshness)
- Fixed:
mask-iconwas wrongly required - Safari 12 (2019) removed pinned tabs; now correctly flagged as deprecated - Fixed:
<meta generator>downgraded from MODERATE (-3) to MINOR (-2)
- Automatic CMS detection: WordPress, Shopify, Wix, Squarespace - confidence-scored from multiple signals
- WordPress SEO plugin sub-detection: Yoast SEO, Rank Math, All in One SEO
- AI fix prompts become platform-specific ("Go to Yoast SEO panel" instead of "edit HTML")
- Issues unfixable on a platform (e.g., head tag order on Wix) flagged with limitation notes
- CMS confidence badge added to results UI
- PWA-specific manifest checks now opt-in - informational sites no longer get penalized for skipping app-store-style install behavior
- Tries all 4 standard manifest filenames (site.webmanifest, manifest.json, manifest.webmanifest, app.webmanifest)
- Validates recommended 2026 PWA properties: id, description, scope, lang, screenshots
- Warns when manifest file exists but no
<link rel="manifest">tag is in HTML
- Analyzes up to 500 pages via sitemap.xml (handles sitemap-index nesting up to 3 levels)
- 2 concurrent requests with throttling - polite to your origin, fast to finish
- Consolidated AI Assistant prompt aggregates issues by type across all pages
- Pause / Resume / Cancel controls for long crawls
- New "AI Assistant" tab generates a structured markdown prompt for Claude, ChatGPT, Copilot, Cursor, etc.
- Copy to clipboard or save as a file - paste into your AI and it knows exactly what to fix
- 15+ schema types validated: WebSite, Organization, FAQPage, Article, Product, SoftwareApplication, BreadcrumbList, LocalBusiness, Event, Recipe, VideoObject, and more
- Schema-specific required-field checking (e.g., Article needs headline + datePublished; Product needs offers + price)
- Catches JSON syntax errors, missing @context / @type, wrong @context domain
- Generates a ZIP of surgically corrected files - head section, site.webmanifest, robots.txt, sitemap.xml
- Preserves your existing code; only removes deprecated tags and adds missing essentials
- Includes
original/folder so you can diff before deploying - Only includes files that actually need changes
- Initial release: meta tag validation, head tag order analysis, deprecated tag detection
- A+ to F letter grading with weighted severity (Critical -8, Major -5, Moderate -3, Minor -2)
- 100% client-side - no signup, no data stored
Only major SEO Analyzer milestones shown - patch and minor releases are omitted.
Why We Built SEO Analyzer
We eat our own dog food. After years of building websites and refining our internal SEO best practices, we decided to make the same tool we use ourselves available to everyone - completely free.
SEO tools are often overwhelming, expensive, or require account creation. We wanted a simple, fast, privacy-focused tool that checks what actually matters: are your meta tags correct, is your head properly ordered for performance, and are you using any deprecated practices?
Many developers don't realize that head tag order impacts performance. Charset must be first. Viewport must be early for mobile. Title and description should come before stylesheets. These ordering mistakes can add hundreds of milliseconds to page load times - and hurt Core Web Vitals.
But we didn't stop at analysis. Our new Download Fixed Code feature generates a ZIP file with surgically corrected versions of your files. We preserve your existing code and only make targeted fixes - removing deprecated tags and adding missing essentials. The ZIP includes your original files for easy comparison before deploying.
Platform-aware analysis changes everything. Most SEO tools tell WordPress users to "remove the generator meta tag" without explaining that WordPress adds it automatically, or tell Shopify users to "edit your robots.txt" when Shopify manages it through Liquid templates. We automatically detect your CMS platform and SEO plugin, then give you instructions that reference the exact admin panel, settings page, or theme file where you need to make changes. No more translating generic advice into platform-specific actions.
This SEO Analyzer runs 100% in your browser. Enter any URL and get instant analysis with actionable recommendations. No signup required. No data stored. Just useful insights to help you build better, faster websites.
Pair this tool with our Meta Tag Generator to create optimized meta tags with live previews showing exactly how they'll appear on Google, Facebook, and Twitter.