SEO Audit Checklist 2026 — DataGate.ch

:root {
–bg: #0f1117;
–surface: #1a1d27;
–surface2: #242836;
–border: #2e3348;
–accent: #6c63ff;
–accent2: #ff6b9d;
–accent3: #00d4aa;
–text: #e4e6f0;
–text2: #8b8fa8;
–danger: #ff4757;
–warning: #ffa502;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, ‚Segoe UI‘, system-ui, sans-serif;
background: var(–bg);
color: var(–text);
min-height: 100vh;
line-height: 1.6;
}
.header {
background: linear-gradient(135deg, #1a1d27 0%, #0f1117 100%);
border-bottom: 1px solid var(–border);
padding: 2rem 1.5rem 1.5rem;
text-align: center;
}
.header h1 {
font-size: 1.8rem;
background: linear-gradient(135deg, var(–accent), var(–accent2));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 0.5rem;
}
.header p { color: var(–text2); font-size: 0.95rem; max-width: 600px; margin: 0 auto; }
.container { max-width: 860px; margin: 0 auto; padding: 1.5rem; }

/* Progress bar */
.progress-section {
background: var(–surface);
border: 1px solid var(–border);
border-radius: 12px;
padding: 1.25rem;
margin-bottom: 1.5rem;
}
.progress-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 0.75rem;
font-size: 0.9rem;
}
.progress-header .label { color: var(–text2); }
.progress-header .score {
font-weight: 700;
font-size: 1.1rem;
}
.progress-bar-bg {
background: var(–surface2);
border-radius: 8px;
height: 10px;
overflow: hidden;
}
.progress-bar-fill {
height: 100%;
border-radius: 8px;
background: linear-gradient(90deg, var(–danger), var(–warning), var(–accent3), var(–accent));
transition: width 0.5s ease;
}
.score-badge {
display: inline-block;
padding: 0.25rem 0.75rem;
border-radius: 20px;
font-size: 0.8rem;
font-weight: 600;
margin-top: 0.75rem;
}
.score-badge.red { background: rgba(255,71,87,0.15); color: var(–danger); }
.score-badge.orange { background: rgba(255,165,2,0.15); color: var(–warning); }
.score-badge.green { background: rgba(0,212,170,0.15); color: var(–accent3); }
.score-badge.purple { background: rgba(108,99,255,0.15); color: var(–accent); }

/* Category sections */
.category {
background: var(–surface);
border: 1px solid var(–border);
border-radius: 12px;
margin-bottom: 1rem;
overflow: hidden;
}
.category-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 1.25rem;
cursor: pointer;
user-select: none;
transition: background 0.2s;
}
.category-header:hover { background: var(–surface2); }
.category-title {
display: flex;
align-items: center;
gap: 0.75rem;
font-weight: 600;
font-size: 1rem;
}
.category-icon {
width: 32px;
height: 32px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1rem;
flex-shrink: 0;
}
.category-icon.tech { background: rgba(108,99,255,0.15); }
.category-icon.content { background: rgba(255,107,157,0.15); }
.category-icon.links { background: rgba(0,212,170,0.15); }
.category-icon.social { background: rgba(255,165,2,0.15); }
.category-icon.mobile { background: rgba(100,200,255,0.15); }
.category-icon.schema { background: rgba(200,165,255,0.15); }
.category-meta {
display: flex;
align-items: center;
gap: 0.5rem;
color: var(–text2);
font-size: 0.85rem;
}
.category-count {
background: var(–surface2);
padding: 0.15rem 0.5rem;
border-radius: 10px;
font-size: 0.75rem;
}
.category-body { padding: 0 1.25rem 1rem; display: none; }
.category.open .category-body { display: block; }
.toggle-arrow { transition: transform 0.2s; font-size: 0.8rem; }
.category.open .toggle-arrow { transform: rotate(180deg); }

