SEO for Indie Hackers: The 20-Minute Setup That Actually Works
Most SEO advice is written for content marketers with a 12-month editorial calendar. You are a developer shipping a product. You have 20 minutes. Here are the 5 things that actually move the needle, in the order you should do them.
Skip everything that does not move the needle
SEO has a terrible signal-to-noise ratio. Guides tell you to research 200 keywords, build a content cluster, and audit your backlink profile. That works for a 10-person marketing team. For a solo founder shipping v1, it is noise.
The things that actually matter for a new product site: proper metadata on every page, one piece of structured data, a sitemap, fast loading, and one or two articles targeting specific queries. Everything else can wait until you have traction.
1. Title and description on every page (5 minutes)
Every public page needs a unique title under 60 characters and a description under 160 characters. The title is the single strongest on-page ranking signal. Put the keyword near the front.
// app/(marketing)/page.tsx
export const metadata: Metadata = {
title: "SEOLint: AI-Powered SEO Audits for Developers",
description:
"Scan any URL for SEO issues. Get fix prompts you can paste into Claude or Cursor. Works as an MCP server, CLI, and API.",
alternates: { canonical: "/" },
}Do this for every page: homepage, pricing, blog posts, comparison pages. It takes 2 minutes per page and it is the single highest-ROI SEO task.
2. One H1 per page with your keyword (2 minutes)
Each page gets exactly one <h1>tag. It should contain the primary keyword you want that page to rank for. Not “Welcome” or “Home”. The actual term people search for.
Sub-sections use <h2> and <h3> in logical order. Never skip from H1 to H3. Google uses heading hierarchy to understand page structure, and AI models use it to decide which sections to cite.
3. JSON-LD structured data (5 minutes)
Structured data tells Google exactly what your page is. For a SaaS landing page, use SoftwareApplication. For a pricing FAQ, use FAQPage. This earns rich snippets in search results: star ratings, price displays, FAQ dropdowns.
// components/seo/JsonLd.tsx
export function JsonLd({ data }: { data: Record<string, unknown> }) {
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(data) }}
/>
)
}
// On your landing page
const schema = {
"@context": "https://schema.org",
"@type": "SoftwareApplication",
name: "YourProduct",
applicationCategory: "DeveloperApplication",
operatingSystem: "Web",
offers: {
"@type": "Offer",
price: "19.00",
priceCurrency: "EUR",
},
}Validate at search.google.com/test/rich-results. Fix errors before launching.
4. Sitemap and robots.txt (3 minutes)
A sitemap tells Google which pages exist and how important they are. Robots.txt tells crawlers where not to go. In Next.js, both are code files that deploy automatically.
// app/sitemap.ts
export default function sitemap(): MetadataRoute.Sitemap {
return [
{ url: "https://yoursite.com", priority: 1.0 },
{ url: "https://yoursite.com/pricing", priority: 0.8 },
{ url: "https://yoursite.com/blog/your-article", priority: 0.7 },
]
}
// app/robots.ts
export default function robots(): MetadataRoute.Robots {
return {
rules: { userAgent: "*", allow: "/", disallow: ["/dashboard/", "/api/"] },
sitemap: "https://yoursite.com/sitemap.xml",
}
}After deploying, submit your sitemap in Google Search Console. This is the single fastest way to get Google to index your pages.
5. Performance: load fast on mobile (5 minutes)
Core Web Vitals are a ranking signal. The good news: if you use Next.js with server components and do not load a heavy client-side framework, you are already 80% of the way there.
The quick wins that matter most:
- Use
next/fontinstead of Google Fonts links. It self-hosts the font and eliminates a render-blocking request. - Add
priorityto your hero image. This tells Next.js to preload it, which directly improves LCP. - Keep above-the-fold content in server components. Client components with heavy JS bundles push LCP later.
- Load analytics scripts with
deferorasync. Better yet, use Plausible, which is tiny and non-blocking by default.
Bonus: comparison pages rank fastest
If you want pages that rank within weeks instead of months, build comparison pages. URLs like /vs/ahrefs or /vs/semrushtarget high-intent keywords with specific search volume. People searching “X vs Y” or “X alternative” are comparing options and ready to switch.
Be honest about strengths and weaknesses. “We do X better, they do Y better” converts better than “We are better at everything”. Include a comparison table, FAQ section with FAQPage JSON-LD, and a clear CTA.
What to skip (for now)
Backlink outreach. You do not have time for this. Backlinks matter, but they come naturally from shipping useful things and writing about them. Your comparison pages and blog posts will earn links over time.
Keyword research tools. You do not need Ahrefs at $99/month to rank a new product. Google Search Console (free) shows you what queries your site appears for. That is enough for the first 6 months.
Content clusters and pillar pages. This is a strategy for sites with 50+ articles. You have 2. Write articles that target specific queries your product can answer. The cluster will form naturally.
Multilingual/i18n. Only add this after your product is validated in one language. Translating 10 pages adds maintenance burden that does not pay off until you have real traffic from that market.
The 20-minute checklist
FAQ
How long does it take for a new site to rank on Google?
For low-competition long-tail keywords, 2 to 8 weeks is typical. For competitive head terms, 6 to 12 months. The fastest path for indie hackers is targeting specific 'how to do X with Y' queries that larger sites ignore.
Do I need a blog to rank?
Not necessarily. Your homepage and comparison pages (/vs/competitor) can rank well on their own. A blog helps when you target specific long-tail keywords like 'how to check SEO in GitHub Actions'. Write articles that target keywords your product pages cannot.
Should I use Google Analytics or something simpler?
Use something simpler. Plausible ($9/month) gives you page views, referrers, and conversion events without cookies, consent banners, or GDPR complexity. You can always add GA4 later if you need it. For an indie product, Plausible plus Google Search Console covers everything.
Check if you missed anything
SEOLint scans your site and tells you exactly what to fix. Takes 30 seconds.