The Problem
Every time I needed a quick tool online,
the same loop:
- Search for free PDF compressor
- Find a promising site
- Hit a sign-up wall or paywall
- 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:
- Write detailed specs for each tool
- Claude Code reads CLAUDE.md (project bible)
- Builds the tool following all conventions
- Runs tests automatically
- 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
Trailing slashes matter for SEO β Google
Search Console showed redirect errors for /ruler
without trailing slash. Fixed with
trailingSlash: "always" in Astro config.Mobile file upload is different β
Blob.arrayBuffer() fails on iOS Safari.
Solution: FileReader API universally works.Gemini thinking models β gemini-2.5-flash
is a thinking model. Without thinkingBudget: 0,
it burns all tokens on reasoning and returns
empty response.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)