Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
121 changes: 121 additions & 0 deletions apps/website/app/content/blog/ryot-pricing-is-changing/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
---
title: Ryot's prices are going up. Yours isn't.
description: From 9 August 2026, Ryot Pro costs more. If you already pay for it, your price does not change - not now, not at any future increase.
publishedAt: 2026-08-09
properties:
labels:
- ryot
- pricing
- self hosting
---

export const tableOfContents = [
{ id: "the-new-prices", label: "The new prices", depth: 2 },
{ id: "why-i-am-doing-this", label: "Why I am doing this", depth: 2 },
{
id: "what-this-means-if-you-already-pay",
label: "What this means if you already pay",
depth: 2,
},
{ id: "questions", label: "Questions", depth: 2 },
];

From 9 August 2026, Ryot Pro costs more than it used to. Cloud goes from $3 to $6 a
month. Self-hosted goes from $2 to $4.

If you are already paying for Ryot, none of that applies to you. You keep the price you
signed up at, for as long as your subscription stays active. There is nothing you need
to do, nothing to migrate, and no action required on your side.

## The new prices

Ryot Pro is sold in two product types, and both are changing. All amounts are in USD and
exclusive of any taxes that apply where you live.

**Cloud**, hosted by me at [ryot.io](https://ryot.io):

- Monthly: $3 becomes $6
- Yearly: $30 becomes $50

**Self-hosted**, where you run Ryot on your own server:

- Monthly: $2 becomes $4
- Yearly: $20 becomes $35
- Lifetime: $60 becomes $120

Self-hosting Ryot itself is still free. The application is open source, and this change
does not move any existing free functionality behind the paid tier. Pro is a layer on
top of that, and it stays optional.

## Why I am doing this

The old prices were not the result of a calculation. I set them when Ryot was a side
project I maintained between other things, and I picked numbers that felt small enough
that nobody would think twice about them. $3 a month was priced to be ignored. It was
never priced to pay for anything.

What it actually has to pay for became clearer over time. Servers and databases for the
cloud version. Bills from the external data providers Ryot queries for every movie, book,
show, and game you track. Payment processing, which takes a fixed cut per transaction and
therefore eats a genuinely silly percentage of a $3 charge. Support, which is me, most
days, before and after other work.

The larger reason is the one I wrote about in
[why I am rewriting Ryot](/blog/why-i-am-rewriting-ryot). That rewrite is a bet - roughly
2000 commits of it - that Ryot is worth building properly rather than maintaining
indefinitely in whatever hours are left over. I want to work on it full time. I want the
bug you report to be fixed that week, not whenever I next surface. I want to keep the
cloud version running for years without quietly hoping the hosting bill stays small.

At $3 a month, that arithmetic never closes. At $6 it starts to. That is the whole
reason, and I would rather say it plainly than dress it up as an improvement to your
plan.

## What this means if you already pay

Everything below is policy, not a promotion. It is the same commitment described on the
[pricing promise](/pricing-promise) page, and it applies to this price change and to
every one after it.

- **If your subscription started before 9 August 2026**, you keep that exact rate for as
long as the subscription stays active. Your renewals continue to be charged at the
price you originally signed up at. I do not move existing customers onto new pricing.
- **If you bought a lifetime license**, it is yours permanently. No renewal, no expiry,
nothing to re-purchase.
- **If you cancel and later come back**, you return at whatever the price is then. The
old rate belongs to the old subscription and does not survive it.
- **If you are new**, the prices above are what you pay, and the same promise applies to
you from your first payment onwards.

I would rather charge new customers more than break the deal I made with the people who
paid for this first.

## Questions

**Will my renewal be charged at the new price?**

No. An active subscription keeps renewing at the rate it started on.

**Do I need to do anything to keep my price?**

No. Nothing changes on your account, and there is no form to fill or plan to re-select.
Keeping your subscription active is the entire requirement.

**What if I cancel and resubscribe later?**

You come back at the price current on that day. If you are unsure about cancelling, it
is worth knowing that this is the one thing that ends the old rate.

**I bought a lifetime license. Is it affected?**

Not at all. Lifetime means lifetime.

**Does this change anything about self-hosting Ryot for free?**

No. The open source application stays free to self-host, and nothing that is free today
moves behind Pro because of this change.

**Something on my bill looks wrong. What do I do?**

Send it through the [contact form](/#contact) with the address you signed up with, and I
will look at it directly.
4 changes: 4 additions & 0 deletions apps/website/app/drizzle/migrations/0008_yielding_carnage.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ALTER TABLE "customer_purchase" ADD COLUMN "payment_provider" "payment_provider";--> statement-breakpoint
ALTER TABLE "customer_purchase" ADD COLUMN "provider_price_id" text;--> statement-breakpoint
ALTER TABLE "customer_purchase" ADD COLUMN "provider_product_id" text;--> statement-breakpoint
CREATE INDEX "customer_purchase_provider_lookup_idx" ON "customer_purchase" USING btree ("payment_provider","provider_price_id","provider_product_id","cancelled_on");
Comment thread
IgnisDa marked this conversation as resolved.
Comment thread
IgnisDa marked this conversation as resolved.
Loading