The Claude Pro usage limit is eight buckets, not one number
Anthropic publishes one or two numbers (about 45 messages per 5 hours, 40 to 80 hours of Sonnet a week) and that is what every guide repeats. The actual rate limiter checks utilization in eight separate buckets returned by /api/organizations/{org}/usage. Two of the bucket names are undocumented. Any one at 100 percent throttles the account.
Direct answer (verified 2026-05-08)
LookupClaude Pro is $20 per month ($17 on annual). Anthropic publishes the limits as ranges because the server does not track a fixed message counter; it tracks one utilization fraction per bucket.
Sources: Anthropic Help Center, “What is the Pro plan?” for the structure; Anthropic Help Center, “Use Claude Code with your Pro or Max plan” for the Claude Code limits; claude.com/pricing for the price tier. Hour ranges from Anthropic statements covered in mainstream tech press during 2025-2026.
Why the published numbers are estimates
The Anthropic Help Center says Pro gives roughly 45 messages per 5 hours and 40 to 80 hours of Sonnet 4 per week. Both numbers are ranges with caveats attached, and the caveats matter: long prompts, attachments, Opus selection, tool calls, and peak-hour multipliers all reduce the effective count. The server is not counting messages. It is counting weighted units that vary per request.
That is why two Pro users on the same plan, the same week, can have completely different walls. One person sending 30 short Sonnet questions consumes a fraction of what one person uploading a 200KB PDF and asking Opus to re-architect it does. The rate limiter sees two different utilization curves on five separate buckets, not two message counts.
The eight buckets, named
ClaudeMeter is a Rust app and we deserialize the JSON the claude.ai/settings/usage page itself fetches. The struct that holds the response is the cleanest catalogue of what the server is actually tracking on a Pro account.
Each Window is two fields: a utilization fraction and an optional ISO timestamp for when the earliest unexpired event ages out.
The two names that surprise people are seven_day_omelette and seven_day_cowork. Neither appears in the Anthropic Help Center, the public API reference, or any pricing page. They look like internal codenames for newer feature buckets that landed in Pro after the original five_hour + seven_day pair shipped. We deserialize them as plain Window structs and surface their utilization in the menu bar so when one of them is what just throttled you, you see the cause.
Read it yourself in one curl
You do not need ClaudeMeter to see this. You need a logged-in claude.ai session, your org UUID (visible in any /settings URL), and one curl with the cookie header. The response is plain JSON.
That is the whole protocol. The bars on claude.ai/settings/usage are rendered from these same eight keys. ClaudeMeter automates the loop (browser extension forwards the session, Rust binary polls every minute, popup renders) so you stop typing it by hand.
What each bucket actually represents
The bucket names in the Rust struct map onto specific kinds of activity. If you know which surface burns which bucket, you can choose where to spend your weekly budget.
Eight buckets, eight cost surfaces
- five_hour: the bucket Pro users hit most often during agentic loops or long debugging sessions.
- seven_day: the all-models weekly cap. Heavy claude.ai writers see this trip before five_hour.
- seven_day_sonnet: the Sonnet-only weekly slice. Anthropic's 40-80 hour range maps to this on Pro.
- seven_day_opus: present in the JSON but Pro accounts get a tiny allowance here. Watch this on Max.
- seven_day_oauth_apps: third-party clients (some Pro tooling) count against this.
- seven_day_omelette and seven_day_cowork: undocumented codenames for newer feature buckets. They appear and tick up if Anthropic ships a new product surface that lands inside Pro.
- extra_usage: not a limit, a credit balance. Only present if you opted into pay-as-you-go after hitting a wall. Currency, monthly_limit, used_credits, utilization fraction.
Pro vs Max: same buckets, different ceilings
The shape of the response is identical across plans. What changes is the ceiling on each bucket. Pro accounts see the same eight keys Max accounts see; their utilization just hits 1.0 sooner.
| Feature | Max 5x / 20x | Pro $20/mo |
|---|---|---|
| Monthly price | $100 / $200 | $20 |
| 5-hour window | ≈225 / ≈900 short messages | ≈45 short messages |
| Weekly Sonnet 4 hours | 140-280 / 240-480 | 40 to 80 |
| Weekly Opus 4 hours | 15-35 / 24-40 | Limited (Pro is Sonnet-first) |
| Buckets server returns | Same eight as Pro | Same eight as Max |
| Server-truth visibility | Settings/Usage only | Settings/Usage only |
| Live menu bar reading | ClaudeMeter | ClaudeMeter |
How a single Pro request hits the wall
The flow is the same for every prompt. The server increments every applicable bucket, weights the increment by the prompt and the model, and the rate limiter blocks the next request the moment any bucket crosses 1.0. The 429 response does not name the bucket.
A Pro prompt, end to end
Why “limit” is the wrong word
A limit suggests one number. A budget you draw down. The server is not running that data structure. It is running eight independent rolling windows, each with its own clock, weighted by request shape, with at least two windows that Anthropic does not name publicly. “Allowance surface” or “quota envelope” is closer to what is actually happening, but those phrases would not survive a help-center pass, so the published copy collapses everything to one estimate.
The practical consequence: if you have ever been blocked when you thought you had “most of the week left,” you were probably looking at one bucket while a different bucket was the one that hit 100. The settings page surfaces this if you scroll, but the bar on top is composite-ish and it is easy to miss the secondary buckets near the wall.
What ClaudeMeter does with this
One brew install, one browser extension that forwards the session cookie, and a Rust binary that polls the same eight-key endpoint every 60 seconds. The menu bar popup renders every bucket the server returned, with its utilization rounded to a percent and its resets_at converted to a relative timestamp. When Anthropic adds, renames, or removes a field, the strict deserializer fails loudly and we ship a release. The numbers in the popup match the numbers on /settings/usage exactly because they are the same numbers.
ClaudeMeter does not estimate, does not count tokens, does not read your local Claude Code logs. It surfaces the server's utilization fractions on the eight buckets the rate limiter actually checks. Free, MIT licensed, no telemetry, single HTTPS request per minute to claude.ai using your existing session.
Frequently asked questions
What is the Claude Pro usage limit in plain numbers?
Two estimates: about 45 short messages per rolling 5-hour window, and 40 to 80 hours of Sonnet 4 per rolling 7-day window for the $20/month Pro plan. Anthropic publishes both as ranges, not as fixed counters. The actual rate limiter checks one utilization fraction per bucket and the worst bucket is what blocks you.
Why does Anthropic give a range instead of a fixed number?
Because the server does not track a message count for you. It tracks one utilization float per bucket, weighted internally by prompt length, attachments, model selected, and tool calls. A short Sonnet message and a long Opus message with two PDFs do not consume the same slice. Quoting a fixed number requires averaging over an unknown distribution, so the help center prints a range instead.
How many buckets does the server actually return?
Eight, on the /api/organizations/{org_uuid}/usage endpoint. ClaudeMeter's Rust deserializer at src/models.rs lines 18 to 28 lists them: five_hour, seven_day, seven_day_sonnet, seven_day_opus, seven_day_oauth_apps, seven_day_omelette, seven_day_cowork, plus an extra_usage object for paid overage. Each one is optional. Each one has its own utilization float and its own resets_at.
What are seven_day_omelette and seven_day_cowork?
Internal Anthropic codenames. They appear in the JSON the claude.ai settings page itself fetches but they are not documented anywhere public. We deserialize them as plain Window structs and surface their utilization in the menu bar so you see if one of them is the bucket that just blocked you. If Anthropic renames or removes a field, the strict Rust deserializer fails loudly and we ship a release.
Which bucket usually trips first on Pro?
five_hour. Pro users running Claude Code in agentic loops will hit the 5-hour window before the weekly cap most weeks. Heavy claude.ai web-chat users, especially anyone running long conversations with large attachments, can hit seven_day by Tuesday or Wednesday. Both happen on the same plan, on different days, depending on how you used Claude that week.
Where is this number on claude.ai?
Settings, then Usage. The page renders progress bars by calling GET /api/organizations/{your-org-uuid}/usage on load and reading the same JSON struct ClaudeMeter parses. There is no public API token to read it; the request rides on your existing session cookies. ClaudeMeter polls the same endpoint every 60 seconds and renders the raw numbers in the macOS menu bar.
Does Claude Pro have a hard message cap?
No. There is no integer counter the server decrements. There is one utilization fraction per bucket. The Help Center prints a 45-messages-per-5-hours estimate as a guidance number for short, simple prompts, and explicitly notes long prompts, attachments, Opus, and tool calls reduce that. Treating it as a hard cap is the failure mode.
What happens at 100 percent on any bucket?
You get throttled. The next request from the same org returns a 429 with a generic message that does not name which bucket tripped. The /settings/usage page bar pins. If you were watching only the 5-hour bar but the bucket that hit 100 is seven_day_opus, you will not know why you are blocked until you open Settings.
How do I read the usage endpoint without ClaudeMeter?
GET https://claude.ai/api/organizations/{your-org-uuid}/usage from a browser session that is logged into claude.ai. Find your org_uuid by opening any URL on claude.ai/settings, the UUID is in the path. Copy your cookie header from DevTools, run curl with that cookie, and pipe through jq. ClaudeMeter exists because doing this every minute by hand is annoying.
Does ccusage tell me my Pro usage limit?
No. ccusage reads JSONL files under ~/.claude/projects, counts tokens locally, and infers cost. That is a different question from what the server is counting. The server applies weighting (peak-hour multiplier, attachment cost, browser-chat usage) you do not have locally. The only number that matches what the rate limiter enforces is what /api/organizations/{org_uuid}/usage returns.
Did Anthropic tighten the Pro limits in 2026?
Anthropic adjusted the weekly buckets multiple times since announcing weekly caps in mid-2025. The latest public ranges (Pro: 40 to 80 hours of Sonnet 4 weekly) come from Anthropic statements covered in mainstream tech press in 2025 and 2026. Because the buckets are utilization floats, not message counters, server-side reweighting is invisible until your old workflow starts hitting the wall earlier in the week. Watching utilization live is how you notice.
Hitting the wall mid-refactor on Pro?
15 minutes to walk through which bucket is tripping you and whether watching it live or moving up to Max is the right call.
Related guides
How the 5-hour bucket actually works
five_hour is one float on a sliding clock, not a 45-message counter. Where it lives in the JSON, why resets_at slides forward as you send.
Weekly cap stacked on the 5-hour window
The in-app indicator is binary. The server returns full utilization fractions on the weekly buckets. Where the gap is and how the meter shows it.
ClaudeMeter vs ccusage
ccusage reads local Claude Code JSONL files. ClaudeMeter reads the server-side utilization the rate limiter actually checks. Different question, different answer.