TrafficLens
THEME

FOR MEDIA BUYERS ON PUSH, POP AND NATIVE

Catch the fake clicks your bot filter lets through.

TrafficLens checks every click you pay for and ranks your traffic sources by how many clicks were genuine. Each flagged click shows why, like an emulated phone or a datacenter IP posing as a mobile carrier.

Check my clicks free10,000 clicks/month · no card
Try to fool it →

Genuine ●Suspicious ▲Fake ■1 square = 1 click · scroll ↓

9,870 clicks from one placement ↓
FIG. 1 — zone_5812043 · Push network A · 8–14 Oct 2026 · n = 9,870 clicks
STEP 0 · ALL CLICKS. 9,870 clicks on your link.

Unchecked 9,870 Suspicious 0 Fake 0

Works with Keitaro · Voluum · RedTrack · BinomPropellerAds, RichAds, TrafficStars or any network that passes a placement ID

Adds ~0.5 s on tracking links · 0 ms with the on-page snippetNot a cloaker: every visitor reaches the same destination.

WHAT YOUR TRACKER CAN'T SEE

Your tracker says the placement converts at 0%. It can't tell you if that's fake clicks or your lander.

ROI rules can't cut a placement until it has spent a few payouts with no conversion, and your bot filter only stops the obvious bots. The rest run on the same anti-detect browsers and residential proxies you know from farming ad accounts. Each tool is good at faking one thing, like the browser profile or the IP. Faking one layer is cheap. Faking all five so they agree with each other is expensive. Where a click contradicts itself, that's the evidence.

SOURCES

Every traffic source, campaign and placement, ranked by how many clicks were genuine.

Sort by wasted spend and the placements to cut first come to the top. Copy them as a blacklist for your campaign. Click farms show up here too: their phones are real and pass the per-click checks, but the same few devices clicking all day don't.

VIEW
  1. Push network A
    71% ±1.0
    $203
  2. Push · BR · Android
    64% ±2.0
    $178
  3. zone_5812043
    22% ±0.8
    $134
  4. zone_6630118
    81% ±2.0
    $25
  5. zone_7019334
    77% ±3.0
    $19
  6. zone_4410927
    Not enough data · n = 84
    —
  7. Onclick · MX
    83% ±1.0
    $25
  8. Push network C
    88% ±1.0
    $18
  9. Pop network B
    54% ±2.0
    $93

Furthest left: zone_5812043, 22% genuine (±0.8). The same placement as Fig. 1.

FIG. 2 — Genuine share per row with 95% confidence interval. n = 86,358 clicks, 30 d, est. wasted spend $314. Sample data.

CASE FILE

Evidence you can send your network

Every flagged click gets a case file. It puts what the click claimed next to what we observed, and says how many genuine clicks looked the same. Whether you get a refund is the network's call.

v_8F3K2Q · zone_5812043 FAKE · 6 of 7 don't match
CLAIMEDOBSERVED
≠BrowserChrome 155 MobileChromium 155, desktop build
≠OSAndroid 14Linux x86_64
≠DeviceSamsung Galaxy S23No touch · 1920×1080 · 8 cores
≠GPUAdreno 740SwiftShader (software)
TLS stackChrome 155Chrome 155
≠TCP stackAndroid, mobile carrierLinux server, MSS 1460
≠Country / IPBrazil · Vivo mobileGermany · Hetzner AS24940
Highlighted: the rows behind F1
F1 · Device · ■ High

Software graphics on a flagship phone

The WebGL renderer is SwiftShader, which draws graphics on the CPU. Servers and emulators without a GPU use it. A Galaxy S23 has an Adreno 740 and never needs to.

HOW COMMON IN GENUINE TRAFFIC■ Never seen
0 looked like this click
0 of 48,210 genuine clicksChrome 155 Android clicks, 30 d
F2 · Connection · ■ High

TCP handshake from a Linux server

Window size, option order and MSS match a Linux server on a wired link. Phones on Vivo’s network arrive with a carrier MSS of 1400.

HOW COMMON IN GENUINE TRAFFIC■ 1 in 430
112 looked like this click
112 of 48,210 genuine clicksChrome 155 Android clicks, 30 d
F3 · Network · ■ High

Datacenter IP claiming a mobile carrier

The IP belongs to Hetzner Online, a hosting company in Falkenstein, Germany. The click was bought as Vivo mobile traffic in Brazil.

HOW COMMON IN GENUINE TRAFFIC■ 1 in 5,357
9 looked like this click
9 of 48,210 genuine clicksChrome 155 Android clicks, 30 d
F4 · Browser engine · ▲ Medium

JavaScript engine reports a desktop platform

Chrome on Android reports an ARM platform. This one reports Linux x86_64 and has desktop-only APIs.

HOW COMMON IN GENUINE TRAFFIC■ 1 in 1,555
31 looked like this click
31 of 48,210 genuine clicksChrome 155 Android clicks, 30 d
Finding 1 of 4

FIG. 3 — Case file v_8F3K2Q. Grey bar = all 48,210 genuine Chrome 155 Android clicks in 30 days; red pin = how many of them looked like this click. Sample data.

SETUP CHECK

You targeted BR · Android. 18% arrived as German desktops.

Per campaign, we compare the GEO and device you targeted with what actually arrived. If they don't match, you see which placements sent the difference.

74% BR · Android phone18% DE · Windows desktop8% Other

