Claude Pro’s rate limits are two stacked budgets, not one
You hit a wall mid-thread, googled “claude pro rate limits budget”, and landed here. The short version: Pro now has a free quota (rolling 5-hour and 7-day windows) and a dollar budget (metered-billing cap) you set yourself. Most rate-limit guides only cover the first. This page is about the second, where the number lives, how the two stacks fail differently, and how to watch them both without refreshing the Settings page.
Direct answer (verified 2026-05-09)
Set your Claude Pro budget at claude.ai/settings/usage, in the Extra usage section, by clicking Adjust limit and entering a monthly cap in dollars. That cap is your real budget for what Anthropic bills you on top of your $20/month subscription, after the rolling 5-hour and 7-day free quotas are spent. The two budgets are independent: hitting a rolling window throttles you with no charge; hitting the dollar cap blocks you with a literal out_of_credits = true flag. Anthropic’s walkthrough is at support.claude.com. The free open-source way to watch both budgets live in the macOS menu bar is ClaudeMeter.
The two-stack mental model
The mistake every “why am I rate-limited” thread on Reddit makes is treating Pro as one limit. It is not. Pro is two budgets glued together, each with its own meter, its own reset schedule, and its own failure mode.
The bottom budget is the free quota you bought with your $20. It ships as utilization fractions on the rolling 5-hour and 7-day windows. You spend this first, automatically, on every prompt. There are no dollars involved. When a window pins at 100 percent, the next prompt 429s and you wait for the rolling clock to roll back below the line.
The top budget is the dollar one you set yourself. It only exists if you turned on metered billing on /settings/usage. Once you set a cap, hitting the bottom budget no longer 429s you; Anthropic spends from the top budget instead, at standard API rates, metered against your cap. When the top budget reaches the cap, the flag out_of_credits flips to true and you BLOCK until the next billing cycle (or until you raise the cap).
Two budgets, two failure modes, one stack. Watching only the rolling windows is what makes a quiet $200 metered bill arrive in May. Watching only the dollar line is what makes you waste 90 minutes waiting for a window to roll when you have $40 of cap untouched.
What both budgets look like, in real numbers
Run the bundled CLI on a Pro account with metered billing enabled and you get six rows: the four rolling-window rows, the Extra usage dollar row, and the next-charge date the cap rolls on. The same block renders in the macOS menu bar dropdown, and in the browser toolbar popup.
Now look at the same block when the dollar budget trips. The free quota rows are barely touched. The Extra usage line is at 100 percent and carries the BLOCKED suffix plus the unblock date. This is the state every other tracker on the market cannot show in one line:
Twenty-three percent on the 5-hour window, eighty-one percent on the 7-day, BLOCKED on the dollar cap. The next prompt 429s and the rolling rows are not why. Without the Extra usage line you would burn ten minutes guessing.
Where the dollar budget lives on the wire
The Settings page renders the dollar budget as a progress bar. The underlying source is one cookie-authenticated GET on claude.ai. No API key, no public token. Open DevTools on /settings/usage and you can see the same payload come back:
Two integers (cents), one boolean, two optional fields for the lockout state. That is the whole budget. Divide by 100 and you have dollars. Watch out_of_credits and you have the BLOCKED state. ClaudeMeter polls this endpoint every 60 seconds alongside the rolling-window endpoint, and merges both into one snapshot:
Six invariants the stacked-budget model relies on
What the two-budget stack guarantees
- The free quota is two rolling windows: five_hour resets on a sliding 5-hour clock; seven_day resets on a sliding 7-day clock. Both are utilization fractions (0.0 to 1.0), not message counts, not token counts. Hit 1.0 on either and Anthropic 429s the next prompt regardless of how many dollars are left in your cap.
- The dollar budget is the monthly_credit_limit on overage_spend_limit. It is one integer in cents, set by you on /settings/usage. used_credits is a float in cents that climbs as Anthropic charges metered overflow against the cap. The cap rolls on next_charge_date, not on a calendar month boundary.
- The two budgets do not pool. Spending dollars does not buy you back rolling-window headroom. Resetting a rolling window does not refund spent dollars. They are stacked: free first, dollar second. Either one can throttle you independently.
- BLOCKED is a single boolean: out_of_credits = true. It only flips when the dollar cap is reached. It does not reflect rolling-window pinning. If five_hour pins, you get a 429 with no out_of_credits flip; you simply wait. If overage trips, you get a 429 plus out_of_credits = true, and you stay locked until disabled_until passes or you raise the cap.
- If overage_spend_limit returns 404, the dollar budget does not exist for your org (free tier, or paid plan with metered billing off). ClaudeMeter shows the rolling rows alone in that case. Absence of the Extra usage line is informative: it tells you metered billing is off, not that the tracker broke.
- Raising the cap mid-cycle takes effect on the next 60-second poll. used_credits keeps its value, percent recomputes against the new cap, BLOCKED clears within one minute. Lowering the cap below current used_credits flips out_of_credits to true on the next poll and you BLOCK immediately at the new ceiling.
Budgeting playbook: four steps that work for most Pro users
The right budget is not the most aggressive cap; it is the cap that matches how often you hit rolling-window walls and how much overflow is worth to you. Most Pro users converge on a cap close to their subscription price and adjust quarterly. Here is the routine:
Step 1: open claude.ai/settings/usage
Sign in to your Pro or Max account, scroll to the Extra usage card. If you have never enabled metered billing, the section shows a toggle. The cap (your dollar budget) only exists once metered billing is on. If you do not see an Extra usage section at all, your account is free or your workspace is on a Team/Enterprise plan that uses a different metered-billing flow.
Step 2: pick a cap that matches your tolerance
Click Adjust limit and enter a monthly cap in dollars. A common starting point is roughly your subscription price: $20 for Pro, $100 for Max 5x, $200 for Max 20x. That keeps the surprise overflow capped at something you would already notice on a credit card statement. Lower the cap aggressively if you want a hard ceiling. Raise it if you keep hitting BLOCKED mid-refactor and the overflow is worth the dollars to you.
Step 3: install ClaudeMeter to watch both budgets at once
brew install --cask m13v/tap/claude-meter, then load the browser extension from the GitHub releases page, then visit claude.ai once to seed the session. The macOS menu bar dropdown shows the rolling-window utilization rows and the Extra usage dollar row in one block, refreshed every 60 seconds. No cookie paste, no API key, no second login.
Step 4: re-budget at the start of each cycle
Every billing cycle the cap rolls. used_credits goes back to zero on the next_charge_date. ClaudeMeter prints that date under the Extra usage line so the rollover is not a surprise. Look at the previous cycle's spend and decide whether the cap was too tight (you BLOCKED early) or loose (you barely touched it). Adjust accordingly. Treat the cap as a knob you move, not a one-time setting.
How the budget shape varies across paid plans
Same wire shape, different free-quota magnitudes. The dollar cap is yours to set on every paid tier.
| Feature | Claude Max (5x or 20x) | Claude Pro ($20/month) |
|---|---|---|
| Free quota (rolling 5-hour window) | Max 5x: 5x Pro; Max 20x: 20x Pro | Pro: ~45 short Sonnet messages |
| Free quota (rolling 7-day window) | Max 5x: ~280 hours typical; Max 20x: higher | Pro: 40 to 80 hours of Sonnet 4 typical |
| Subscription price (the floor) | Max 5x: $100/month; Max 20x: $200/month | Pro: $20/month |
| Metered cap field on the wire | Same field, same endpoint, all paid plans | monthly_credit_limit (cents) |
| Where you set the cap | Same UI, same flow, all paid plans | claude.ai/settings/usage > Extra usage > Adjust limit |
| BLOCKED state field | Same field, same endpoint, all paid plans | out_of_credits = true plus disabled_until timestamp |
| Cap rolls on | Same: next_charge_date drives both surfaces | subscription next_charge_date, not calendar month |
Why local tools cannot replace this view
ccusage and Claude-Code-Usage-Monitor both read ~/.claude/projects/<project>/<session>.jsonl on disk and sum input + output tokens against the public API price card. That gives you a faithful local-token estimate of what Claude Code processed locally. It is real data; it is also the wrong data if your question is “what did Anthropic charge me against my Pro metered cap.”
Anthropic charges metered overflow against the cap using server-side numbers that fold in per-model weights, peak-hour multipliers, and bucket attribution that local logs never see. The dollar figure on /settings/usage comes from the server. The only way to read it is the cookie-authenticated GET on /api/organizations/{org}/overage_spend_limit. ClaudeMeter automates the cookie wrangling, the org enumeration, and the polling. It is the only open-source tracker that surfaces the dollar budget alongside the rolling windows in one view.
Run both side by side and you have the whole picture: tokens spent locally and the dollar figure Anthropic counted those tokens as on the metered ledger. The two numbers do not match because they measure different ledgers; that gap is the budget math you cannot get from one tool alone.
The honest caveat
The overage_spend_limit endpoint is undocumented. Anthropic can rename a field on any claude.ai release. ClaudeMeter declares each field as Optional in src/models.rs so a missing field deserializes as None and the Extra usage row goes blank instead of crashing. That is forward-compat hedging, not a guarantee. If a name changes, the open-source repo gets a same-day patch and you pull the next brew release. The trade for reading server truth is that the wire is less stable than a published API; the upside is that the dollar budget is exactly the number Anthropic will bill against, not an estimate.
Picking a metered cap and want a sanity check on the math?
15 minutes. Bring your last cycle's spend and your worst rate-limited day. We can walk through the cap-vs-rolling tradeoff and what to set.
Frequently asked questions
Where do I set my Claude Pro budget?
claude.ai/settings/usage, in the Extra usage section. Click Adjust limit and enter a monthly cap in dollars (the field on the wire is monthly_credit_limit, in cents). That cap is the budget for what you spend after your plan windows are spent. If you choose Set to unlimited instead, you have to prepay via Add funds, with an optional auto-reload when your balance falls below a threshold (Anthropic enforces a daily redemption limit of $2,000 on auto-reload).
Is the cap the only budget, or are the rate limits a budget too?
Both. Think of it as a stack. The bottom budget is your plan's free quota: a rolling 5-hour window and a 7-day weekly window, both measured as utilization fractions, not dollar amounts. The top budget is the metered-billing cap, denominated in dollars. You spend the free one first; once a window pins, additional usage flows onto the dollar one until the cap is reached. Either stack can throttle you. Watching only one is the failure mode.
How do I see what I have spent against the cap so far?
Settings page: claude.ai/settings/usage shows used_credits and the cap as a progress bar in the Extra usage section. Programmatic: GET /api/organizations/{org_uuid}/overage_spend_limit on claude.ai with your session cookie returns { is_enabled, monthly_credit_limit, used_credits, currency, out_of_credits, disabled_reason, disabled_until }. Both numbers ship in cents. ClaudeMeter polls that endpoint every 60 seconds and renders one line in the macOS menu bar: $X.XX / $Y.YY (Z%) plus an optional BLOCKED suffix when out_of_credits flips.
What does BLOCKED mean for my budget?
It means you spent the dollar cap. used_credits caught up to monthly_credit_limit, out_of_credits flipped to true, and Anthropic is refusing further metered-billed calls until disabled_until passes (or you raise the cap). The 5-hour and 7-day rows can still look green when this happens; the rolling windows are not why you are blocked. The signal that you are out of dollars is the BLOCKED suffix on the Extra usage line, nothing else.
If I do not enable metered billing, what is my budget?
Just the free quota. You get the rolling 5-hour and 7-day windows. When one pins at 100 percent, your next prompt returns a 429 and you wait for the window to roll. There is no dollar overflow, no surprise bill, no cap to set. The trade is rigidity: hit a wall mid-refactor and you wait. Heavy Claude Code users on Pro often turn metered billing on with a small cap like $20-$50 per month so the rolling-window walls are paid through, but the spend stays bounded. It is a budget you set rather than a wall you wait at.
Can the dollar cap be lower than my plan price?
Yes. The cap is independent of your subscription. A $20/month Pro user can set the metered cap to $10, $50, $200, or unlimited. The cap controls only the overflow billing on top of the plan; the plan price itself does not change. If you set the cap to $0 (or do not enable metered billing), you have a hard wall at the rolling-window limit. If you set it to $200, you have $200 of extra-usage room before BLOCKED. Most people on $20 Pro pick a cap close to their subscription price so the surprise budget cannot exceed the spend they would notice.
How does this differ from API spend limits in the Console?
Different surface, different number. API spend limits live on console.anthropic.com Settings > Limits and govern your organization's API key spending across tiers (Tier 1 through Tier 4, with a $200,000/month ceiling on Tier 4). Pro/Max metered billing is on claude.ai, governs the overflow on top of your subscription rate limits, and goes through the same payment method as the subscription. They do not pool. A Pro account at $40 of extra usage and an API tier at $300 of API spend are tracked, capped, and billed separately.
Why can ccusage not show me this number?
ccusage reads ~/.claude/projects/<project>/<session>.jsonl on disk and sums input + output tokens per turn against the published model price card. That is a faithful local-token estimate of what you would have paid at API rates. It is not what claude.ai charged you against the Pro/Max metered cap (claude.ai folds in peak-hour multipliers and per-model weights ccusage cannot see) and it never makes an HTTP call to claude.ai to read overage_spend_limit. Local truth versus server truth. The dollar cap is server-only.
Does the budget reset every month or every billing cycle?
Every billing cycle. The overage_spend_limit endpoint reflects the current cycle's used_credits and monthly_credit_limit; both reset on the cycle boundary, which the subscription_details endpoint reports as next_charge_date. So if your subscription renewed on the 14th, your dollar budget rolls on the 14th, not the 1st. ClaudeMeter prints the next renewal date under the Extra usage line so you can see when the rollover happens.
What happens if I raise the cap mid-month after BLOCKED?
monthly_credit_limit changes on the next 60-second poll. used_credits keeps climbing from where it was, percent recomputes against the new cap, and the BLOCKED suffix disappears within one minute on the menu-bar refresh. There is no wait for the next billing cycle to unblock. The cap is a soft governor, not a hard wall: you can raise or lower it at any point in the cycle and the running total stays accurate.
Can I budget per-day instead of per-month?
Not in Anthropic's UI, no. The cap is a single monthly_credit_limit per cycle. To approximate a daily budget, divide the monthly cap by the number of days in the cycle and watch the percent against that fraction. ClaudeMeter shows percent-of-cap and dollars-spent live, so eyeballing 'I should not be over $1.67 by midnight on day one of a $50 cap' is the practical way. There is no API field for a daily ceiling.
Keep reading
Extra usage balance: the dollar line in detail
Two endpoints, three fields, one BLOCKED string. The exact 17-line Rust function that turns the JSON into the menu-bar line.
Claude Pro usage limit: the eight buckets the server tracks
Pro is not one limit. Eight separate utilization buckets, two of them undocumented, any one at 100 percent throttles you.
Plan + pricing tracker: three endpoints joined
Usage, overage_spend_limit, and subscription_details on the same 60-second tick. Renewal date, card on file, cap, and spend in one snapshot.