Vibecode WeTransfer

track this build5 phases, 10 steps, beginner friendly
YES · one-shottable
price $8/moyou'd save $96/yrbuild time one sittingcategory 💾 cloud storagereplaced by 0 people

Upload to object storage, mint a link, expire it. With client-side encryption you get the privacy WeTransfer never had. Their moat is bandwidth at scale and the brand a client trusts when a link arrives; for your own sends, a $5 bucket and a page does it.

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

Large-file transfer on a bucket you pay cents for: uploads go straight to object storage with presigned URLs, links expire and count downloads, optional passwords, and optional client-side encryption with the key in the URL fragment so the server never sees it.

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 |
| --- | --- | --- |
| Storage | Cloudflare R2 or Backblaze B2 with presigned URLs | files never pass through your server |
| Runtime | Node 22, node:http and node:sqlite | link records and the page |
| Encryption | Web Crypto in the browser, optional | privacy WeTransfer never had |

## 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
- [ ] **An S3-compatible bucket with access keys and CORS** · cents to a few dollars a month
  - Why: Direct browser uploads need CORS on the bucket.
  - Get it: R2: create bucket, API token, and set CORS to allow PUT from your domain. B2: similar under bucket settings.
- [ ] **A small always-on server (VPS)** (optional) · about $5 a month
  - Why: This needs one process running all the time with a public address. The page and link table need a small always-on process.
  - Get it: Hetzner Cloud (from about 4 EUR), DigitalOcean or Fly.io. Ubuntu 24.04, the smallest size. You need SSH access and a public IP. Only needed for the deploy phase; develop locally first.
- [ ] **A domain or subdomain** (optional) · roughly $10 a year, or free on an existing domain
  - Why: send.yourdomain.com
  - 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 send && cd send && git init && npm init -y && npm pkg set type=module && npm install @aws-sdk/client-s3@3 @aws-sdk/s3-request-presigner@3
mkdir -p data && 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:

- Worldwide CDN bandwidth, the brand, email delivery and receipts, the apps.
- bandwidth and speed on their CDN worldwide
- the brand a recipient recognises
- email delivery of the link and download receipts
- the mobile apps and Paste

If one of those is essential to you, that is the reason to keep paying for WeTransfer, 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

Because a WeTransfer link is something a client opens without asking what it is, and their bandwidth is not on your bill.

what you lose

xbandwidth and speed on their CDN worldwide

xthe brand a recipient recognises

xemail delivery of the link and download receipts

xthe mobile apps and Paste

prior art · use these instead of building, if you'd ratherSendencrypted file sharing, the continued Firefox Send
share on X ↗"I just replaced WeTransfer ($8/mo) with one prompt"
the numbers

WeTransfer pricing

starter$8/mo · monthly flat · $96/yr

free tierThe free plan allows 10 transfers or 3 GB in any 30-day window.

verified 2026-09-04 · source ↗

questions
Is WeTransfer free?

The free plan allows 10 transfers or 3 GB in any 30-day window. Paid is Starter at $8/mo (checked 2026-09-04).

Vibecode WeTransfer

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

How much does WeTransfer cost?

WeTransfer costs about $8/month (Starter, checked 2026-09-04), which is $96 per year. That's what you save by replacing it with one prompt.

What do I lose by replacing WeTransfer?

Honestly: bandwidth and speed on their CDN worldwide; the brand a recipient recognises; email delivery of the link and download receipts; the mobile apps and Paste. If any of those are load-bearing for you, keep paying.

Is there an open-source alternative to WeTransfer?

Yes: Send (encrypted file sharing, the continued Firefox Send). Using prior art is also vibecoding; the prompt is for when you want it exactly your way.