DEV Community

Cover image for How I Built 65 Free Browser Tools in 2 Weeks Using AI (AstroJS + Cloudflare)
Pranjal Srivastava
Pranjal Srivastava

Posted on

How I Built 65 Free Browser Tools in 2 Weeks Using AI (AstroJS + Cloudflare)

The Problem

Every time I needed a quick tool online,
the same loop:

  1. Search for free PDF compressor
  2. Find a promising site
  3. Hit a sign-up wall or paywall
  4. Repeat for every tool

I got tired of it. So I built CrispToolHub —
a hub of 65+ free browser-based tools.

What I Built

crisptoolhub.com — 70 pages, 65+ tools:

  • 📄 PDF Toolkit (10 tools using pdf-lib + PDF.js)
  • 📝 Resume & Career (10 tools with Gemini AI)
  • 🖼️ Image Tools (7 tools with WASM)
  • 💰 Financial Calculators (20 calculators)
  • 👨‍💻 Developer Tools (6 tools)
  • ✏️ Text Tools (6 tools)
  • 📏 Ruler & Compass

Tech Stack

  • AstroJS v6 — MPA (no SPA), static build
  • Tailwind CSS v4 — styling
  • Cloudflare Pages — hosting (free)
  • Cloudflare Workers — Gemini AI proxy
  • Google Gemini 2.5 Flash — AI features
  • pdf-lib — PDF manipulation
  • PDF.js — PDF rendering
  • @imgly/background-removal — WASM AI
  • Mammoth.js — Word doc parsing

How AI Helped

I used Claude Code (Anthropic) for the entire
development. The workflow:

  1. Write detailed specs for each tool
  2. Claude Code reads CLAUDE.md (project bible)
  3. Builds the tool following all conventions
  4. Runs tests automatically
  5. Deploys via Cloudflare Pages

This reduced development time from months to weeks.

Key Technical Decisions

MPA over SPA: Every page is a full reload.
Better SEO, better performance, simpler code.

Everything client-side: All processing happens
in the browser. No servers, no file uploads,
complete privacy. PDF.js renders PDFs, WASM
removes backgrounds, pdf-lib manipulates PDFs.

Lazy loading: Heavy libraries (PDF.js, WASM,
mammoth) only load when user clicks a button.
Initial page load is near-instant.

Currency system: 6-currency toggle (USD/INR/
EUR/GBP/AED/SAR) with canonical USD base value
to prevent rounding drift.

Lessons Learned

  1. Trailing slashes matter for SEO — Google
    Search Console showed redirect errors for /ruler
    without trailing slash. Fixed with
    trailingSlash: "always" in Astro config.

  2. Mobile file upload is different
    Blob.arrayBuffer() fails on iOS Safari.
    Solution: FileReader API universally works.

  3. Gemini thinking models — gemini-2.5-flash
    is a thinking model. Without thinkingBudget: 0,
    it burns all tokens on reasoning and returns
    empty response.

  4. PDF.js workers on mobile — Web Workers
    fail on mobile browsers. Solution: CDN worker
    fallback with version matching.

Results After 3 Days

  • 1,900 active users
  • 55% US traffic
  • Top pages: Mortgage Calculator, Resume Builder
  • 70 pages indexed on Google

What's Next

  • Google AdSense (pending approval)
  • Premium subscriptions (₹199/month)
  • AI-powered reports (resume, finance)
  • Video tools

Try It

https://crisptoolhub.com — completely free,
no account needed.

Would love feedback from the dev community —
what tools are missing? What would you build next?


Built with AstroJS + Cloudflare + Claude Code

Top comments (0)