I built 5 free image tools because I was tired of "free" tools asking for my email
Every few weeks I hit the same wall: I need to remove a background, upscale a photo, compress a PNG, or convert a file. I open Google, click the first result, and get hit with the same pattern:
- "Enter your email to download"
- A watermark that wasn't there in the preview
- A 3-per-day limit that magically unlocks with a $9/month subscription
- A privacy policy that says they keep my uploads
I got tired of it. So over the last few weeks I built my own.
Today I'm launching DailyProTasks — 5 free image/file tools with a set of rules I set for myself:
- No signup — it works on first visit
- No watermark — ever
- No file storage — processed in memory, discarded immediately
- No daily limits — free forever
What's in it
| Tool | What it does |
|---|---|
| ✂️ Background Remover | AI cutouts in ~3s, single + bulk (20 files), ZIP download |
| 🔍 Image Upscaler | 2× or 4× enlargement using Real-ESRGAN |
| 📦 Image Compressor | Hit a target KB with lossless or lossy modes |
| 🔁 File Converter | 15+ formats: JPG, PNG, WebP, HEIC, GIF, TIFF, BMP, PDF, JSON, CSV, XLSX, XML, YAML |
| 📄 PDF Generator | Combine images into one PDF, A4/Letter/original |
The stack
- Backend: FastAPI + Python 3.12
- ML: U²-Net (background removal), Real-ESRGAN (upscaling)
- Image: Pillow + OpenCV
- Proxy: nginx (reverse proxy + static file serving)
- Hosting: AWS EC2 t3.micro on Windows Server 2025
- SSL: Let's Encrypt via win-acme
- Services: NSSM (runs uvicorn + nginx as Windows services)
- Frontend: Vanilla HTML/CSS/JS with a service worker for PWA support
3 hard lessons I learned
1. Windows Server 2025 on EC2 will fight you
Every tutorial on the internet assumes Linux. I picked Windows Server because I know Windows better. Big mistake for a first deploy — but I learned a lot.
Two days lost to:
- RDP locking me out whenever my home IP changed (fixed by switching to Session Manager)
- Windows Firewall rules not persisting after reboots
-
pdftoppmnot existing on Windows (fixed by switching topypdfium2)
Lesson: If you're deploying a Python web app in 2026 and don't specifically need Windows, use Ubuntu.
2. ML models eat RAM on a $7/month server
The first version loaded rembg's U²-Net model at import time. That pushed uvicorn from 150 MB to 700 MB. On a t3.micro with 1 GB RAM, that's game over — Windows killed the RDP service under memory pressure.
Fix: lazy loading with lru_cache:
python
from functools import lru_cache
@lru_cache(maxsize=1)
def _get_session():
from rembg import new_session
return new_session("u2net")

Top comments (0)