# How to View Your Website From Another Country | ProxyJam

To see your site as a visitor abroad sees it, match the IP address, browser language, time zone and cookies to that market in a separate Chrome profile.

- Canonical: https://proxyjam.com/blog/view-website-from-another-country/
- Updated: 2026-10-20
- Language: en

A site usually decides your country from your IP address, then adjusts what it shows by browser language, time zone, cookies and any signed-in account. To view your own website from another country, every one of those has to match the market. That means a proxy in that country for the address, and a separate Chrome profile with the market's language and time zone and none of your cookies.


## Write down the same fields on every run

1. The date and time, the profile, and the address and country What Is My IP showed for it.
2. The redirect chain: every hop from the address you typed to the page you landed on, with its status code.
3. The price as shown, its currency, and whether tax is included.
4. Which of the products or plans you sell in that market are offered and in stock.
5. The consent banner: whether it appears, and which choices it offers.
6. The language the page is served in, and a screenshot of the first screen.

## Which signal comes from where, and how to set it for a test

|  | Where the site reads it | What sets it in Chrome | How to set it for a test |
|---|---|---|---|
| IP address | On the server or a CDN, looked up in a geolocation database | Your connection, or a proxy or VPN | A proxy in the market, set in the test profile |
| Browser language | The Accept-Language header and navigator.languages | Settings, Languages, Preferred languages | Move the market's language to the top of the list |
| Time zone | Page scripts, through the Intl API | The operating system | A DevTools location with the market's Timezone ID, or the system setting |
| Precise location | The Geolocation API, after the visitor allows it | The permission prompt and the device's location services | Block the prompt, or override the location in DevTools |
| Saved choices and accounts | Cookies, site storage and the signed-in account | The profile you browse in | A fresh profile per market, signed out or with a test account for that market |

Where each signal comes from follows MDN, Chrome Help and the DevTools documentation listed under Sources. Which signals a particular site reads, and in which order, differs from site to site; we measured no particular site.


## Quick answers

### Does an incognito window show the site the way another country sees it?

No. Incognito starts without your cookies, but the request still leaves from your own address. MDN also notes that Chrome lists only one language in Accept-Language in incognito mode, which may differ from what a real visitor sends.

### Can I test several countries at the same time?

Yes, with one Chrome profile per market, each with its own proxy, in windows side by side. Chrome stores one proxy setting per profile and has no per-tab proxy, so the profile is the unit.

### Should I clear cookies between runs?

If each run should look like a first visit, yes: clear the site's data in that profile before the run. If you are testing what a returning visitor sees, keep them and note it in the record, because a saved region or currency can outweigh the address.

### How do I confirm the address is in the target country?

Open What Is My IP in the test profile with the check page added to the proxy rule. It shows the address that reached it, where that address geolocates and the network it belongs to. Geolocation databases can disagree, so a site may still place the same address elsewhere.

### Can I test a particular city?

Not with ProxyJam. The static residential catalogue is sold by country, provider and plan, and no offer in it is tied to a city or a region.


## Sources

