DEV Community

Jack Green
Jack Green

Posted on • Originally published at screenshot.jackgreen.top

I Paid $30/Month for Xnapper — Then Built a Free Alternative in One HTML File

I wasted $360 on Xnapper last year. $30/month for a macOS app that adds pretty backgrounds to screenshots.

Then I realized: it's just CSS gradients and canvas drawing. No server. No account. No subscription.

So I built Screenshot Beautifier — a free, client-side alternative that runs in any browser.

The Problem

Xnapper is great at what it does. But:

  • $30/month — that's $360/year for a tool that manipulates pixels
  • macOS only — Windows and Linux users are out of luck
  • Upload required — your screenshots go to their servers
  • Account wall — create an account just to beautify a screenshot

What I Built

Screenshot Beautifier does the same thing, differently:

  • Free demo — drag a screenshot, add a background, export. Done.
  • $9 one-time for HD export — cheaper than ONE month of Xnapper
  • 100% client-side — your screenshots never leave your browser
  • Works everywhere — Chrome, Firefox, Safari, Edge on any OS
  • No account — just open the URL and go

How It Works

It's surprisingly simple. The entire app is one HTML file with inline CSS and JavaScript:

  1. Drag & drop — loads the image into a hidden <img> element
  2. Canvas API — draws the screenshot onto a canvas with your chosen background, shadow, and frame
  3. Exportcanvas.toBlob() downloads the result as PNG

The device frame presets (macOS window, browser window, phone) are just rectangles drawn on canvas before the screenshot. The blur backgrounds use CSS backdrop-filter on the canvas element.

Zero libraries. Zero dependencies. One HTML file.

Why This Matters

Screenshot tools are utilities, not products. You shouldn't pay monthly for something that boils down to ctx.drawImage().

This tool proves that simple utilities should be simple: free, fast, private, and works offline.

Try it at screenshot.jackgreen.top — no signup, no upload, no cost.

Top comments (0)