/* Checklist items */
.checklist-item {
display: flex;
align-items: flex-start;
gap: 0.75rem;
padding: 0.65rem 0;
border-bottom: 1px solid rgba(46,51,72,0.5);
}
.checklist-item:last-child { border-bottom: none; }
.checklist-item input[type=“checkbox“] {
appearance: none;
-webkit-appearance: none;
width: 20px;
height: 20px;
border: 2px solid var(–border);
border-radius: 6px;
cursor: pointer;
flex-shrink: 0;
margin-top: 2px;
position: relative;
transition: all 0.2s;
}
.checklist-item input[type=“checkbox“]:checked {
background: var(–accent3);
border-color: var(–accent3);
}
.checklist-item input[type=“checkbox“]:checked::after {
content: ‚✓‘;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: #0f1117;
font-size: 12px;
font-weight: 700;
}
.item-text { flex: 1; }
.item-label {
font-size: 0.9rem;
cursor: pointer;
transition: color 0.2s;
}
.checklist-item.checked .item-label {
color: var(–text2);
text-decoration: line-through;
}
.item-desc {
font-size: 0.78rem;
color: var(–text2);
margin-top: 0.15rem;
}
.priority-tag {
font-size: 0.65rem;
padding: 0.1rem 0.45rem;
border-radius: 4px;
font-weight: 600;
text-transform: uppercase;
flex-shrink: 0;
margin-top: 3px;
}
.priority-tag.critical { background: rgba(255,71,87,0.15); color: var(–danger); }
.priority-tag.high { background: rgba(255,165,2,0.15); color: var(–warning); }
.priority-tag.medium { background: rgba(108,99,255,0.15); color: var(–accent); }
.priority-tag.low { background: rgba(139,143,168,0.15); color: var(–text2); }

