How do you rate-limit a free tier when there are no accounts to rate-limit?
I have a free tier that costs me real money every time someone uses it, and no way
of knowing who's using it. I'm looking for the least invasive way to cap it.
The background: I took the account requirement off the front of my product a few
weeks ago. You can now use the expensive part of it without signing in, and you only
make an account at the point where you'd want to keep the output. That change has
worked better than the version with a wall on the front of it.
The part I didn't think through: the expensive part costs me per run, and now I have
no identity attached to any of those runs.
What I've tried.
IP limits. Simplest thing, and it's what I shipped. It breaks in both directions. An
office, a university, a shared mobile carrier — that's a lot of separate people
behind one address, and the first one through the door locks out the rest. Anyone
who actually wants around it changes network and carries on.
Cookie and localStorage counters. Cleared trivially, so they only stop the people who
weren't trying. Not worthless, but a speed bump rather than a limit.
Browser fingerprinting. Would probably work. I don't want to do it. It feels like a
worse thing to do to a stranger than asking them to sign in, which is the exact thing
I just removed.
Where I'm actually stuck is that I can't tell abuse from enthusiasm. Someone running
it eight times in an hour is either draining the budget or is the most interested
person who's visited all month, and from the server side those two are identical. So
I've set the cap low, which almost certainly punishes the second one.
Two things I'd like from anyone who's run this:
1. If you've had an anonymous free tier that costs you per use, what did you limit on
in the end, and what did it cost you in false positives? I'd rather hear what broke
than what worked.
2. Was there any pre-signup signal that separated a real person from a scraper? I
have request timing and I don't trust it.
Entirely willing to be told the answer is "put the wall back". If that's the
consensus I'd want to know what changed your mind, because the difference in how
people behave on the way in has been the most noticeable thing I've shipped this
year.
Replies
I've run into this too. the annoying part is that strict limits often hit your best users first.