From 0 to 30 indexed pages in 3 weeks — what actually moved the needle
I'm building Convertify — a free image converter that supports 20+ formats with no signup, no limits, and no file tracking. Solo project, built with Rust + libvips on the backend and Next.js on the frontend.
Three weeks ago Google had indexed exactly 0 pages. Here's what I changed and what actually worked.
The starting point: a Vite SPA that Google couldn't read
The original version was a classic React SPA bundled with Vite. Fast to build, great DX — and completely invisible to Google. Googlebot would hit the page, get an empty HTML shell, and move on. No content to index.
The fix was straightforward in theory: migrate to Next.js App Router with SSG. In practice it took a few days, but the result was 186 fully rendered static pages generated at build time — one for every format combination the tool supports.
That alone got me from 0 to around 16 indexed pages in the first two weeks. But then growth stalled.
What actually moved the needle in week 3
1. Schema markup on every page
I added FAQPage + HowTo JSON-LD schema to every converter page. Not just one or two — all 186.
The FAQPage schema answers the questions people actually ask: "What is HEIC?", "Will my photos lose quality?", "How long does conversion take?". The HowTo schema describes the conversion steps in structured format Google can parse.
Result: impressions jumped, and GSC started showing the pages in rich result eligibility.
2. Content expansion from ~500 to 5000–7000 characters
This was the most time-consuming part. Each landing page went from a thin paragraph to a full article: format comparison tables, browser support matrices, compression benchmarks, use case explanations, and a 6–8 question FAQ.
Thin content is invisible. Google doesn't rank pages that don't say anything useful. The pages that got indexed first were the ones with the most content.
3. Internal linking cluster (RelatedConversions component)
I built a RelatedConversions component that appears on every converter page and links to 8–10 related conversions. For example, /heic-to-jpg links to /heic-to-png, /jpg-to-webp, /png-to-jpg, and so on.
This does two things: it passes PageRank between pages in the same cluster, and it gives Googlebot a clear crawl path through the entire site. Before this, pages were islands. After this, they're a connected graph.
4. About page with E-E-A-T signals
Google's helpful content guidelines care about who is writing the content. I added an About page with Person schema (name, job title, links to dev.to articles) and WebSite schema with a sitelinks search box.
It's not a magic ranking factor, but it signals to Google that there's a real person behind the site — not a content farm.
Results after 3 weeks
| Metric | Week 0 | Week 3 |
|---|---|---|
| Indexed pages | 0 | 30 |
| GSC impressions (7d) | 0 | 160 |
| Unique search queries | 0 | 45 |
| PageSpeed (mobile) | — | 100/100 |
30 indexed out of 186 total means Google is still crawling. The indexing curve is moving in the right direction — pages that got schema + expanded content are getting indexed first.
Positions are averaging around 55, which means page 5–6. Clicks come when you hit the top 10. That's the next phase.
What didn't work (or not yet)
Backlinks — I have ~47 linking domains in Ahrefs, but most are toxic spam (pharma sites, fake testimonial networks). Real quality backlinks: about 3–5. This is the biggest gap right now.
Reddit — posted in r/webdev and r/juststart, both got auto-removed. New accounts trigger spam filters regardless of content quality. Building karma through comments first before trying posts again.
Impressions without clicks — 160 impressions at position 55 means the pages are being seen but aren't competitive yet. More content depth and backlinks should push positions into the top 20, where CTR starts to matter.
What's next
- Push
/heic-to-jpgand/avif-to-jpgto 1000+ words with full schema (these are the highest-volume queries) - Get HN karma to 10+ and do a Show HN post
- Outreach to "best free image converters 2026" listicle authors for genuine backlinks
- Track whether internal linking cluster improves crawl coverage in GSC
Stack
- Backend: Rust + Axum + libvips (image processing)
- Frontend: Next.js 16 App Router, SSG
- Database: PostgreSQL (landing page content)
- Infrastructure: VPS + Caddy + PM2
The site: convertifyapp.net — no signup, no limits, 20+ formats.
Top comments (0)