Google Gemini Rate Limits Explained: RPM, TPM & RPD

Google Gemini throttles on three axes — requests per minute (RPM), tokens per minute (TPM), and the one that surprises everyone, requests per day (RPD). Limits are tracked per model and per project, and which tier you’re on is driven almost entirely by whether billing is enabled and how much you’ve spent. This page lays out how the limits work, how to raise them, and how to engineer so the daily cap never blindsides you.

The axes that throttle you

  • RPM — requests per minute. A rolling 60-second window; bursty parallelism trips it even when your average rate is low.
  • TPM — tokens per minute. Counts input + output. Long context, files, and images burn TPM fast.
  • RPD — requests per day. The distinctive Gemini limit. You can be fine on a per-minute basis and still run out of daily quota by afternoon — and it only resets at midnight Pacific, not on a rolling window.

When you exceed any one of these, Gemini returns HTTP 429 RESOURCE_EXHAUSTED. Full troubleshooting is in the Gemini 429 RESOURCE_EXHAUSTED fix; this page is the reference behind it.

Tiers: billing is the big lever

Unlike OpenAI’s gradual tier ladder, Gemini’s biggest jump is simply turning on billing. The free tier exists for prototyping and carries tight RPM and a hard daily cap; moving to a paid tier raises every limit by orders of magnitude, and higher paid tiers unlock more as cumulative spend grows.

How Gemini tiers gate limits (illustrative — confirm current numbers in Google AI Studio / Cloud Console).
TierQualifies atDaily cap (RPD)Per-minute
Free No billingLow, hard daily capTight RPM/TPM
Tier 1 Billing enabledMuch higherHigher RPM/TPM
Tier 2 $250+ total spendHigher stillHigher still
Tier 3 $1,000+ total spendHighestHighest
Flash models have far more headroom

Limits are per model. Flash-class models (e.g. gemini-2.5-flash) carry much higher RPM/TPM/RPD than Pro models. Routing tolerant tasks to Flash is often the fastest way to add headroom without changing tier.

Check your real quotas

Gemini doesn’t surface OpenAI-style x-ratelimit-* headers on every response. Instead, view your live quotas where they’re enforced:

  • Google AI Studio — per API key, under your project’s quota view.
  • Cloud Console → IAM & Admin → Quotas — filter to the Generative Language API and your model to see and request increases on specific limits.

The 429 error body includes a RetryInfo hint telling you how long to wait for per-minute quotas.

Engineering around the limits

Back off on per-minute quotas

Python — google-genai with backoff
from google import genai
from google.genai import errors
import time, random

client = genai.Client()  # reads GEMINI_API_KEY

def generate(prompt, model="gemini-2.5-flash", attempts=6):
  for i in range(attempts):
      try:
          return client.models.generate_content(model=model, contents=prompt)
      except errors.APIError as e:
          if e.code != 429 or i == attempts - 1:
              raise
          time.sleep((2 ** i) + random.random())

print(generate("Hello").text)

Other levers

  • Enable billing. The single highest-impact change for any non-toy workload — it lifts the free-tier RPM and daily caps immediately.
  • Request a quota increase in the Cloud Console for the specific model and limit you’re hitting.
  • Route to Flash for tolerant tasks to preserve Pro-model quota.
  • Use Batch mode for large offline jobs — separate throughput, off your interactive limits, at a discount.
  • Track usage against the daily cap and alert before it’s exhausted — a per-day limit won’t self-heal until the Pacific-midnight reset.
The daily-cap trap

Backoff does nothing for an exhausted RPD. If requests start failing mid-afternoon and never recover, you’ve hit the daily cap — enable billing, raise the quota, or switch to a higher-quota model rather than retrying.

How Gemini compares to other providers

What to do next

  1. Enable billing if you’re past prototyping — it’s the biggest limit increase available.
  2. Check your quotas in AI Studio / Cloud Console and request an increase where needed.
  3. Add capped backoff with jitter for per-minute limits, and monitor the daily cap.
  4. Hitting errors now? Jump to the Gemini 429 troubleshooting guide.

Frequently asked questions

What is Gemini's requests-per-day (RPD) limit?
A cap on total requests per calendar day (resetting at midnight Pacific), separate from the per-minute limits. It's most restrictive on the free tier and is the most common reason Gemini works in the morning but 429s by afternoon. Enabling billing raises or removes it.
How do I increase my Gemini rate limits?
Enable billing to move off the free tier (the biggest single jump), then request a quota increase for the specific model and limit in the Cloud Console under IAM & Admin → Quotas. Flash-class models also carry far higher quotas than Pro.
Does Gemini expose rate-limit headers like OpenAI?
Not in the same x-ratelimit-* form. Check your live quotas in Google AI Studio or the Cloud Console Quotas page; the 429 error body includes a RetryInfo hint for per-minute waits.
Why am I rate limited when my request count is low?
You may be hitting tokens-per-minute (long prompts, files, images) rather than requests-per-minute, or the per-day cap. Identify which quota is exhausted before deciding whether backoff will even help.
Will switching to Gemini Flash raise my limits?
Effectively yes — Flash models have much higher per-minute and per-day quotas than Pro, so routing tolerant work to Flash adds headroom. It won't help if your whole project is over a shared daily cap; for that, enable billing or raise the quota.