FIG. 4 — 1 square = 1% of 31,204 clicks, Push · BR · Android, 30 d. Sample data.

TRY TO FOOL IT

Open this page in your anti-detect browser or emulator and see what we see.

The public scan shows a verdict for each layer and stops there. It doesn't show which values gave you away, so it's a poor tool for tuning a bot. Your own clicks get full case files in your account.

Scan this browser →

EXAMPLE SCAN · claims Chrome 131 on Windows 11 · sample

  • Connection Genuine
  • Network Suspicious
  • Browser engine Genuine
  • Device Suspicious
  • Behaviour Not measured

HOW IT WORKS

Five layers checked on every click

Read the method →
  1. L1

    Connection

    1,840 caught

    Phones and servers shake hands differently, so a server posing as a phone stands out.

  2. L2

    Network

    2,604 caught

    Who owns the IP. A Hetzner address claiming to be Vivo, Brazil fails here.

  3. L3

    Browser engine

    2,291 caught

    Whether the JavaScript engine is the one the browser claims. Catches headless and automated browsers.

  4. L4

    Device

    702 caught

    What hardware is really there. A “Galaxy S23” drawing graphics on the CPU is an emulator or a server.

  5. L5

    Behaviour

    262 caught

    How the visit unfolds. Scripted sessions show up here, if the visitor stays long enough to measure.

FIG. 5 — Clicks from zone_5812043 first caught by each layer, of 9,870. Sample data.

Compared with what you use now

Decides before conversions arrive

ROI rules
No. Needs spend and conversions to pile up first
Bot filter
Yes, at the click
Enterprise suites
Yes
TrafficLens
Yes, per click

Explains each flagged click

ROI rules
No
Bot filter
A flag or list match; some show a reason
Enterprise suites
A score, sometimes a category
TrafficLens
Claimed vs observed, with how rare it is in genuine traffic

Works with any tracker

ROI rules
Only inside that tracker
Bot filter
Only inside that tracker
Enterprise suites
Often built for search and social ads
TrafficLens
Yes: by link, snippet or postback

Added latency

ROI rules
0 ms
Bot filter
A few ms (inline)
Enterprise suites
Varies
TrafficLens
~0.5 s on links · 0 ms on the redirect with snippet

Price for a solo buyer

ROI rules
Included
Bot filter
Included, or a paid add-on
Enterprise suites
Usually sales-led
TrafficLens
Free to 10k clicks · $99 for 500k

Where others win: inline filters in your tracker decide inside the redirect and add only a few milliseconds. If you need to block at the edge, keep them on and use TrafficLens to see what gets through.

Link or snippet, then postback

  1. 01

    Tracking link

    Put a TrafficLens link in your campaign. It runs the checks, then forwards the click to your tracker. Adds about 0.5 s.

    https://go.traffic-lens.com/c/8f3k?zone={zoneid}&cost={cost}
  2. 02

    On-page snippet

    Or skip the link: add one script to your lander. Checks run after the page loads, 0 ms on the redirect.

    <script src="https://cdn.traffic-lens.com/s.js" data-site="ldr_21"></script>
  3. 03

    Postback to your tracker

    We send the verdict and reason back to your tracker with the click ID. Sort placements by fake share in the report you already use.

    https://your-tracker.example/postback?subid={clickid}&tl={verdict}&why={reason}

Priced in clicks checked

Every plan runs all five layers and shows full case files.

Free

$0

10,000 clicks / month7-day evidence history. No card.Check my clicks free

Pro

$99/mo

500,000 clicks / month30-day history, tracker postbacks, blacklist export.Start Pro

Business

~$499/mo

5,000,000 clicks / month90-day history, team seats, API.Start Business

Volume

Custom

5M+ clicks / monthFor agencies running more than 5M clicks a month.Talk to us

FIG. 6 — Plan limits on a log scale of clicks per month.

FROM THE FOUNDER

I’m Pavel, an engineer. I’ve spent several years studying how browsers, phones and networks describe themselves, and how cheaply each of those claims can be faked. TrafficLens checks those claims on every click you pay for and shows you where they disagree.

— Pavel Zhukov

Questions buyers ask

No. Every visitor goes to the destination you set, whatever the verdict, and that includes network moderators and crawlers. TrafficLens records what each click was. To act on it, cut placements in your tracker or your network using the verdicts we post back.

About 0.5 s on tracking links: the visitor sees a blank check page while the checks run, then goes on to your tracker. With the on-page snippet the redirect isn’t touched, so it adds 0 ms there. The checks run after your lander loads.

Each layer compares what the click claimed with what we observed, and checks how often genuine clicks from the same browser and OS look the same. Usually, one failed layer makes a click Suspicious and two make it Fake. A single disagreement that genuine clicks never show, like a Galaxy S23 drawing graphics in software, is enough for Fake on its own. Some fakes only show up in bulk, like a farm of real phones, so we also flag placements by pattern. Unverified means we couldn’t measure enough, for example because the visitor left before the checks finished. We don’t guess.

Some will. A verdict never changes where the click goes, so a wrong one costs you no visitors. What it can cost you is a good placement. That's why each finding shows how many genuine clicks looked the same, like 112 of 48,210 for the TCP handshake in Fig. 3.

We process IP addresses and device signals to detect fraud, as your processor. We sign a data processing agreement on request.

Per-click evidence stays for your plan’s history window: 7, 30 or 90 days. After that we keep only counts per source and placement.