Also in:HE

Googlebot IP Checker

To verify Googlebot, match the request's IP against the ranges Google publishes for its crawlers, or run a reverse DNS lookup followed by a forward lookup that returns the same IP. This page has a Googlebot IP checker and the full list of Googlebot IP ranges, checked against Google's files daily.

Table of Contents

Key points

  • To check whether an IP is really Googlebot, paste the source IP from your server log into the checker on this page. The checker reports whether the address falls inside one of the IP ranges Google publishes for its crawlers, and which crawler category the range belongs to.
  • A Google crawler can be verified in two ways: by matching its IP against the published ranges, or by a reverse DNS lookup followed by a forward lookup that returns the same IP. When the IP matches but reverse DNS does not point back to Google, I would keep the request unverified and run both checks again later.
  • A Googlebot user agent string does not verify a request, because any client can send it. A request that claims to be Googlebot from an IP outside the ranges and without a Google hostname is not from Google.
  • Google splits its crawler IP ranges across five JSON files, each covering different bots, so a request has to be checked against the file for the bot it claims to be. Google publishes no schedule for changing the ranges, so a firewall allowlist should load them from those files automatically instead of being copied once.

This page lists every IP address and range Google publishes for Googlebot and its other crawlers, with a Googlebot IP checker at the top. Paste an IP address from your server log into the field below to see whether it falls inside one of those ranges, and in which crawler category. Under the checker is the full list of Googlebot IPs and CIDR ranges from Google’s five JSON files, checked against them daily, followed by how to verify Googlebot with DNS.

Last checked: 21/10/26 · Google last updated the list on 13/10/26

Googlebot IP ranges
Network (CIDR)VersionTypeReverse DNS
2001:4860:4801:10::/64IPv6Common Crawlerscrawl-***.googlebot.com
2001:4860:4801:11::/64IPv6Common Crawlerscrawl-***.googlebot.com
2001:4860:4801:12::/64IPv6Common Crawlerscrawl-***.googlebot.com
2001:4860:4801:13::/64IPv6Common Crawlerscrawl-***.googlebot.com
2001:4860:4801:14::/64IPv6Common Crawlerscrawl-***.googlebot.com
2001:4860:4801:15::/64IPv6Common Crawlerscrawl-***.googlebot.com
2001:4860:4801:16::/64IPv6Common Crawlerscrawl-***.googlebot.com
2001:4860:4801:17::/64IPv6Common Crawlerscrawl-***.googlebot.com
2001:4860:4801:18::/64IPv6Common Crawlerscrawl-***.googlebot.com
2001:4860:4801:19::/64IPv6Common Crawlerscrawl-***.googlebot.com

Total 2181 IP networks

How to Use the Googlebot IP Checker

Take the IP address from the request you want to check. In a server access log it is usually the first field of the line, next to the user agent that claims to be Googlebot. If your site sits behind a CDN or a proxy, use the visitor IP the CDN passes on, not the IP of the CDN itself.

Paste the address, IPv4 or IPv6, into the checker and press Enter. When the IP falls inside one of Google’s published ranges, the checker shows the range and the crawler category it belongs to. When it does not match, the IP is not in any of the five files as of the last check shown above.

Matching an IP against these ranges is one of the two verification methods Google documents for its crawlers. A match gives you the crawler category, not the specific crawler that sent the request, and it reflects the files as of the last check. The user agent string verifies nothing on its own, because any client can send Googlebot in it. Google: Verify Requests from Google Crawlers and Fetchers

How to Verify Googlebot with Reverse and Forward DNS

The second method checks DNS instead of this list, in two steps.

First, run a reverse DNS lookup on the IP from your log. Use the host command on Linux or macOS, or nslookup on Windows:

bash
# Linux / macOS
host 66.249.66.1

# Windows
nslookup 66.249.66.1

For a genuine Googlebot request, the hostname ends in googlebot.com:

javascript
1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com

Second, run a forward DNS lookup on the hostname you got, and check that it returns the IP you started with:

bash
host crawl-66-249-66-1.googlebot.com

The request passes when the hostname ends in googlebot.com, google.com or googleusercontent.com and the forward lookup returns the same IP. Anyone can point the reverse DNS of their own IP at a Google-looking name, but they cannot make Google’s hostname resolve to their IP, which is why the forward lookup is needed.

Googlebot IP and DNS Checks with Different Results

  • If the IP is in the ranges but reverse DNS fails, check that you looked up the full address, and that you expected the right hostname: user-triggered fetchers resolve to gae.googleusercontent.com or google.com, not googlebot.com. The range match is itself one of the two verification methods. If the DNS still does not point back to Google, I would keep the request unverified and run both checks again later.
  • If reverse and forward DNS pass but the IP is not in the list, the request passes Google’s DNS method. Make sure the IP was checked against all five files, and look at the last-checked date above the checker, since Google may have added a range after it.
  • If neither check passes, the request is not from Google, whatever its user agent says.

