Technical SEO Audit Checklist for Modern Web Applications: What Crawlers Actually See A developer published a technical SEO audit checklist for modern web applications, focusing on what crawlers actually see. The guide covers robots.txt configuration, sitemap generation, canonical URLs, structured data, Core Web Vitals, and meta tags, with code examples for Laravel apps. You shipped a beautiful web application. Clean code, smooth UX, fast on your machine. Then you check Google Search Console and realize your pages are barely indexed, your structured data is throwing errors, and half your canonical tags are pointing to the wrong URLs. Sound familiar? Technical SEO is the unsexy foundation that either unlocks or blocks all the content work you do on top of it. This audit checklist is built for developers — not marketers — so we'll go deep on the implementation details, not just the theory. Before anything else, you need to verify that Googlebot can actually find and read your pages. Your robots.txt lives at the root of your domain. A common mistake in Laravel apps is accidentally blocking crawlers in production because someone copied a staging config. User-agent: Disallow: /admin/ Disallow: /api/ Allow: / Sitemap: https://yourdomain.com/sitemap.xml Verify it at https://yourdomain.com/robots.txt and test specific URLs using Google Search Console's URL Inspection tool. Your sitemap should include all canonical, indexable URLs — nothing behind auth walls, nothing with noindex . In Laravel, the spatie/laravel-sitemap package makes this straightforward: php use Spatie\Sitemap\Sitemap; use Spatie\Sitemap\Tags\Url; Sitemap::create - add Url::create '/blog' - setLastModificationDate now - setChangeFrequency Url::CHANGE FREQUENCY DAILY - setPriority 0.8 - writeToFile public path 'sitemap.xml' ; Don't just generate it once — hook it into your deployment pipeline or schedule it via php artisan schedule:run . Duplicate content is one of the most common technical SEO issues, especially in e-commerce and CMS-driven apps. URL variations like ?ref=newsletter , ?sort=price , or trailing slash inconsistencies all create duplicate signals.