How Aave Interest Rates Work: A Non-Developer’s Deep Dive
How Aave Interest Rates Work: A Non-Developer’s Deep Dive
I deposited some USDC into Aave on a Tuesday and expected a steady yield. By Thursday the rate had moved. Nobody emailed me. No committee met. The number just changed on its own.
That confused me for a week. So I sat down and figured out how Aave interest rates work — and it turned out my mental model was the problem, not the protocol. There is no banker setting your APY. There is a formula, and it reacts to a single number.
This is the deep dive I wish I’d read first. I’ll break down that formula, show you the curve every Aave rate rides on, tell you what broke for me, and give you a five-minute check to run before you deposit. No price talk, no predictions — just the system.
The one-sentence version
Aave interest rates are set by code, not people. A formula ties each rate to utilization — the share of deposited funds currently borrowed. Low utilization means cheap loans and thin yields. High utilization means expensive loans and fatter yields. Your APY is an output, not a promise.
That’s the whole idea. Everything below is just unpacking it.
Why I needed to understand this
I came in with a savings-account model in my head. Deposit money, earn a fixed rate, check back later. That model is wrong, and it cost me a week of confusion.
A bank sets your savings rate by decision. It changes a few times a year, and you get a notice. An Aave interest rate moves by reaction. It can change in the same block as the next big borrow. The rate isn’t a policy. It’s a thermometer.
Once I stopped expecting a savings account and started reading a thermometer, the whole thing made sense. So let’s look at what the thermometer is measuring.
The number everything hangs on: utilization
Utilization is the share of a pool that’s been borrowed. If suppliers have put in 1,000 USDC and borrowers have taken out 900, utilization is 90%.
The formula is plain:
Utilization = total borrowed ÷ total supplied
Aave watches this per asset, and it updates on every transaction. A large new loan pushes utilization up. A big repayment or a fresh deposit pulls it back down. Nothing else moves the rate directly. This one ratio drives all of it.

So the question stops being “what rate is Aave paying?” and becomes “how much of this pool is already lent out?” That reframe is the entire point of the deep dive.
The kink: the Aave interest rate curve in two slopes
Here’s where the design gets clever. Aave doesn’t raise the rate smoothly as utilization climbs. It uses two slopes joined at a bend the protocol calls the optimal utilization point — and everyone else calls the kink.
Below the kink, the rate rises gently. The protocol wants borrowing here; it’s healthy. Above the kink, the rate rises steeply, almost violently. The protocol is now nervous — too much of the pool is lent out, and suppliers who want to withdraw might not be able to.
Take DAI on Ethereum as a worked example. Its parameters have been set to roughly: an optimal utilization of 80%, a base rate of 0%, a first slope of 4%, and a second slope of 75%. Read what that means. From 0% to 80% utilization, the borrow rate crawls from 0% up to about 4%. Push past 80%, and that second slope of 75% kicks in — the rate can rocket toward 79% as the pool approaches fully lent out.

That steep wall isn’t a bug. It’s the steering wheel. A near-vertical rate above the kink does two things at once: it makes borrowing painful enough that some borrowers repay, and it makes supplying attractive enough that new deposits arrive. Both push utilization back below the kink. The curve heals itself, without anyone steering it by hand.
So when I saw my rate move overnight, this is what had happened. A wave of borrowing had pushed utilization toward the kink, and the curve did exactly what it was built to do.
Where your deposit yield actually comes from
Suppliers don’t get paid by Aave. They get paid by borrowers. Aave just routes the money and takes a cut.
The supply rate works out roughly like this:
Supply rate ≈ borrow rate × utilization × (1 − reserve factor)
Two things in that line explain a lot of beginner confusion.
First, utilization sits right in the middle. If only half the pool is borrowed, suppliers split the interest from borrowers across the whole pool — so the yield on your deposit is far lower than the rate borrowers pay. Low utilization is great for borrowers and disappointing for suppliers. That gap is structural, not a glitch.
Second, the reserve factor is the protocol’s cut. It’s a percentage skimmed off the top and sent to the Aave treasury, and it varies by asset. It’s the reason your supply APY is always meaningfully below the borrow APY, even at high utilization.