/* Export section */
.export-section {
background: var(–surface);
border: 1px solid var(–border);
border-radius: 12px;
padding: 1.25rem;
margin-top: 1.5rem;
text-align: center;
}
.export-section h3 { margin-bottom: 0.5rem; font-size: 1rem; }
.export-section p { color: var(–text2); font-size: 0.85rem; margin-bottom: 1rem; }
.btn {
display: inline-block;
padding: 0.6rem 1.5rem;
border-radius: 8px;
font-size: 0.9rem;
font-weight: 600;
cursor: pointer;
border: none;
transition: all 0.2s;
text-decoration: none;
}
.btn-primary {
background: linear-gradient(135deg, var(–accent), #8b80ff);
color: #fff;
}
.btn-primary:hover { opacity: 0.9; transform: translateY(-1px); }
.btn-secondary {
background: var(–surface2);
color: var(–text);
border: 1px solid var(–border);
margin-left: 0.5rem;
}
.btn-secondary:hover { background: var(–border); }

/* Summary cards */
.summary-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
gap: 0.75rem;
margin-bottom: 1.5rem;
}
.summary-card {
background: var(–surface);
border: 1px solid var(–border);
border-radius: 10px;
padding: 1rem;
text-align: center;
}
.summary-card .number {
font-size: 1.8rem;
font-weight: 700;
background: linear-gradient(135deg, var(–accent), var(–accent2));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.summary-card .label { font-size: 0.8rem; color: var(–text2); margin-top: 0.25rem; }

/* Footer */
.footer {
text-align: center;
padding: 2rem 1rem;
color: var(–text2);
font-size: 0.8rem;
}
.footer a { color: var(–accent); text-decoration: none; }

/* Responsive */
@media (max-width: 600px) {
.header h1 { font-size: 1.4rem; }
.summary-grid { grid-template-columns: repeat(2, 1fr); }
}

🔍 SEO Audit Checklist 2026

Reviewed: June 4, 2026

Interactive technical & content SEO audit tool. Check off items as you go, track your score, and export your report.

0
Total Checks

0
Completed

0
Remaining

0
Critical Left

Overall SEO Health Score
0%

Needs Work

⚙️

Technical SEO

0/0

Site uses HTTPS (SSL certificate valid)
Ensure all pages redirect from HTTP to HTTPS with no mixed content warnings.

Critical

XML sitemap exists and is submitted to Google Search Console
Sitemap should include all important pages and be updated automatically.

Critical

Robots.txt is properly configured
Should allow crawling of important pages and block admin/private areas.

Critical

Page load speed under 3 seconds (Core Web Vitals)
Check LCP, FID/INP, and CLS scores in PageSpeed Insights.

High

Mobile-friendly responsive design
All pages should render correctly on mobile devices. Test with Google’s Mobile-Friendly Test.

High

No broken links (404 errors)
Run a crawler to find and fix all internal and external broken links.

High

Canonical tags properly set on all pages
Prevents duplicate content issues by specifying the preferred URL.

Medium

Clean URL structure (no parameters, readable slugs)
URLs should be short, descriptive, and use hyphens as separators.

Medium

Hreflang tags for multilingual sites
If serving multiple languages, hreflang annotations are essential.

Medium

📝

On-Page & Content SEO

0/0

Unique title tags (50-60 chars) on every page
Each page should have a descriptive, keyword-rich title tag under 60 characters.

Critical

Unique meta descriptions (150-160 chars) on every page
Compelling meta descriptions improve click-through rates from search results.

Critical

H1 tag present and unique per page
One H1 per page containing the primary keyword. Use H2-H6 for subheadings.

High

Image alt text on all images
Descriptive alt text helps with accessibility and image search rankings.

High

Content is original and not duplicated
No duplicate content across pages. Use canonical tags if similar content exists.

High

Keyword in URL slug
Primary keyword should appear naturally in the page URL.

Medium

Internal links to related content (3-5 per page)
Link to relevant pages to distribute page authority and help users navigate.

Medium

Content length appropriate for topic (1500+ words for pillar pages)
Comprehensive content tends to rank better. Aim for depth over thin content.

Medium

Table of contents on long-form content
Helps users navigate and can generate sitelinks in search results.

Low

Social & Brand Signals

0/0

Open Graph tags on all pages
og:title, og:description, og:image, og:url for proper social sharing.

Medium

Twitter Card meta tags
twitter:card, twitter:title, twitter:description, twitter:image for X/Twitter.

Medium

Active social media profiles with links to website
Maintain consistent branding and link back to your site from all profiles.

Medium

Brand mentions monitoring (Google Alerts, Mention.com)
Track unlinked brand mentions and reach out for link opportunities.

Low

📲

Mobile & User Experience

0/0

Core Web Vitals pass (LCP <2.5s, INP <200ms, CLS <0.1)
Google uses these as ranking factors. Test with PageSpeed Insights.

High

No intrusive interstitials on mobile
Pop-ups that block content on mobile can hurt rankings.

High

Touch-friendly navigation (buttons >48px)
Ensure all interactive elements are easily tappable on mobile devices.

Medium

Readable font sizes without zooming (16px+ body text)
Text should be legible on all screen sizes without requiring pinch-to-zoom.

Medium

Accelerated Mobile Pages (AMP) or equivalent
Consider AMP for content-heavy pages to improve mobile load times.

Low

🏷️

Schema Markup & Structured Data

0/0

Organization schema on homepage
Include name, logo, URL, and social profiles for brand knowledge panel.

High

Article/BlogPosting schema on all blog posts
Include headline, author, datePublished, dateModified, and image.

High

BreadcrumbList schema for navigation
Helps search engines understand site structure and can show breadcrumbs in SERPs.

Medium

FAQ schema on FAQ pages
Can generate rich results with expandable FAQ snippets in search results.

Medium

Validate all schema with Google Rich Results Test
Test every page with structured data to ensure no errors or warnings.

Medium

Product/Service schema (if applicable)
Add product name, price, availability, and reviews for e-commerce.

Low

📊 Export Your Audit Report

Generate a text summary of your SEO audit progress to share with your team.


// Priority weights for scoring
const WEIGHTS = { critical: 5, high: 3, medium: 2, low: 1 };

function toggleCategory(id) {
document.getElementById(‚cat-‚ + id).classList.toggle(‚open‘);
}

function updateProgress() {
const items = document.querySelectorAll(‚.checklist-item‘);
let total = 0, checked = 0;
let totalWeight = 0, checkedWeight = 0;
let criticalTotal = 0, criticalChecked = 0;
const catCounts = {};

items.forEach(item => {
const cat = item.closest(‚.category‘);
const catId = cat ? cat.id.replace(‚cat-‚, “) : ‚unknown‘;
const priority = item.dataset.priority || ‚medium‘;
const weight = WEIGHTS[priority] || 1;
const cb = item.querySelector(‚input[type=“checkbox“]‘);
const isChecked = cb.checked;

total++;
totalWeight += weight;
if (!catCounts[catId]) catCounts[catId] = { total: 0, checked: 0 };
catCounts[catId].total++;

if (isChecked) {
checked++;
checkedWeight += weight;
catCounts[catId].checked++;
item.classList.add(‚checked‘);
} else {
item.classList.remove(‚checked‘);
}

if (priority === ‚critical‘) {
criticalTotal++;
if (isChecked) criticalChecked++;
}
});

const pct = total > 0 ? Math.round((checkedWeight / totalWeight) * 100) : 0;

// Update summary cards
document.getElementById(‚total-items‘).textContent = total;
document.getElementById(‚checked-count‘).textContent = checked;
document.getElementById(‚remaining-count‘).textContent = total – checked;
document.getElementById(‚critical-remaining‘).textContent = criticalTotal – criticalChecked;

// Update progress bar
document.getElementById(’score-display‘).textContent = pct + ‚%‘;
document.getElementById(‚progress-fill‘).style.width = pct + ‚%‘;

// Update badge
const badge = document.getElementById(’score-badge‘);
if (pct < 30) {
badge.textContent = 'Needs Work';
badge.className = 'score-badge red';
} else if (pct < 60) {
badge.textContent = 'Getting There';
badge.className = 'score-badge orange';
} else if (pct {
state[‚item_‘ + i] = cb.checked;
});
localStorage.setItem(’seoAudit2026′, JSON.stringify(state));
}

function loadState() {
const saved = localStorage.getItem(’seoAudit2026′);
if (!saved) return;
try {
const state = JSON.parse(saved);
document.querySelectorAll(‚.checklist-item input[type=“checkbox“]‘).forEach((cb, i) => {
if (state[‚item_‘ + i]) cb.checked = true;
});
updateProgress();
} catch(e) {}
}

function exportReport() {
const items = document.querySelectorAll(‚.checklist-item‘);
let report = ‚SEO AUDIT REPORT — ‚ + new Date().toLocaleDateString() + ’n‘;
report += ‚=‘.repeat(50) + ’nn‘;

let currentCat = “;
let total = 0, checked = 0;

items.forEach(item => {
const cat = item.closest(‚.category‘);
const catTitle = cat ? cat.querySelector(‚.category-title‘).textContent.trim() : “;
if (catTitle !== currentCat) {
currentCat = catTitle;
report += ’n## ‚ + catTitle + ’n‘;
}
const cb = item.querySelector(‚input[type=“checkbox“]‘);
const label = item.querySelector(‚.item-label‘).textContent;
const priority = item.querySelector(‚.priority-tag‘) ? item.querySelector(‚.priority-tag‘).textContent : “;
const status = cb.checked ? ‚✅‘ : ‚⬜‘;
total++;
if (cb.checked) checked++;
report += status + ‚ [‚ + priority + ‚] ‚ + label + ’n‘;
});

const pct = total > 0 ? Math.round((checked / total) * 100) : 0;
report += ’n‘ + ‚=‘.repeat(50) + ’n‘;
report += ‚SCORE: ‚ + checked + ‚/‘ + total + ‚ (‚ + pct + ‚%)n‘;
report += ‚Generated by DataGate.ch SEO Audit Tooln‘;

const blob = new Blob([report], { type: ‚text/plain‘ });
const url = URL.createObjectURL(blob);
const a = document.createElement(‚a‘);
a.href = url;
a.download = ’seo-audit-report-‚ + new Date().toISOString().slice(0,10) + ‚.txt‘;
a.click();
URL.revokeObjectURL(url);
}

function resetAll() {
if (!confirm(‚Reset all checkboxes? This cannot be undone.‘)) return;
document.querySelectorAll(‚.checklist-item input[type=“checkbox“]‘).forEach(cb => {
cb.checked = false;
});
localStorage.removeItem(’seoAudit2026′);
updateProgress();
}

// Initialize
loadState();

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert