How to Audit Your Website's SEO and Performance
Most websites have SEO and performance problems they don't know about. Missing meta descriptions, broken heading hierarchies, images without alt text, slow load times, poor Core Web Vitals. These issues silently cost you rankings, traffic, and conversions every day.
A proper audit finds these problems systematically. Instead of guessing what to fix, you get a prioritized list of issues and their impact. The problem is that manual audits are tedious and tools like Lighthouse only cover performance, not the full SEO picture.
What a Complete Page Audit Covers
A thorough audit checks everything that affects how search engines and users experience your page:
Meta Tags
- Title tag — exists, unique, 50-60 characters, includes target keyword
- Meta description — exists, 150-160 characters, compelling CTA
- Open Graph tags — og:title, og:description, og:image for social sharing
- Twitter cards — twitter:card, twitter:title for Twitter previews
- Canonical URL — prevents duplicate content issues
Heading Structure
- Exactly one H1 per page
- Logical hierarchy (no jumping from H2 to H4)
- Keywords in H1 and H2 headings
- No empty headings
Images
- Alt text on every image (accessibility and SEO)
- Reasonable file sizes (not serving 5MB hero images)
- Modern formats (WebP, AVIF) where possible
Performance / Core Web Vitals
- LCP (Largest Contentful Paint) — under 2.5s
- CLS (Cumulative Layout Shift) — under 0.1
- TTFB (Time to First Byte) — under 800ms
- Total page weight and request count
Mobile Readiness
- Viewport meta tag present
- Responsive design (no horizontal scrolling)
- Touch targets sized appropriately
Running Audits Manually
You can piece together an audit using multiple tools:
- Google Lighthouse — performance and accessibility scores
- Google Search Console — indexing issues and Core Web Vitals
- Browser DevTools — network tab for page weight, Elements for heading structure
- Manual checks — view source for meta tags, check images for alt text
This takes 15-30 minutes per page and doesn't scale. If you have 50 pages, that's a full week of auditing.
The API Approach: PageAudit
PageAudit runs a comprehensive audit in one API call. It loads your page in a real browser, analyzes everything listed above, and returns a score with prioritized recommendations.
curl "https://pageaudit.grabshot.dev/v1/audit?url=https://your-site.com" \
-H "X-Api-Key: pa_your_key"
Response includes:
- Overall score (0-100) with letter grade (A-F)
- Meta tag analysis — what's present, what's missing, length checks
- Heading structure — full H1-H6 hierarchy with issues flagged
- Image audit — alt text coverage percentage
- Core Web Vitals — LCP, CLS, TTFB measurements
- Page weight — total bytes, request count, load time
- Mobile check — viewport tag, responsive meta
- Prioritized recommendations — what to fix first for maximum impact
Node.js Example
const resp = await fetch(
'https://pageaudit.grabshot.dev/v1/audit?url=https://your-site.com',
{ headers: { 'X-Api-Key': 'pa_your_key' } }
);
const audit = await resp.json();
console.log(`Score: ${audit.score}/100 (${audit.grade})`);
console.log(`Load time: ${audit.performance.loadTime}ms`);
console.log(`Page weight: ${(audit.performance.totalBytes / 1024).toFixed(0)}KB`);
// Show top recommendations
audit.recommendations.forEach((rec, i) => {
console.log(`${i + 1}. [${rec.priority}] ${rec.message}`);
});
Bulk Auditing
// Audit your entire sitemap
const sitemap = ['/', '/pricing', '/docs', '/blog', '/about'];
const results = await Promise.all(
sitemap.map(path =>
fetch(`https://pageaudit.grabshot.dev/v1/audit?url=https://your-site.com${path}`, {
headers: { 'X-Api-Key': 'pa_your_key' }
}).then(r => r.json())
)
);
// Find worst-performing pages
results
.sort((a, b) => a.score - b.score)
.forEach(r => console.log(`${r.url}: ${r.score}/100`));
Audit Your Site for Free
Get a full SEO and performance report in seconds. 25 free audits per month.
Try PageAudit FreeWhat to Fix First
Not all audit findings are equal. Here's the priority order for maximum SEO impact:
- Missing title tags or meta descriptions — these directly affect click-through rates from search results. Fix immediately.
- No H1 or multiple H1s — search engines use H1 as a strong relevance signal. Every page needs exactly one.
- Slow LCP (over 2.5s) — Core Web Vitals are a ranking factor. Usually caused by large images or slow server response.
- Missing image alt text — affects both accessibility and image search rankings. Easy to add, often neglected.
- Missing Open Graph tags — won't affect search rankings directly, but social sharing drives significant traffic. A page shared without an OG image gets far fewer clicks.
Automating Audits
The real power of an audit API is automation. Set up weekly audits on your key pages and track scores over time. You'll catch regressions immediately instead of discovering them months later when rankings drop.
// Weekly audit cron job
const pages = ['/', '/pricing', '/docs'];
const results = [];
for (const page of pages) {
const audit = await runAudit(`https://your-site.com${page}`);
results.push({ page, score: audit.score, grade: audit.grade });
if (audit.score < 70) {
// Alert: this page needs attention
console.warn(`LOW SCORE: ${page} = ${audit.score}/100`);
}
}
// Save results for trend tracking
Wrapping Up
Most SEO problems are invisible until you look for them systematically. An audit turns the invisible into a checklist. Whether you run audits manually, build your own tooling, or use PageAudit, the important thing is to audit regularly and fix what you find.
More from GrabShot
- Visual Regression Testing (DiffShot)
- Find Broken Links (LinkCheck)
- Detect Website Fonts (FontSpy)
- Best Screenshot APIs in 2026 (GrabShot)
- HTML to PDF API Guide (PDFMagic)
📧 Developer API Tips
Get practical API tutorials and tools. No spam, unsubscribe anytime.