How IP to AWS Service works

Every answer comes from AWS's own published list of IP ranges, which your browser downloads directly from AWS. The matching happens in your browser too. This site has no server-side code and no database: it is a set of static files.

This page explains where the data comes from, what happens to what you type, how the headline answer is chosen, and what the answers can't tell you.

The data comes straight from AWS

  1. Download. A background worker in your browser downloads ip-ranges.json from ip-ranges.amazonaws.com. The file is a few megabytes and AWS serves it uncompressed, so on a slow mobile connection it can take a while; a status line shows the progress. The home page starts the download when you start a lookup, or otherwise once the page has finished loading (it waits for you if your browser has asked sites to save data). Other pages download it only when you press a button.
  2. Processing. The same worker, a Web Worker running separately from the page, parses the file and builds a lookup index, so the page stays responsive while it works. It checks the file's shape first. If something else arrived instead, such as a Wi-Fi sign-in page or a proxy's error page, you get an error message, not wrong answers.
  3. A saved copy. The index is saved in your browser's IndexedDB storage, so on your next visit answers appear immediately from the saved copy.
  4. A freshness check. When there is a saved copy, the page asks AWS for just the first 64 bytes of the file (an HTTP Range request) and compares the version number in it, the syncToken. If AWS has published a newer version, the page downloads it and updates the answer on screen if needed.
  5. The data date. Every result says when AWS published the data behind it. If that is more than two days ago, you'll see a warning, because AWS normally publishes much more often than that.

The addresses you look up never leave your browser. Matching happens locally against the downloaded list. AWS sees that your browser downloaded its public file, but not what you looked up. The only lookups that involve anyone else are the ones described below. The optional ones run only when you ask: when you click their button, or, for the network check, automatically once you have ticked the box that turns that on.

Downloading from AWS directly means there is no copy on this site to go stale and no data pipeline to break. The cost is a bigger download than a compressed copy would be. It also means that if AWS ever moves the file or changes its format, fresh downloads will fail until the site is updated; saved copies keep answering, with their date shown.

Matching and the headline answer

You can enter an IPv4 or IPv6 address, a CIDR range, an address with a port, a URL or a hostname. IPv4 addresses written in IPv6 form (::ffff:52.94.76.1, or NAT64's 64:ff9b::/96) are unwrapped and checked as IPv4. Private, loopback and link-local addresses get their own explanation, including AWS's special addresses such as the EC2 instance metadata service at 169.254.169.254.

AWS's ranges overlap: an address usually sits in a small range for a specific service, inside a larger EC2 range, inside an AMAZON range. The page lists every matching range, most specific first, and picks one headline:

  1. The most specific range (the longest prefix) wins.
  2. Within that range, a named service beats EC2, and EC2 beats AMAZON. AWS documents this for shared ranges: a range tagged both S3 and EC2 is used only by S3.
  3. EC2 alone is reported as "EC2 address space", never as "an EC2 instance".
  4. A range tagged only AMAZON is reported as "service not disclosed". If it sits inside a larger EC2 range, it is flagged as an undisclosed service carved out of EC2 space.
  5. If an enclosing range is GLOBAL while the specific one is regional, both are shown.

The ip-ranges.json reference walks through worked examples, and the service codes reference explains what each code means, including the codes that only ever mark traffic from AWS. For a CIDR range, the page shows the published ranges that contain it and the ones inside it.

Hostnames: DNS over HTTPS

A web page can't make DNS queries itself, so to turn a hostname into addresses the page asks a public resolver over HTTPS:

The page asks for IPv4 and IPv6 addresses at the same time, shows any chain of aliases (CNAME records), and checks each address it gets back against AWS's ranges. Aliases often say more than the addresses do: a name ending in cloudfront.net, elb.amazonaws.com or lambda-url.region.on.aws names the service directly. Many AWS-hosted sites don't expose such an alias, though.

Things to keep in mind:

Reverse DNS (optional)

For an IP result, the "Look up reverse DNS" button asks the same resolvers for the address's PTR record, the name its operator gave it. A few name patterns add real information, and the page recognises them:

A generic name such as ec2-3-18-1-10.us-east-2.compute.amazonaws.com doesn't prove there is an EC2 instance: load balancers, NAT gateways and AWS's own API endpoints get the same kind of name. Many AWS addresses, and nearly all IPv6 addresses, have no reverse DNS name at all. And whoever controls an address block controls its reverse DNS, so a name is a hint, never proof.

Who announces an address (optional)

When an address isn't in AWS's published ranges, the page offers a button to check which network announces it on the internet. It asks RIPEstat, a public data service run by RIPE NCC, for the announcing network (its autonomous system number, or ASN) and that network's registered name. The answer falls into one of these groups:

The check is opt-in because it sends the address to RIPE NCC. It runs when you click the button, or, once you tick the box to allow that, for the address on screen and automatically for later lookups. See the privacy page.

Blind spots

What it will never tell you

Accuracy

The answers are only as current and complete as AWS's published file, read through the rules on this page. They are provided as they are, without warranty. Before a decision that matters, such as blocking a network or sending a complaint, check AWS's own documentation. This site is not affiliated with or endorsed by Amazon Web Services.

If an answer looks wrong or misleading, please open an issue with the address you looked up and what you expected.

Source code

The code is public at github.com/aronbodogai/iptoawsservice. It is plain JavaScript with no third-party libraries. The matcher is tested against a pinned copy of AWS's file and a brute-force reference, and every value that comes from DNS or RIPEstat is displayed as plain text, never as HTML. A strict Content Security Policy allows no third-party scripts at all.