A multilingual site can produce a strange pattern.
“Is traffic in the main language going down?” “Why are English, Chinese, and other language versions going up?” “Wait… am I counted in the main-language traffic?”
All three can be true at once.
Foreign-language discovery may genuinely be growing. External traffic in the main language may be softening. At the same time, the site owner keeps opening new posts, checking links, returning to the home page, refreshing after fixes, and creating a surprisingly loyal “reader” in the default language.
That reader is often the operator.
This article explains how to exclude your own browser from analytics, when to use localStorage or cookies, why simply opening the site does not register you as an owner, what happens to historical data, and how to read multilingual traffic without letting QA activity distort the picture.
1. Separate external landings from internal navigation before judging traffic
Total page views are easy to misread on a site that the owner checks frequently.
Typical owner activity includes:
- opening a newly published article directly
- moving from the home page to the article
- clicking related links
- checking on both desktop and mobile
- refreshing repeatedly after a deployment
- coming back later to verify production again
A normal visitor may read one page and leave. The operator acts as editor, QA engineer, reader, and monitoring system at the same time.
For multilingual sites, it is therefore useful to separate at least two categories:
- external landing views
- internally referred views
If foreign-language pages are gaining external landings while the main language has a large share of internal navigation, “the main language is dominant” may partly mean “the operator browses the main-language interface a lot.”
2. “I opened it. Am I registered now?” — not unless code actually wrote a marker
Suppose you decide to mark your browser as the owner and then open the website once.
Does that automatically register the browser?
No.
Browsers do not infer intent and decide:
“This person looks like the owner. I will stop counting them.”
Something has to write a real marker, such as:
- a value in localStorage
- a cookie
- an authenticated admin preference
- a server-side internal-traffic label
Opening a page is a visit. Registering an owner browser is a state change.
If no code performed that state change, nothing was registered.
3. localStorage vs cookies: which one should you use?
Two common browser-level options are localStorage and cookies.
localStorage
localStorage stores values for a web origin and persists across ordinary browser sessions.
For example:
localStorage.setItem("analytics_owner", "1");
A client-side analytics script can check it before sending events:
if (localStorage.getItem("analytics_owner") === "1") {
return;
}
This is simple and works well when analytics events are created in the browser.
The limitation is that a server or edge worker cannot see localStorage when the initial HTTP request arrives.
Cookies
Cookies can be attached to matching HTTP requests and are therefore visible to the server or edge layer.
A browser-set example looks like this:
document.cookie =
"analytics_owner=1; Path=/; Max-Age=31536000; SameSite=Lax; Secure";
The server or edge worker can inspect the cookie and skip the analytics counter.
A cleaner implementation can set the cookie from an authenticated admin page or a private setup endpoint. If JavaScript does not need to read the cookie, HttpOnly may also be appropriate.
But remember: this marker is only for analytics exclusion.
Do not use a user-writable cookie or localStorage flag as authentication or authorization. That would be like letting anyone become the CEO by changing their desk nameplate.
4. Use cookies for server/edge counting; localStorage is fine for browser-only events
The choice is mostly about where counting happens.
Client-side event tracking
localStorage is often enough.
If JavaScript sends the analytics event after the page loads, it can check the owner flag first and send nothing.
CDN, edge worker, server, or access-log counting
Cookies are usually a better fit.
The server counts the request before browser JavaScript runs.
localStorage exists only inside the browser and is not automatically sent with the HTTP request.
A cookie is.
Same goal, different measurement point, different tool.
5. For a small solo site, a one-time owner setup is usually enough
Large companies may define internal traffic by office networks, accounts, or device management.
A one-person site can be much simpler.
A practical flow is:
- open a private owner-setup page
- set an owner cookie for a long but finite period
- ignore analytics for requests carrying that cookie
- provide a way to clear the marker
Remember that the marker is browser-specific.
Your desktop browser, phone browser, alternate browser, separate profile, and private-browsing session are different environments.
Setting it once does not erase every version of you across the universe.
6. Historical counts do not automatically shrink
If you add owner exclusion today, yesterday’s page views do not disappear.
The usual effect is:
“Do not mix my visits in from this point forward.”
Retroactive correction would require separate work, such as reprocessing raw logs or rebuilding aggregates.
For a young site with small numbers, spending hours reconstructing a few dozen historical owner views may not be worth it.
A simple note is often enough:
“Earlier data may contain operator activity; data after this date excludes the owner browser.”
Analytics is not a time-travel competition.
7. GA4 internal traffic filters and custom browser markers are different mechanisms
Google Analytics 4 provides an official method for defining internal traffic using IP addresses and then excluding it with data filters.
That can work well for stable office networks.
A solo operator may move between home Wi-Fi, mobile data, travel networks, tethering, or VPNs. In that situation, IP-only identification can become inconvenient.
For custom first-party analytics, a browser cookie or authenticated state can therefore be easier.
But these are not the same feature.
If you use GA4, follow GA4’s internal-traffic workflow and test filters before activating permanent exclusion. If you use custom analytics, exclude the owner at the point where your own system collects events.
8. Measure multilingual growth with owner-excluded external landings
Self-traffic can distort multilingual comparisons.
Imagine total traffic looks like:
main language: 70
foreign languages: 30
But the main-language 70 contains:
- 20 owner checks
- 20 internal navigation views
- 30 external landings
while almost all 30 foreign-language views are external landings.
Then the growth story is very different.
For discovery and demand, compare:
main-language external landings
vs.
foreign-language external landings
Also distinguish daily data from rolling windows.
A rolling seven-day total can fall simply because an older high-traffic day leaves the window. That does not automatically mean traffic collapsed today.
9. Minimum test procedure
Do not stop at “I think the owner filter works.”
Test it.
- confirm the owner marker exists in the browser
- open a normal page once
- verify that no analytics event is recorded, or that it is discarded as owner traffic
- confirm that another browser is still counted normally
- remove the marker and verify that counting resumes
Browser developer tools can show both localStorage and cookies.
Opening the setup page is not proof.
Computers are excellent at following instructions and terrible at reading your mind.
10. Conclusion: remove yourself from the sample before celebrating global growth
Seeing foreign-language traffic appear is exciting.
But the default-language side often has one extremely loyal visitor: the operator.
The clean approach is:
- separate external landings from internal navigation
- explicitly mark the owner browser
- use localStorage for browser-only event collection
- use cookies for server or edge counting
- remember that opening the site alone does not register anything
- leave historical data alone unless reprocessing is genuinely worth it
- evaluate multilingual demand with owner-excluded external landings
If international readers are finally arriving, great.
Just make sure you are not personally inflating the home team while measuring the match.
References (3)
- MDN: Window.localStorage
https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage - MDN: Set-Cookie header
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Set-Cookie - Google Analytics Help: Exclude internal traffic
https://support.google.com/analytics/answer/10104470
