DEV Community

Musadiq's Code
Musadiq's Code

Posted on

5 Python tools I built to solve my own problems — no signup, no watermark, no BS

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:

  1. No signup — it works on first visit
  2. No watermark — ever
  3. No file storage — processed in memory, discarded immediately
  4. No daily limits — free forever

https://dailyprotasks.com


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
  • pdftoppm not existing on Windows (fixed by switching to pypdfium2)

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")
Enter fullscreen mode Exit fullscreen mode

Top comments (0)