PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchSome links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
API rate limiting controls how many requests a caller may make over a period or within a shared budget. It protects services from overload, allocates capacity fairly, and gives clients predictable rules for pacing traffic. A well-behaved client treats 429 Too Many Requests as a signal to pause, honors Retry-After when present, and retries only a bounded number of times with suitable backoff. This guide explains the main limiting algorithms, server policy choices, provider-specific quotas, and practical recovery patterns so you can design integrations that remain reliable without creating retry storms.
What is API rate limiting?
Rate limiting sets a maximum request frequency or budget for a defined policy key. The key might be a user, API key, authenticated application, IP address, route, resource, or an entire service. A limit can be expressed as requests per interval, a token budget, a weighted request cost, or a quota that resets at a documented time.
As an Amazon Associate I earn from qualifying purchases.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsThere is no universal request limit. Each API provider chooses thresholds, scopes and reset rules, and may apply different policies to different endpoints or caller classes. A public search endpoint, for example, may have a different budget from a write endpoint or an administrative operation.
- Protection: a sudden client burst cannot consume all backend capacity.
- Fairness: one tenant cannot monopolize a shared service.
- Predictability: clients can pace work instead of discovering capacity only through failures.
- Cost control: expensive operations can consume more quota than cheap reads.
Limits can be enforced at an edge gateway, load balancer, application server, database-facing service, or several layers at once. A response may therefore represent a per-user policy, a route-specific policy, a regional pool, or a service-wide budget. Read the API’s documentation and response headers before assuming what a number means.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
What does HTTP 429 Too Many Requests mean?
429 Too Many Requests means the server believes this caller has exceeded a request limit in a defined period or budget. It is normally a caller-specific throttle, not proof that the whole service is unavailable. The response may include Retry-After, telling the client how long to wait before trying again.
Retry-After can be either a number of seconds or an HTTP date. Its exact precedence and interpretation are API-specific, so follow the provider’s published behavior. If the header says to wait 30 seconds, do not send another request after 5 seconds merely because your local timer says the window might have reset.
Recommended Free Tools
A 429 response is different from a general overload response. Guidance from Microsoft API documentation uses 429 when an individual caller breaches a limit and 503 Service Unavailable when broader load or service conditions prevent requests from being served. The distinction matters: repeatedly retrying a caller that is over quota will not fix a service-wide outage, and treating a temporary outage as a quota problem can lead to the wrong recovery path.
| Response | Likely condition | Client action |
|---|---|---|
429 |
Your caller, key, route, or tenant exceeded a limit. | Honor Retry-After or documented reset data, reduce demand, and retry only within a bound. |
503 |
The service is unavailable or broadly overloaded. | Use the provider’s outage guidance and bounded backoff; do not assume a quota reset will help. |
Some providers return a different status for different limit classes. GitHub’s REST API documentation, for example, describes both 403 and 429 responses depending on whether a primary or secondary limit was reached. Never write a client that assumes every provider uses 429 for every throttle.
How do I handle HTTP 429 correctly?
Stop sending requests during the server-indicated delay, then resume gradually. A bounded retry loop prevents a temporary throttle from becoming an infinite background outage or a self-inflicted retry storm.
- Classify the response. Confirm that the status is 429 (or the provider’s documented throttle status) and inspect the response body and headers.
- Read
Retry-After. If it is present and valid, wait at least that long. Treat an HTTP-date value as a timestamp and a numeric value as seconds. - Check provider-specific reset headers. A documented remaining count or reset time may apply to a different limit class than
Retry-After; use the provider’s precedence rules. - Apply bounded backoff. If no delay is supplied, use an exponential schedule with a maximum delay and a maximum attempt count. Add random jitter when many workers could resume together.
- Reduce pressure. Lower concurrency, stop needless polling, request fewer fields, and use caching or conditional requests where supported.
- Stop and surface the failure. After the retry budget is exhausted, return a clear error to the queue, user, or calling service. Record the response for diagnosis instead of retrying forever.
A simple policy can be represented as:
for attempt in 1..MAX_ATTEMPTS:
response = send_request()
if response.status not in {429, documented_transient_errors}:
return response
delay = parse_retry_after(response)
if delay is absent:
delay = min(MAX_DELAY, BASE_DELAY * 2^(attempt - 1))
delay = add_random_jitter(delay)
sleep(delay)
return rate_limit_error
The pseudocode is a design pattern, not a universal delay value. A provider may require a longer pause, a specific reset timestamp, or no retries for a particular operation. Never retry a non-idempotent write unless the API defines how duplicate submissions are prevented, for example with an idempotency key.
What does Retry-After mean?
Retry-After is server guidance about when a client may try again. It commonly appears with 429 and can also accompany other transient responses. A numeric value is a delay in seconds; an HTTP-date value identifies a time after which a retry is appropriate.
Wait at least the stated interval, account for clock differences when parsing dates, and add a small random spread if multiple workers share the same schedule. If the API publishes a separate reset header, follow its documented relationship to Retry-After rather than guessing which one wins. The header is not a promise that the next request will succeed: another client may consume the newly available capacity, or a different endpoint limit may still apply.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
When no Retry-After is provided, use the API’s documented backoff recommendation. If none exists, an exponential delay with a cap and jitter is safer than immediate repeated requests. Keep the retry budget finite and expose the final failure to monitoring.
Which rate-limiting algorithm should I use?
No algorithm is universally best. Choose by asking whether short bursts are acceptable, whether traffic must be smooth, whether excess work may wait in a queue, what latency is tolerable, and how much shared state your deployment can maintain.
| Algorithm | Traffic behavior | Strengths | Costs and risks | Good fit |
|---|---|---|---|---|
| Token bucket | Tokens replenish at a fixed rate up to a capacity; each request consumes tokens. | Allows controlled bursts while enforcing a long-term average. | A large capacity can still create a backend-stressing burst; capacity and refill rate need tuning. | Interactive APIs where brief peaks are acceptable. |
| Leaky bucket | Requests are emitted at a relatively uniform rate, often through a queue. | Smooths bursts and protects downstream systems that need steady flow. | Queueing adds latency; queue size, overflow behavior, and worker availability require management. | Backends that are sensitive to sudden concurrency. |
| Fixed-window counter | Counts requests in discrete intervals such as one minute. | Simple to explain and implement. | A caller can send a burst at the end of one window and another at the start of the next. | Basic policies where boundary bursts are acceptable. |
| Sliding-window counter | Counts activity over a moving interval. | Reduces the boundary effect of fixed windows. | More state and calculation than a single counter; exact implementation choices affect cost. | Policies needing smoother enforcement without a full queue. |
When should I choose a token bucket?
Use a token bucket when clients need occasional bursts, such as loading several related records after a user action, but must remain within a sustainable average. Set the bucket capacity to the largest burst your backend can safely absorb, not simply to a convenient large number. A high refill rate with a high capacity can admit both frequent traffic and large spikes.
When is a leaky bucket better?
Choose a leaky bucket when downstream processing benefits from an even flow more than callers benefit from immediate responses. Queuing can protect a database or third-party dependency, but you must define a maximum queue length, an overflow response, and a timeout so waiting work does not consume unlimited memory.
Are fixed and sliding windows enough?
They are often sufficient for straightforward per-key quotas. A fixed window is inexpensive but has a predictable boundary loophole. A sliding window reduces that artifact at the cost of more state; document whether the implementation uses a rolling counter, timestamps, or another approximation because those choices affect accuracy and storage.
How should I design a server-side rate limit?
Start with an explicit policy, then make the enforcement and error contract observable. The limiter should be cheaper to execute than the work it protects, especially when a caller is already over limit.
Define the policy key
Choose the least ambiguous key that matches the policy: authenticated user, API key, application, IP address, route, resource, or service-wide pool. IP-only limits can combine many unrelated users behind a corporate gateway or mobile carrier. Identity-based limits avoid that grouping but require reliable authentication and protection against key sharing.
Define what counts
Decide whether every request costs one unit or whether operations have weights. A large export, search query, or write may consume more capacity than a cached metadata read. State whether failed requests, redirects, retries, and batched sub-operations count, and make the rule visible to clients.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
Choose rejection versus queueing
Immediate rejection keeps latency and memory predictable and is appropriate when the caller can retry later. Queueing smooths demand but introduces waiting, expiration, cancellation, and capacity-management problems. Do not queue indefinitely: a stale job can be worse than a clear 429.
Coordinate distributed instances
Multiple service instances need a shared or consistently partitioned view of counters. Fast in-memory stores such as Redis or Memcached are common implementation options, but neither is a universal prescription. Consider key cardinality, eviction, replication, failure behavior, consistency, and what happens if the state store is unavailable.
Return an actionable contract
Send the documented throttle status, a stable error body, and timing information when possible. Optional rate-limit headers can expose a limit, remaining budget, reset time, or resource class, but their names and semantics are provider-specific. Ensure timestamps use a documented format and do not imply precision the system cannot guarantee.
How do I avoid API rate limits?
The most reliable way to stay under a quota is to reduce unnecessary work and control concurrency before the server has to reject you.
- Prefer events to polling. Use webhooks or event subscriptions when the provider offers them. If polling is unavoidable, use an interval appropriate to how quickly the data changes and stop polling when no consumer needs updates.
- Request only what you need. Select fields, pages, or resources instead of repeatedly downloading complete objects.
- Cache safely. Reuse valid responses and send conditional requests such as entity-tag or modification-date validators when supported.
- Cap concurrency. A worker pool with a fixed maximum prevents a queue of jobs from becoming a synchronized burst.
- Centralize quota accounting. If several processes share one API key, coordinate their budgets instead of letting each process assume it has the full allowance.
- Honor server timing. A 429 should pause the responsible work, not merely delay one thread while other workers continue sending the same calls.
- Separate priorities. Reserve capacity for interactive operations so a bulk import cannot starve user-facing requests.
GitHub’s REST API guidance specifically recommends avoiding unnecessary polling and concurrency, using conditional requests or caching where available, and following its documented primary and secondary limit behavior. These practices are broadly useful, but GitHub’s thresholds and header semantics must not be generalized to another provider.
What are GitHub’s rate-limit headers and limits?
GitHub documents response headers named x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-used, x-ratelimit-reset, and x-ratelimit-resource. They describe the primary-limit state associated with that response. GitHub cautions that values can vary between responses processed in different regions and recommends treating response headers as authoritative over a separate rate-limit endpoint when they disagree.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →GitHub also distinguishes primary and secondary limits. Primary exhaustion uses the documented reset time; secondary-limit responses may include retry-after. When that header is absent, GitHub advises waiting at least a minute and increasing the delay exponentially if the limit persists. Continued attempts while limited can lead to an integration ban.
Do not build correctness-critical logic around an exact remaining count. Use the headers for pacing and diagnostics, leave safety margin for concurrent work, and recheck GitHub’s live documentation because thresholds and policy details can change. These names, statuses, and rules belong to GitHub; another API may expose different headers or no quota headers at all.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
How should I monitor and test a limiter?
Test both sides of the contract: that compliant traffic is admitted and that excess traffic is rejected or queued predictably. Include boundary times, concurrent workers, missing headers, malformed dates, clock skew, state-store failures, and a provider changing from 429 to another documented status.
- Measure: accepted requests, throttled requests, queue depth, wait time, retry attempts, final failures, and per-key usage.
- Log context: policy key in a privacy-safe form, route, limit class, response status, reset information, and attempt number.
- Alert on patterns: a sudden rise in 429s, repeated retries after the advised time, synchronized worker resumes, or one tenant consuming an unusual share.
- Load-test boundaries: send traffic just below, at, and above each limit; test bursts equal to and larger than token capacity.
- Test recovery: verify that a blocked queue drains at a safe rate after the reset rather than releasing all waiting work at once.
Keep client and server clocks synchronized enough for HTTP-date handling, but design for uncertainty. A reset timestamp is a scheduling hint, not permission to unleash every queued request simultaneously.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
What common rate-limit mistakes cause outages?
Retrying immediately
An immediate retry loop multiplies traffic while the caller is already blocked. It can prolong the throttle and trigger a provider’s abuse protections. Honor the delay, add jitter, and stop after a finite budget.
Ignoring concurrency
Ten workers each staying below an assumed per-worker limit can still exceed a shared API-key quota. Put the limiter above the worker pool or share quota state among workers.
Confusing 429 and 503
A caller-specific limit and a service-wide outage need different diagnosis and escalation. Inspect status, headers, and provider guidance instead of applying one retry rule to every failure.
Assuming headers are universal
Header names such as x-ratelimit-remaining are not standardized across providers. Treat them as documented extensions, preserve unknown values for diagnostics, and avoid silently applying one vendor’s semantics to another API.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Making the burst too large
A token bucket can be correctly enforcing its average while still overwhelming a fragile dependency with a large burst. Tune capacity against measured backend concurrency and latency, not merely against the desired average rate.
Retrying unsafe writes
A repeated POST or other non-idempotent operation may create duplicates if the first attempt reached the server before the 429 or network failure was observed. Use idempotency support when the API provides it, or move the operation into a durable workflow that can reconcile outcomes.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
How do I choose limits for different traffic patterns?
| Traffic pattern | Useful policy shape | Important safeguards |
|---|---|---|
| Interactive user actions | Token bucket with a modest burst and a sustainable refill rate. | Reserve capacity for foreground requests; return a clear retry time. |
| Bulk imports or exports | Leaky bucket or a queue with explicit worker concurrency. | Bound queue length, support cancellation, and drain gradually after a reset. |
| Many tenants sharing one key | Per-tenant limits plus a shared application pool. | Prevent one tenant from consuming the entire shared budget. |
| Expensive endpoints | Weighted requests or a separate route budget. | Document costs and account for failed and retried operations consistently. |
| Strict downstream capacity | Smoothing algorithm with a small queue. | Set queue and latency limits; fail fast when stale work has no value. |
Start with the smallest policy that protects the dependency, observe real traffic, and adjust using measured queue time, error rate, and backend saturation. A limit that looks generous in isolation may be unsafe when several routes fan out to the same database or vendor.
What should a production implementation document?
Publish the policy where developers can find it and keep the runtime behavior aligned with the documentation. At minimum, document:
- the identity or resource key used for limiting;
- the interval, token refill, quota reset, and any burst capacity;
- which endpoints and operations are covered;
- how weighted costs are calculated;
- the status codes, error body, and timing headers returned on rejection;
- whether excess work is queued, rejected, or partially accepted;
- the recommended retry and backoff behavior;
- how clients can request a higher limit or report an incorrect classification.
Version policy changes deliberately. A client that sees a lower quota or a new secondary limit should degrade gracefully, not assume that yesterday’s allowance remains valid forever.
How can I build a safe client checklist?
- Read the provider’s quota and error documentation for every endpoint you call.
- Record response status and documented rate-limit headers without making exact remaining counts a correctness dependency.
- Honor
Retry-Afterand provider-specific reset rules. - Use exponential backoff with a cap, jitter where appropriate, and a finite retry count.
- Limit aggregate concurrency across all workers using the same credential.
- Cache or condition requests and replace polling with events when possible.
- Protect non-idempotent operations with idempotency or reconciliation.
- Monitor throttles, queue age, retries, and final failures, then adjust traffic before users feel the limit.
Further reading on rate-limiting design
The book Designing Web APIs: Building APIs That Developers Love includes a chapter covering token-bucket, fixed-window, and sliding-window strategies. It is optional background reading rather than a prerequisite. Gateway documentation, including Apache APISIX material on token and leaky buckets, can help translate these algorithms into a deployed edge policy; evaluate any gateway against your own storage, failure, and multi-instance requirements.
Frequently Asked Questions
Can a client tell exactly when an API quota will reset?
Only when the provider documents a reliable reset value for the specific limit class. A reset timestamp can be affected by regional processing, concurrent callers, or another endpoint budget, so treat it as scheduling guidance and keep a safety margin.
Should I retry a 429 request if it changed server data?
Retrying a non-idempotent operation can duplicate the change if the original request succeeded but its response was throttled or lost. Use an idempotency key or a reconciliation read when the API supports one; otherwise surface the uncertain result for controlled recovery.
Free tools Windows power users keep installed
One-click scans. No signup required.
Is client-side throttling still useful when the server already rate-limits me?
Yes. A local limiter prevents bursts, reduces avoidable 429 responses, and coordinates multiple workers that share one credential. It also lets you reserve capacity for high-priority operations instead of discovering the limit through failed user requests.
What happens if several servers receive the same API key’s traffic?
Independent in-memory counters can collectively exceed the provider’s quota because each server sees only part of the traffic. Use a coordinated limiter or a single scheduling layer, and define what happens when the coordination store is unavailable.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

