A month ago, my solo project batchset.com had basically zero search traffic. This week it crossed 20 organic clicks in a 28-day window and is climbing toward 30 — with $0 in ads.
Tiny numbers, I know. But the direction (15 → 20 → 30) is the point, and it didn't come from luck. It came from a few deliberate engineering decisions. Here's what actually moved the needle, in case it helps another dev shipping a side project.
1. Make the tools work without a server
BatchSet is an image + marketing toolkit. The interesting constraint I set early: anything that can run in the browser, should. No upload, no round-trip, no account.
Here's what that means in practice — all of this runs 100% client-side:
- Image conversion (JPG/PNG/WebP/GIF/BMP/SVG → WebP/JPG/PNG), single or bulk, parallelized across CPU cores with Web Workers
- Social media resizer — exact preset dimensions for 8 platforms
- QR code generator — URL, WiFi, vCard, email → PNG/SVG
- Barcode generator — EAN-13, UPC-A, Code128 and more
- PDF ↔ Image — images→PDF and PDF→images, via pdf.js / pdf-lib
The only things that touch a server are the ones that physically can't run in the browser: HEIC/TIFF decoding, fetching image URLs from an uploaded Excel sheet, and link-click analytics.
Two wins fell out of this one decision:
- Speed — no server latency means the tools feel instant, and fast pages are both a ranking signal and a UX win.
- A real differentiator — "your files never leave your browser" is something people actually search for, and it's true here.
2. Programmatic SEO for tool + comparison pages
Instead of one generic landing page, every tool gets its own route (/tools/jpg-to-webp, /tools/bulk-image-converter, …) with a unique title, description, and FAQ targeting one keyword cluster each.
Same for comparison pages (/vs/cloudconvert, /vs/tinypng). People literally Google "X vs Y" before picking a tool — so I gave Google a page that answers exactly that query.
3. Structured data on everything
Each tool page ships JSON-LD: BreadcrumbList, SoftwareApplication, FAQPage, and HowTo. The FAQ schema is the cheap win — it can earn rich results and pulls long-tail questions ("can I convert HEIC?", "are my files uploaded?") straight into search.
json
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{ "@type": "Question", "name": "...", "acceptedAnswer": { "@type": "Answer", "text": "..." } }
]
}
Top comments (0)