- [Cloudflare: HTTP headers](https://developers.cloudflare.com/fundamentals/reference/http-headers/), the CF-IPCountry header carrying the visitor's two-letter country code
- [MDN: Accept-Language header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Accept-Language), how browsers fill the header from their language settings, and the single language Chrome sends in incognito
- [MDN: navigator.languages](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/languages), the same language list as seen by page scripts
- [MDN: Intl.DateTimeFormat resolvedOptions()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions), the time zone a script reads, an IANA name defaulting to the runtime's
- [MDN: Geolocation API](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API), the permission a site needs before it learns a precise location
- [Google Chrome Help: Manage Chrome with multiple profiles](https://support.google.com/chrome/answer/2364824), adding a profile and what it keeps separate
- [Chromium: user data directory](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/user_data_dir.md), profile data including history, bookmarks and cookies
- [Chrome for Developers: chrome.proxy API](https://developer.chrome.com/docs/extensions/reference/api/proxy), the proxy setting an extension controls for its profile
- [Google Chrome Help: Change Chrome languages](https://support.google.com/chrome/answer/173424), adding and reordering preferred languages
- [Chrome DevTools: Locations](https://developer.chrome.com/docs/devtools/settings/locations), a custom location with a Timezone ID and a Locale, selected in the Sensors panel
- [Chrome DevTools: Sensors](https://developer.chrome.com/docs/devtools/sensors), overriding geolocation for the page under test
- [Chrome DevTools: Network features reference](https://developer.chrome.com/docs/devtools/network/reference), Preserve log, which keeps requests across page loads
- [curl manual](https://curl.se/docs/manpage.html), the -x, -I, -L and -H options
- [Google Search Central: locale-adaptive pages](https://developers.google.com/search/docs/specialty/international/locale-adaptive-pages), Googlebot's mostly US-based addresses and requests without Accept-Language
- [MaxMind: GeoIP Anonymous IP database](https://dev.maxmind.com/geoip/docs/databases/anonymous-ip/), the field that marks addresses registered to anonymous VPN providers
- [RFC 5737: IPv4 Address Blocks Reserved for Documentation](https://www.rfc-editor.org/rfc/rfc5737.html), the 203.0.113.0/24 range used for the example proxy address




To view your website from another country, the request has to arrive the way
a visitor's would: from an address in that country, with that market's browser
language and time zone, and without the cookies your own visits left behind. A
proxy takes care of the address, and the rest are browser settings. This guide
is about checking your own site, the job our
[region testing page](/solutions/region-testing/) describes: how to set it up
in Chrome, what to write down on each run, and when a VPN does the job as well.

## What does a site use to decide your country?

Usually the IP address, often combined with other signals. There are five, and
they come from different places.

- **The IP address.** The server, or a CDN in front of it, looks the address up
  in a geolocation database. Cloudflare, for example, can pass the visitor's
  country to the origin as a two-letter code in a `CF-IPCountry` header
  ([Cloudflare's header reference](https://developers.cloudflare.com/fundamentals/reference/http-headers/)).
- **The browser language.** Chrome sends an `Accept-Language` header built from
  the preferred languages in its settings, and page scripts read the same list
  from `navigator.languages`
  ([MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Accept-Language)).
- **The time zone.** A script can read the computer's time zone as a name such
  as `Europe/Berlin` through the `Intl.DateTimeFormat` API, in the `timeZone`
  field of its `resolvedOptions()`
  ([MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions)).
- **A precise location.** The Geolocation API reports coordinates only after
  the visitor allows it
  ([MDN](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API)),
  so most sites never get one.
- **What the site already knows.** A cookie holding the region or currency you
  picked last time, or the country on a signed-in account, can take
  precedence over the address.

The table "Which signal comes from where, and how to set it for a test" pairs
each signal with the Chrome setting that controls it.

## Why is a proxy on its own not enough?

The signals can disagree, and how a site handles the disagreement is part of
what you are testing. Route Chrome through a German address but leave the
language list on English (US), and a site that takes the language from
`Accept-Language` and the price from the address shows euro prices in English.
No real visitor in Germany with a German browser sees that page. Keep your
usual cookies, and the site may skip its country logic and serve the region
you chose last month.

So set every signal to the market before the first run, and keep it that way
for the runs that follow.

## How do I set up one Chrome profile per market?

Create a separate Chrome profile for each market and give it its own proxy. A
profile keeps its own history, passwords and settings
([Chrome Help](https://support.google.com/chrome/answer/2364824)), and its own
cookies
([Chromium's notes on the user data directory](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/user_data_dir.md)).
The German profile's cookies never reach the French one, and neither touches
your everyday browsing.

1. **Create the profile.** Select your profile picture at the top right, then
   Add Chrome profile, and name it after the market, such as "Test DE". Leave
   it signed out of your Google Account, so that nothing from your main
   profile syncs into it.
2. **Install a proxy extension in that profile.** An extension sets the proxy
   for the profile it is installed in
   ([chrome.proxy API](https://developer.chrome.com/docs/extensions/reference/api/proxy)).
   Add the market's proxy to it. Our free
   [ProxyJam Connector](/browser-extension/) is one such extension.
3. **Send only the domains under test through the proxy.** Add a rule for your
   site's domain and its subdomains, and leave the fallback on Direct. Chrome's
   own traffic and every other site keep your connection, and the proxy
   carries only the test. How rules become a PAC script, and why on HTTPS they
   match host names and never paths, is covered in
   [using a proxy only for certain sites in Chrome](/blog/chrome-proxy-for-specific-sites/).
4. **Add the hosts the page calls.** Open DevTools, reload the page and read
   the Domain column of the Network panel (right-click the column headers to
   show it if it is hidden). Prices often come from an API on
   another host, and a consent banner may ask its vendor's server which version
   to show. A host left out of the rule sees your own address, and the page
   ends up mixing two markets. Add each one.
5. **Set the language.** In Settings, Languages, add the market's language
   under Preferred languages and move it to the top
   ([Chrome Help](https://support.google.com/chrome/answer/173424)). That order
   is what `Accept-Language` sends.
6. **Set the time zone.** Chrome takes the time zone from the operating system
   and has no setting of its own. For a test, DevTools can supply one: in
   DevTools Settings, Locations, add a location with the market's Timezone ID
   and Locale, then pick it in the Sensors panel
   ([DevTools documentation](https://developer.chrome.com/docs/devtools/settings/locations)).
   The override belongs to the tab DevTools is open on, so open DevTools before
   loading the page. Changing the system time zone also works, for every
   program on the computer at once.
7. **Check the profile.** Add proxyjam.com to the rule for a minute and open
   [What Is My IP](/what-is-my-ip/). It should show the proxy's address,
   located in the market. Take the check page off the rule afterwards.

If the proxy needs a username and password and Chrome keeps asking for them,
[the proxy sign-in prompt](/blog/chrome-proxy-password-prompt/) explains why
and what to do.

## What should a regional check record?

The same fields on every run, so that two runs can be compared line by line.
The list "Write down the same fields on every run" is a starting set: the
redirect chain, price and currency, stock, the consent banner and the language,
plus the address the profile was using.

For the redirect chain, turn on Preserve log in the Network panel, which keeps
the requests from before a redirect in the list
([DevTools Network reference](https://developer.chrome.com/docs/devtools/network/reference)).
From a terminal, curl prints the headers of every hop when given `-I` and `-L`,
sends the request through a proxy with `-x`, and adds a language header with
`-H` ([curl manual](https://curl.se/docs/manpage.html)). The proxy address
comes from a range reserved for documentation
([RFC 5737](https://www.rfc-editor.org/rfc/rfc5737.html)); put your own in its
place.

```sh
curl -sIL -x http://203.0.113.10:8080 -H "Accept-Language: de-DE,de;q=0.9" https://example.com/
```

Each status line followed by a `location:` header is one hop. A plain request
like this one sees redirects, headers and prices written into the HTML. Because `-I` sends a HEAD request, a
server that answers HEAD differently from GET can show a different chain; drop
`-I` and add `-o /dev/null -D -` to print the headers of a normal request. It
runs no scripts, so a consent banner or a price filled in after the page loads needs
the browser profile.

Keep one row per run and one sheet per market. A difference between two runs
is worth investigating only when the address, the language and the time zone
were the same both times; if any of them changed, you are comparing two setups.

The redirect chain matters beyond QA. Google says its crawler's default
addresses appear to be in the United States and that it sends no
`Accept-Language` header
([Google Search Central](https://developers.google.com/search/docs/specialty/international/locale-adaptive-pages)),
so Google may not crawl or index a market version that is reachable only
through detection. A version with its own URL avoids that.

## Why does a static address beat a rotating one for repeat tests?

A comparison needs one thing to change at a time. A rotating pool gives out a
different address per request or per session, and each address has its own
geolocation record and its own network. When a price moves between Monday and
Thursday, you cannot tell whether the site changed or the address did. A static
address keeps the vantage point fixed, so it drops out of the comparison.
Holding one address and drawing from a pool are compared in more depth in
[ISP vs residential proxies](/blog/isp-vs-residential-proxies/).

A static address can still move: geolocation databases are updated, and an
address can be recorded under another country. So the What Is My IP check
comes before every run, the first one included. A rotating pool is the
better tool when you need many different addresses in one market at the same
time.

## When is a VPN enough, and when is it not?

A VPN is enough for a one-off look: whether the German home page loads, whether
the banner appears. It is quick, and many people already have one installed.

A VPN falls short in three ways when the check has to be repeated:

- A VPN app usually carries all of the device's traffic, so every program and
  tab is in the test country together, and two markets cannot sit side by side.
- Its exit addresses are shared by many users and form a known category in IP
  data: commercial databases carry a field for addresses registered to
  anonymous VPN providers
  ([MaxMind's documentation](https://dev.maxmind.com/geoip/docs/databases/anonymous-ip/)).
  A site that reads it may treat a VPN visitor differently, and the run then
  records that treatment.
- The exit address can change from one connection to the next, which brings
  back the rotating pool's problem.

## Where does ProxyJam fit?

ProxyJam sells static residential (ISP) proxies: an address in the country you
choose, registered to an internet provider, that stays yours for the period you
paid for. For this job that means one address per market. The countries are
listed on the [proxy locations page](/proxy-locations/), 77 today,
with prices per IP per period on the [pricing page](/pricing/). If an address
starts to geolocate outside the country you bought, that is grounds for a free
replacement, within the monthly limit set in
[section 2.5 of the Terms of Service](/terms-of-service/).

The product is sold by country, so a difference between two cities is beyond
what it can show. It is also meant for checking your own site: using an address
to reach content that a site withholds from your country is prohibited by
[section 5 of our Acceptable Use Policy](/acceptable-use-policy/). The
catalogue is on the [ISP proxies page](/isp-proxies/), and what an ISP proxy is
in the first place is explained in
[what ISP proxies are](/blog/what-are-isp-proxies/).

