Vibecode Urlbox

track this build5 phases, 10 steps, beginner friendly
YES · one-shottable
price $19/moyou'd save $228/yrbuild time one sittingcategory 🖼️ screenshotsreplaced by 0 people

Playwright renders any page to a PNG or PDF in one call. A queue and a cache around it is a sitting. The hard parts the service sells are blocking cookie banners and ads reliably, scale, and not babysitting a browser fleet.

the project pack5 files · written for this build, step by step
README.md
# Urlbox · indie build

A screenshot API with Playwright: render any URL to PNG or PDF with viewport, full-page and device-scale options, refuse private addresses, sign requests, cache results, queue concurrency, and keep a browser fleet of one healthy.

Estimated effort: **one sitting**. Work `BUILD_PLAN.md` top to bottom · every phase ends in a check that has to pass before the next one starts.

## Stack

| Part | Choice | Why |
| --- | --- | --- |
| Browser | Playwright with Chromium | renders anything; the fleet is the cost |
| Runtime | Node 22, node:http, sharp | one process with a page pool |
| Hosting | A VPS with 2 GB of RAM | Chromium |

## Before you start

Have every one of these ready. The plan assumes them from step one.

- [ ] **Node.js 22 or newer** · free
  - Why: Everything in this build runs on it: the server, the scripts, the tests.
  - Get it: Download the LTS installer from nodejs.org, or install with your package manager (brew install node, or nvm install 22). Restart the terminal afterwards.
  - Verify: node --version prints v22 or higher
- [ ] **A terminal and a code editor** · free
  - Why: Every step below is a command you type or a file you edit.
  - Get it: VS Code (code.visualstudio.com), Cursor or Zed. Open a folder for the project and use the editor's built-in terminal.
  - Verify: You can open a folder and run a command in its terminal
- [ ] **Git** · free
  - Why: History for your code, and the way most hosts deploy.
  - Get it: Install from git-scm.com or with your package manager, then run git init in the project folder once it exists.
  - Verify: git --version prints a version
- [ ] **A VPS with at least 2 GB of RAM** · about $6 a month
  - Why: Chromium needs it.
  - Get it: Hetzner CX22 or similar.
- [ ] **Playwright with Chromium and system dependencies** · free, a few hundred MB
  - Why: The renderer.
  - Get it: npm install playwright && npx playwright install --with-deps chromium
  - Verify: npx playwright --version prints
- [ ] **An HMAC signing key** · free
  - Why: Signed requests only.
  - Get it: openssl rand -hex 32.
- [ ] **A domain or subdomain** (optional) · roughly $10 a year, or free on an existing domain
  - Why: A public address you own, so links you share never break when a provider changes.
  - Get it: Register at Cloudflare Registrar, Porkbun or Namecheap, or use a subdomain of one you already own. You add one DNS record in the deploy phase.
- [ ] **Caddy on the server** (optional) · free
  - Why: Automatic HTTPS in front of the Node process. Without TLS the browser features this relies on (and your visitors' trust) do not work.
  - Get it: On the VPS: follow the install steps at caddyserver.com/docs/install for Ubuntu. One Caddyfile with your domain and a reverse_proxy line is the whole config.
  - Verify: caddy version prints a version on the server

## Quick start

```sh
mkdir shotapi && cd shotapi && git init && npm init -y && npm pkg set type=module && npm install playwright@1 sharp@0.35.3
mkdir -p renders && cp .env.example .env
```

Then copy `.env.example` to `.env` and fill in the values it documents.

## Honest limits

This build deliberately does not replace:

- Web-scale reliability against every banner and anti-bot wall.
- reliable cookie-banner and ad blocking across the web
- scale and concurrency without managing browsers
- the CDN and retina rendering polish
- the SLA

If one of those is essential to you, that is the reason to keep paying for Urlbox, and the README should say so rather than pretend.

$ choose a build depth, inspect the files, then open the complete pack in your agent

why people still pay

A headless browser fleet is a pet that bites at 3am. Paying to never own one is rational above a few thousand renders.

what you lose

xreliable cookie-banner and ad blocking across the web

xscale and concurrency without managing browsers

xthe CDN and retina rendering polish

xthe SLA

prior art · use these instead of building, if you'd ratherPlaywrightbrowser automation, renders pages to images and PDFs
share on X ↗"I just replaced Urlbox ($19/mo) with one prompt"
questions
Vibecode Urlbox

Yes. A competent AI coding agent (Claude Code, Codex, Cursor) can build a usable personal Urlbox replacement in one session with the prompt on this page. It runs on your own machine or server with no subscription.

How much does Urlbox cost?

Urlbox costs about $19/month (Lo-Fi, checked 2026-09-04), which is $228 per year. That's what you save by replacing it with one prompt.

What do I lose by replacing Urlbox?

Honestly: reliable cookie-banner and ad blocking across the web; scale and concurrency without managing browsers; the CDN and retina rendering polish; the SLA. If any of those are load-bearing for you, keep paying.

Is there an open-source alternative to Urlbox?

Yes: Playwright (browser automation, renders pages to images and PDFs). Using prior art is also vibecoding; the prompt is for when you want it exactly your way.