Googlebot IP Ranges: Which JSON File Covers Each Bot

Google publishes its crawler IP ranges as five JSON files. Each file covers different Google bots, so a request has to be checked against the file for the bot its user agent names. What each bot does is in my guide to Google’s crawlers and bots.

IP fileBots it covers (user agent tokens)
common-crawlers.jsonGooglebot (smartphone and desktop), Googlebot-Image, Googlebot-Video, Googlebot-News, Storebot-Google, Google-InspectionTool, GoogleOther, Google-CloudVertexBot
special-crawlers.jsonAdsBot-Google, AdsBot-Google-Mobile, Mediapartners-Google, APIs-Google, Google-Safety
user-triggered-fetchers.json and user-triggered-fetchers-google.jsonFeedFetcher-Google, Google-Read-Aloud, Google-Site-Verification, GoogleMessages, Google-Pinpoint, Google-CWS, Google-GeminiNotebook
user-triggered-agents.jsonGoogle-Agent

Google-Extended is not in the table. It is a robots.txt token, not a crawler, so it has no user agent and no IP addresses of its own.

The table at the top of the page holds 2,181 IP networks (CIDR blocks), IPv4 and IPv6, from all five files. This page is checked against Google’s files daily. Google publishes no update schedule of its own, and last changed the list on 13/10/26.

The raw files on Google’s site:

What the Googlebot IP List Helps You Do

For technical SEO work and server administration, the list helps with:

  • Blocking fake bots that send a Googlebot user agent
  • Letting real Google requests through firewall and rate-limit rules
  • Picking out real Googlebot hits when you study crawl patterns in server logs
  • Troubleshooting indexing issues that show up in Search Console

Which IP File Each Google Crawler Category Uses

Google’s documentation defines three categories of crawler: common crawlers, special-case crawlers and user-triggered fetchers. There are five IP files because the third category is split across three of them. What is user-triggered fetcher? A user-triggered fetcher is a bot that fetches a page because a user asked, not as part of proactive crawling. Full definition of user-triggered fetcher

To verify a request, look up the file its crawler is in, not only its category.

Common Crawlers: Googlebot and the General-Purpose Bots

This category holds Googlebot and the other general-purpose crawlers in the first row of the table above.

Special-Case Crawlers: Bots for Ads and Other Google Products

These crawlers work for specific Google products, mainly advertising ones such as AdsBot.

Their reverse DNS hostnames look like rate-limited-proxy-***-***-***-***.google.com, and special-crawlers.json holds 272 (136 IPv4, 136 IPv6) networks.

User-Triggered Fetchers: Fetches a User Starts

In this category the end user triggers the fetch, for example through Google Site Verifier or Read Aloud. Google’s AI agents belong here too.

The category is split across three files:

  • user-triggered-fetchers.json for fetches by sites and services running on Google Cloud, for example reading an RSS feed for a user of that site, whose reverse DNS ends in gae.googleusercontent.com
  • user-triggered-fetchers-google.json for fetchers Google itself controls, whose reverse DNS ends in google.com
  • user-triggered-agents.json, the dedicated file for Google’s AI agents

The two fetcher files together hold 1,572 (786 IPv4, 786 IPv6) networks, and the agents file holds 20 (12 IPv4, 8 IPv6).

The table above gives the agents file its own row because its IP ranges are separate. Google’s documentation still counts those agents as user-triggered fetchers, not as a fourth category.

How Many IP Networks Google Publishes, by Category

Networks per Crawler Category

Crawler Type IPv4 IPv6 Total
Common Crawlers 170 147 317
Special Crawlers 136 136 272
User-Triggered Fetchers 786 786 1,572
User-Triggered Agents 12 8 20
Total 1,104 1,077 2,181

Most Blocks Are /27 for IPv4 and /64 for IPv6

Google publishes its crawler ranges as small blocks. Most IPv4 blocks are /27 (32 addresses each) and most IPv6 blocks are /64. The smallest block is a /28 and the largest a /16.

How Bing and Other Crawlers Publish Their IPs

Other crawlers handle verification in their own ways:

  • Bing publishes the Bingbot ranges at bing.com/toolbox/bingbot.json and also supports reverse DNS verification.
  • Facebook’s crawler has only limited published ranges.
  • Semrush publishes a list for its bot.

Use the IP Ranges in a Firewall or Script