This is why I’d parked USDC and earned almost nothing. The pool’s utilization was low. There simply weren’t enough borrowers to pay me. I’d blamed the protocol when the answer was sitting in one ratio I hadn’t checked.
Variable only: what happened to stable rates
For a while, Aave let you borrow at a “stable” rate — a rate that held steadier than the variable one. Newcomers loved the idea, because it sounded like the fixed loan they already understood.
It’s gone now. Aave temporarily switched off stable-rate borrowing in late 2023 after a security issue, and governance then moved to deprecate it fully, retiring the legacy stable-rate logic through 2024. Today, Aave borrowing is variable. Existing stable positions were migrated to variable rates.
I mention this because I wasted real time hunting for a “lock in my rate” button that no longer exists. If you read an old tutorial promising a stable borrow rate on Aave, it’s out of date. Plan around a variable rate, full stop.
What broke (for me)
Three things broke, and each one taught me a piece of the model.
I assumed “stablecoin” meant “stable rate.” It doesn’t. I held a stablecoin, USDC, whose price barely moves. But the interest rate on it rides the same utilization curve as anything else. A stable price and a stable rate are unrelated. I’d merged two ideas that have nothing to do with each other.
I tried to lock in a yield, then panicked when it dropped. I deposited during a brief high-utilization window, saw a nice APY, and treated it as my rate. A day later borrowers repaid, utilization fell, and my yield sank with it. I almost yanked my funds in frustration. The yield hadn’t been taken from me — it had never been fixed in the first place.
I confused the two APYs on the screen. Aave shows a borrow APY and a supply APY, and early on I read the wrong one and overestimated what I’d earn. The borrow number is always the bigger, louder one. The supply number — the one that actually applies to a depositor — is smaller, because of utilization and the reserve factor.
None of these were Aave failing. All three were me bringing a bank’s mental model to a machine that doesn’t work like a bank.
The mistakes I see non-developers make
Once I understood my own errors, I started noticing them everywhere — in forums, in comments, in questions friends asked me. They cluster into four.
| Mistake | Why it happens | The fix |
|---|---|---|
| Treating supply APY as fixed | Bank-savings mental model | Re-read it as a live function of utilization |
| Ignoring utilization before depositing | The dashboard shows APY first, utilization second | Check utilization before you read the rate |
| Chasing the highest APY | High yield looks like free money | High supply APY usually means high utilization — and withdrawal risk |
| Reading borrow APY as your yield | Two numbers, similar layout | Confirm you’re reading the supply row |
The fourth row is worth a beat. A very high supply APY is often a warning, not a gift. It usually means utilization is near the kink, which means a lot of the pool is already lent out — and if you ever want to withdraw, you might have to wait for borrowers to repay first.
A five-minute check before you deposit
This is the routine I run now. It’s not advice about whether to deposit — that’s your call. It’s a literacy check so the rate never surprises you again.
- Read the current utilization for the asset, not just the APY. It’s the number that drives everything else.
- Find the optimal utilization (the kink) for that asset. If current utilization is already near or past it, expect a volatile rate.
- Check the reserve factor. It tells you how big a cut the protocol takes before you see a cent.
- Sanity-check the supply APY against utilization. If the yield looks high while utilization is low, you’re probably reading the borrow row by mistake.
- Decide with the curve in mind. A rate near the kink can move fast in both directions. Know that going in.
Five minutes. No code, no spreadsheet. Just the same ratio, read on purpose instead of by accident. If you want to go deeper on reading raw protocol numbers, I covered the groundwork in how to read on-chain data.
Where this framework falls short
I’d be repeating my own mistake if I sold you certainty here.
The Aave interest rate parameters I used — that 80% kink, the 4% and 75% slopes — are illustrative, and they’re set per asset by Aave governance. They change. Always read the live values rather than trusting a number from any article, including this one.
The model also has wrinkles I skipped for clarity. Aave’s “eMode” can change borrowing terms for correlated assets. Pools can list new rate strategies. And the steep second slope, while elegant, means that in a genuine liquidity crunch a depositor can face a real wait to withdraw — the high rate is a signal of exactly that pressure.
So treat this as the mental model, not the manual. The system is the curve and the ratio. The exact numbers are something you verify yourself, every time. The same caution applies to any token — it’s the spirit behind spotting a rug pull and tracking a wallet over time: read the source, don’t trust the screenshot.
FAQ
How are Aave interest rates determined? By a formula, not a person. Each rate is a function of the pool’s utilization — total borrowed divided by total supplied. The rate updates on every transaction, so it can change minute to minute as people borrow and repay.
What is the kink or optimal utilization in Aave? It’s the bend in the rate curve. Below it, the borrow rate rises gently; above it, the rate rises steeply to push utilization back down. The protocol sets this optimal point per asset, often around 80% to 90%.
Why is my Aave supply APY so low? Almost always because utilization is low. Suppliers are paid by borrowers, and that interest is spread across the whole pool. If few people are borrowing, there’s little interest to share — so your deposit earns little.
Does Aave still offer stable interest rates? No. Stable-rate borrowing was disabled in late 2023 after a security issue and then fully deprecated through 2024. Aave borrowing today is variable, and old stable positions were moved to variable rates.
Is a high Aave APY a good thing? Not on its own. A high supply APY usually signals high utilization, which means most of the pool is already lent out. That can make withdrawing slower until borrowers repay. Read the yield together with utilization, never alone.
Where does the reserve factor go? It’s the protocol’s cut of borrower interest, sent to the Aave treasury. It varies by asset and is the main reason your supply APY sits below the borrow APY.
The reframe
An Aave APY isn’t a rate someone is offering you. It’s a live readout of how badly other people want to borrow the asset you deposited. The protocol isn’t paying you — borrowers are, and the curve just sets the price of their demand.
Read the utilization first, and the Aave interest rate stops being a surprise. That’s the entire shift, and it took me a week of confusion to make it. You can make it in five minutes.
Next in this Protocol Deep Dive series: how Aave decides when to liquidate a loan — the health factor, and why it’s the number that actually keeps the whole system solvent. For the wider context on these mechanics, Aave’s own protocol documentation and the stable-rate deprecation record are worth a read, and Wikipedia has a solid primer on decentralized finance if the term still feels fuzzy.
seonjae — Korean office worker documenting his transition into AI systems, agents, and vibe coding — without a CS background. Shipping in public.