Building a Zero-Cost VPN Monitoring System: 645+ Measurements from Tokyo

How I built an automated VPN testing platform that runs 24/7 on Google's free tier


Most VPN review sites don't actually test VPNs. They recommend whatever pays the highest affiliate commission.

As a data analyst in Tokyo, I wanted to change that. So I built Tokyo VPN Speed Monitor - an automated system that tests 15 VPNs every 6 hours and publishes all data openly.

The best part? It runs on $0/month.

The Motivation

Working with data professionally, I've seen how easily numbers can be manipulated to serve commercial interests. The VPN review industry is particularly egregious:

  • Sites rank VPNs by affiliate commission, not performance
  • "Independent" reviews are thinly-veiled advertisements
  • Actual testing is rare or non-existent
  • Most data is US/EU-centric, ignoring Asian users

I wanted to build something different: transparent, automated, and unbiased.

What I Built

Tokyo VPN Speed Monitor measures VPN performance from an Asian perspective:

Core Features:

  • Automated testing every 6 hours
  • 645+ measurements collected
  • Statistical stability analysis
  • Price monitoring with alerts
  • Free VPN leak detection tool
  • Public REST API
  • MIT License (fully open source)

Live Demo: blstweb.jp/network/vpn

Architecture: Free Tier All the Way

Google Apps Script (Backend)

The entire automation runs on Apps Script's free tier:

function measureVPNSpeed() {
  const vpns = getActiveVPNList();
  
  for (const vpn of vpns) {
    const result = {
      download: testDownloadSpeed(vpn),
      upload: testUploadSpeed(vpn),
      latency: measureLatency(vpn),
      timestamp: new Date()
    };
    
    recordMeasurement(vpn, result);
    analyzeStability(vpn, result);
    detectAnomalies(vpn, result);
  }
}

Trigger: Runs every 6 hours automatically Cost: $0 (within free tier limits)

Google Spreadsheet (Storage)

Using Spreadsheet as a time-series database:

function recordMeasurement(vpn, result) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName('Measurements');
    
  sheet.appendRow([
    result.timestamp,
    vpn.name,
    result.download,
    result.upload,
    result.latency
  ]);
}

Advantages:

  • Free, unlimited storage
  • Built-in REST API
  • Easy data exports
  • Collaborative editing
  • No database setup

Statistical Analysis

Measuring stability, not just speed:

// Coefficient of Variation
function calculateStability(measurements) {
  const speeds = measurements.map(m => m.download);
  const mean = average(speeds);
  const stdDev = standardDeviation(speeds);
  
  return {
    mean: mean,
    cv: (stdDev / mean) * 100,
    rating: getRating(cv)
  };
}

// 3-Sigma Anomaly Detection
function detectAnomalies(current, historical) {
  const mean = average(historical);
  const sigma = standardDeviation(historical);
  const threshold = mean - (3 * sigma);
  
  if (current < threshold) {
    sendAlert({
      vpn: vpn.name,
      severity: 'high',
      message: `Speed ${((mean - current) / mean * 100).toFixed(1)}% below normal`
    });
  }
}

Key Findings: 645+ Measurements

Time-of-Day Patterns

Speed varies significantly by hour:

  • Fastest: 6am-9am Tokyo time (avg 12% faster)
  • Slowest: 9pm-12am Tokyo time (peak usage)
  • Variation: Up to 30% between peak and off-peak

Top Performers from Tokyo

1. NordVPN

  • Average: 465 Mbps
  • Coefficient of Variation: 7.2% (most stable)
  • Uptime: 100%
  • Price: ¥410/month

2. ExpressVPN

  • Average: 428 Mbps
  • CV: 12.5%
  • Uptime: 98.2%
  • Price: $2.99/month (highest)

3. Surfshark

  • Average: 385 Mbps
  • CV: 15.8%
  • Uptime: 99.1%
  • Price: ¥288/month (best value)

Price vs Performance

No correlation between price and performance. The most expensive VPN isn't the fastest. Mid-range options often deliver better value.

Weekend Effect

Speeds are 5% more stable on weekends due to lower overall network congestion.

Outage Patterns

60% of outages occur between midnight-6am (maintenance windows).

VPN Leak Detection Tool

Beyond speed, security matters:

Client-Side Diagnostics:

async function checkDNSLeak() {
  const response = await fetch('https://dns-leak-test.com/api');
  const data = await response.json();
  
  return {
    leaked: data.country !== expectedCountry,
    servers: data.dns_servers
  };
}

async function checkWebRTCLeak() {
  const pc = new RTCPeerConnection({iceServers: []});
  const leakedIPs = await detectLocalIPs(pc);
  return leakedIPs;
}

Privacy Guarantee:

  • 100% client-side execution
  • Zero data transmission to servers
  • No tracking or cookies

Try it: VPN Leak Test

Transparency as a Feature

Everything is public:

Open Data:

  • All 645+ measurements accessible via API
  • Historical trends publicly visible
  • No data manipulation or filtering

Open Source:

  • Full codebase on GitHub (MIT License)
  • Community contributions welcome
  • Fork and deploy your own instance

No Conflicts:

  • No sponsored content
  • No revenue model

REST API

Access all data programmatically:

# Latest measurements
GET https://www.blstweb.jp/network/vpn/api/latest

# Historical data
GET https://www.blstweb.jp/network/vpn/api/history?vpn=nordvpn&days=30

# Rankings
GET https://www.blstweb.jp/network/vpn/api/rankings

Response Format:

{
  "vpn": "nordvpn",
  "timestamp": "2025-12-21T10:00:00Z",
  "download": 465.2,
  "upload": 382.1,
  "latency": 12.5,
  "cv": 7.2
}

Roadmap

Phase 1: Geographic Expansion (1-3 months)

  • Osaka and Fukuoka test locations
  • 20 VPN providers
  • ML-based anomaly detection

Phase 2: Asian Network (3-6 months)

  • Seoul, Singapore, Hong Kong
  • Community-submitted VPN requests
  • Enhanced API with more metrics

Phase 3: Global Scale (6-12 months)

  • Worldwide testing network
  • Real-time dashboard
  • Mobile applications

Lessons Learned

1. Free Tier Is Powerful

Google's free tier is surprisingly robust for production workloads. Strategic use eliminates infrastructure costs entirely.

2. Constraints Drive Simplicity

The 6-minute execution limit forced elegant, efficient code. Constraints can be creative catalysts.

3. Transparency Builds Trust

Open-sourcing everything led to community contributions and validation. Transparency > monetization.

4. Data > Opinions

Automated, continuous testing beats one-time manual reviews. Let the data speak.

Contributing

This is a community project:

GitHub: hmy0210/vpn-stability-ranking

Ways to contribute:

  • Report bugs
  • Suggest features
  • Submit pull requests
  • Recommend VPNs to test
  • Share feedback

Start Here

Live Dashboard: blstweb.jp/network/vpn

Source Code: github.com/hmy0210/vpn-stability-ranking

VPN Leak Test: blstweb.jp/network/vpn/security-diagnosis


Questions? Find me on Twitter @takechiyo0210