Before adding a rule, check what your firewall or server already allows or blocks, since an earlier rule may already decide what happens to Google’s traffic. Google changes these ranges without a published schedule, so a list copied once goes stale. Load the ranges from the JSON files and refresh them automatically, or a new Google range ends up blocked.

Allow a Googlebot Range in iptables

To allow a Googlebot range in iptables, add one rule per CIDR block. The -A flag appends the rule to the end of the INPUT chain, so an earlier rule that drops the same traffic still wins. This example allows a single block, and a real setup needs one rule for every range in the files you use:

bash
# Allow Googlebot
iptables -A INPUT -s 66.249.64.0/27 -j ACCEPT

Mark Googlebot Requests in Nginx

To mark Googlebot requests in Nginx, add a geo block to the http section of your configuration, with one line per CIDR range. The $is_googlebot variable is then 1 for requests from those ranges, and it changes nothing until a rule of yours uses it, for example to exempt those requests from rate limiting:

nginx
# geo block to identify Googlebot
geo $is_googlebot {
    default 0;
    66.249.64.0/27 1;
    # ... other networks
}

Load the Ranges from Google’s JSON Files in a Script

To build an allowlist in a script, fetch the files from Google and read the prefixes array, where each entry holds an ipv4Prefix or an ipv6Prefix. This request downloads the Googlebot file, and the other four files have the same structure:

bash
# Download all Googlebot IPs
curl https://developers.google.com/static/crawling/ipranges/common-crawlers.json

# Example response structure
{
  "creationTime": "2026-07-24T14:46:00.000000",
  "prefixes": [
    {
      "ipv4Prefix": "66.249.64.0/27"
    },
    {
      "ipv6Prefix": "2001:4860:4801:10::/64"
    }
  ]
}

In each of these files, the creationTime field shows when Google published it.

Further reading

Thanks for reading. If it helped, you can add me as a preferred source on Google or send the post to someone who needs it. The conversation continues on LinkedIn or X. And if you’re a bot, at least give me credit 💩

Frequently asked questions

What are Googlebot's IP addresses?

Google publishes the Googlebot IP ranges in common-crawlers.json, and the ranges of its other crawlers and fetchers in four more JSON files. The table on this page lists all of them in CIDR notation, IPv4 and IPv6, refreshed from the files at every check. Most IPv4 blocks are /27 and most IPv6 blocks are /64.

How do I check if an IP address is really Googlebot?

Paste the IP from your server log into the checker at the top of this page. It tells you whether the address falls inside one of the IP ranges Google publishes for its crawlers, and in which category. To confirm a single request independently, run a reverse DNS lookup on the IP (host ), check that the hostname ends in googlebot.com, google.com or googleusercontent.com, then run a forward DNS lookup on that hostname and check that it returns the same IP.

The IP is in Google's ranges but reverse DNS fails. Is it Googlebot?

A match against the published ranges is one of Google's two verification methods. Check the DNS step too: make sure you looked up the full IP, and note that user-triggered fetchers resolve to gae.googleusercontent.com or google.com, not googlebot.com. If the hostname still does not point back to Google, I would keep the request unverified and run both checks again later.

Reverse DNS points to Google but the IP is not in the list. What now?

If the reverse lookup gives a googlebot.com, google.com or googleusercontent.com hostname and the forward lookup on that hostname returns the same IP, the request passes Google's DNS verification method. Make sure the IP was checked against all five JSON files, not only common-crawlers.json, and look at the last-checked date on this page, since Google may have added a range after it.

A request claims to be Googlebot but its IP is not on the list. What now?

Treat it as unverified, since any client can put Googlebot in its user agent string. Confirm you checked all five files, then run the reverse and forward DNS lookups. If neither check passes, the request is not from Google.

Does the checker work with IPv6 addresses?

Yes. Google publishes IPv6 ranges next to the IPv4 ones in each JSON file, and the checker accepts both formats. Most of the IPv6 blocks are /64. The reverse and forward DNS check works the same way for IPv6.

How often does Google update the Googlebot IP ranges?

Google publishes no update schedule. Each JSON file has a creationTime field, and Google re-publishes the files often even when the ranges stay the same, so this page tracks the date the list itself last changed. This page is checked against the files daily and shows that date above the checker.

Should I allowlist Googlebot by IP address in my firewall?

You can, if you load the ranges from Google's JSON files and refresh them automatically. A list copied once goes stale when Google adds a range, and the firewall then blocks real Googlebot requests. Allow only the files for the crawlers you need: common-crawlers.json covers Googlebot itself.

What is the CIDR notation in the IP list?

CIDR notation describes a range of IP addresses as a network address plus a prefix length. For example, 66.249.64.0/27 covers the 32 addresses from 66.249.64.0 to 66.249.64.31.