What I Actually Pay to Run a One-Person Web Business in 2026
Part of Making Money From a Small Site and Small Business Websites
By Paul Peery · August 8, 2026 · 6 min read

Heads up: this post contains affiliate links — if you buy through one, I may earn a commission at no extra cost to you. How that works
The most dangerous number in a one-person business isn't a big one. It's the total of all the "it's only ten bucks a month" decisions — each defensible on its own, collectively a car payment you're making to nobody. So once a year I do this in public: every paid line in my stack, what it earned me, and whether it survives the next renewal.
One thing before the list: nobody on this page pays me — I pay them — which is exactly why I trust my own verdicts enough to publish them. If a word in this post links to one of my deal pages, that's my own coupon catalog doing its usual job, not a vendor buying a verdict. (The full tool list, free stuff included, lives on my uses page.)
Every line has to name what it earned
Not "might need it later." Not "everyone uses it." Each subscription below gets the same three-part treatment — what it does for this site specifically, what breaks tomorrow if I cancel, and the verdict. If I can't answer the first two concretely, the verdict writes itself.
What I renew without flinching
The domain. [Registrar and rough yearly cost — fill in.] Everything else on this list is replaceable with notice and a migration weekend. The domain is the business. It renews on auto-pay and I'd sooner cancel the coffee.
Vercel — hosting. [Plan and price — fill in.] What it earns: I push code and the site is live minutes later, it stores every uploaded image and product file, and it runs the daily background job that archives dead deals, sends deal alerts, and prunes old logs while I sleep. That deploy loop is the closest thing this business has to an employee. Verdict: renew.
Neon — the database. [Plan and price — fill in.] Every post, deal, member, and payment record lives here, and the feature that earns the fee is the one I hope never to use: point-in-time recovery. My backup strategy is, in full, "the database can be rewound to any moment in the last [retention window — check what your plan actually gives you]."
I've built a content export as a second parachute, but the recovery plan of record is Neon's, not mine. Paying for a well-run database beats being an unpaid database administrator. Verdict: renew.
Resend — transactional email. [Tier — fill in.] Password-reset and email-verification links, comment notifications, saved-deal expiry alerts, purchase receipts, my weekly digest.
The part worth underlining is deliverability. My own health dashboard checks the SPF, DKIM, and DMARC records on my sending domain, but Resend is a large part of why those emails land in inboxes instead of spam folders. An email the member never sees is worse than no email — it's a password reset that silently fails. Verdict: renew.
Kit — the newsletter. [Tier and price — fill in; if it's still priced by list size, say so.] The argument for this line is the argument for email itself: the list is the only audience I own outright — no algorithm change or platform lockout can take it. [Link the email-platforms post here.]
The honest part: the fee runs whether or not I'm mailing that list well, so this is the line I re-read most at renewal. The month it stops earning its keep, that's a me problem, not a Kit problem — but it's still money out. Verdict: renew, re-argued annually.
AI is a utility bill, not a subscription
The AI in my workflow — draft assists in the site's editor, generated cover images, the semantic layer behind site search — runs on API keys billed per call, not per month: Claude, GPT, Gemini, Grok. What keeps that honest is that the site logs its AI calls with token counts and an estimated cost, so my AI spend is a number I read on my own admin dashboard, not a vibe. Most months it totals [fill in — for me it's been closer to a utility bill than a salary].
The surprise on the metered list: X's API. Sharing a new post there — one deliberate click in my editor, never automatic — costs real money per post. Small money, but it's the only network on my share list that charges me to send it traffic, which tells you something. The others haven't charged me anything.
AI coding tools are their own budget line and their own argument — I wrote up what I pay for and would renew separately. [Link the AI coding tools post here.]
Stripe: the vendor that only earns when I do
Not a subscription at all — on the pay-as-you-go pricing I'm on, Stripe takes a cut of each shop sale, tip, membership, and client deposit, and a quiet month costs nothing. That's the healthiest incentive on this page, and it's rare: most of the industry wants me on a flat monthly line precisely because flat lines get forgotten.
Zero-dollar lines that would be subscriptions on someone else's stack
Some of the best entries in this budget are the zeros:
- Components and icons. My component library is open-source code that lives in my own repository — nobody can raise the price on it. The icons are open source too.
- Design software. There's no line at all — the design is code I own, and the covers come out of the metered AI bill above. [If you pay for any design tool, add it honestly here.]
- Bot protection. A honeypot, a time trap, and rate limits I built myself, plus Cloudflare Turnstile on top [confirm it's enabled on your keys and still free at your usage].
- Analytics. Google Analytics, plus — more importantly — click and view counters in my own database, which I treat as the source of truth.
- Uptime. The site exposes a public health endpoint that any free uptime checker can watch.
Six subscriptions I refused to start
Fighting subscription creep mostly doesn't look like cancelling things. It looks like recurring bills that never began — and each of these was a real decision on this site, settled by building the boring version myself:
- A charting SaaS. My dashboard graphs are a small hand-rolled SVG bar chart. It does exactly one thing, forever, for free.
- An ad network. AdSense turned me down. Instead of chasing another network, I built a tiny house-ads system that serves my own banners for my own deals and services. No ad network will ever mail me a check — the only money in it is my own pages converting — but it costs nothing monthly, ships zero third-party scripts, and every click routes through my own tracked links.
- A social-share widget. Share buttons on my posts are plain links I wrote once. The widget vendors' real price is slower pages and tracking I don't want.
- A hosted billing portal. "Cancel your membership" on my site is a toggle I built myself rather than configuring — and carrying the moving parts of — a hosted portal.
- A vector database. The semantic search under the hood stores its embeddings as plain rows in the Postgres I already pay for. At my scale, the specialized version is a subscription looking for a problem.
- An automation platform. The Zapier-shaped glue work — archive old deals, email alerts, prune logs — is one scheduled job I wrote, not another metered bill.
[If you cut any actual subscriptions this year — tools you stopped paying for — name them here with what replaced them. That's the section readers will trust most, and only you know it.]
Three questions before every renewal
Same three questions, every line:
- What did this earn or save in the last 30 days — specifically? Name the feature you used, not the category it belongs to.
- What breaks tomorrow if I cancel? If the honest answer is "nothing for months," cancel now, not at renewal.
- Could I build the boring version myself? Every time I've answered yes and built it, the boring version is still running — that's where the chart, the share buttons, and the cancel toggle came from.
The one-paragraph version: my whole paid stack is a domain, hosting, a database, two email services, and a metered AI bill — [total it here] a month, all-in. Everything else is either free, code I own, or a bill I declined to start. Treat every subscription like a hire: it should show up to work every month, you should be able to say what it did, and when it can't answer, let it go.
Keep reading
All postsComments
No comments yet — be the first!
