How to Test Internet Speed and Reliability Before Moving to Bali as a Remote Worker
Moving to Bali as a remote worker requires careful consideration of one critical factor: internet connectivity. Unlike tourist hotspots with fiber connections, many areas in Bali offer varying levels of reliability. This guide provides practical methods to evaluate internet speed and stability before committing to a relocation.
Why Internet Reliability Matters More Than Raw Speed
Speed test results show bandwidth capacity, but reliability determines whether you can maintain a productive workflow. A connection averaging 50 Mbps with consistent latency proves more valuable than 100 Mbps with frequent drops. For remote developers, latency affects git operations, video calls, and collaborative coding sessions. Packet loss and jitter can derail real-time communication tools like Zoom or Slack calls.
Bali’s internet infrastructure has improved significantly, with fiber availability expanding in areas like Seminyak, Canggu, and Ubud. However, rural areas and newer coworking spaces may rely on satellite or limited cable infrastructure. Thorough testing before your move prevents productivity disruption.
Understanding Bali’s Internet Landscape
Bali’s connectivity varies sharply by neighborhood. Canggu and Seminyak have become digital nomad hubs with multiple ISPs competing for business, resulting in reasonably reliable fiber connections at many coworking spaces. Ubud offers good connectivity in the central area near Monkey Forest Road, with quality dropping as you move toward the rice fields.
The main ISPs operating across Bali include Telkom Indonesia (IndiHome fiber), Biznet, Oxygen, and First Media. Of these, Biznet tends to receive the best reviews from remote workers for consistency, though availability is patchy outside major areas. IndiHome is the most widely available but can experience congestion during peak evening hours.
International routing is a separate concern from raw download speed. Your connection may show 100 Mbps on a local speed test but perform poorly for GitHub pushes or AWS console access because the routing path to US or European data centers adds significant latency. Always test against servers in your actual cloud region.
Essential Speed Test Methods
Using CLI Speed Test Tools
For accurate, scriptable results, use command-line speed test utilities. The speedtest-cli package provides consistent measurements:
# Install speedtest-cli
pip install speedtest-cli
# Run a basic speed test
speedtest
# Output only the results in CSV format
speedtest --csv
For automated monitoring, create a simple cron job to record results:
# Run speed test every hour and log results
0 * * * * speedtest --csv >> ~/speedtest_logs/speed_$(date +\%Y\%m\%d).csv
Measuring Latency and Packet Loss
Speed alone doesn’t tell the complete story. Use ping and traceroute to diagnose network stability:
# Test latency to common endpoints
ping -c 20 8.8.8.8
ping -c 20 github.com
ping -c 20 cloudflare.com
# Trace the route to identify bottlenecks
traceroute -m 15 8.8.8.8
Look for consistent latency below 100ms to major global endpoints. Packet loss exceeding 2% indicates unreliable infrastructure. High variance in response times suggests network congestion during peak hours.
For a more thorough jitter measurement, mtr (Matt’s Traceroute) combines ping and traceroute into a live view:
# Install mtr if needed
brew install mtr # macOS
apt install mtr # Ubuntu
# Run for 60 packets to get a reliable average
mtr --report --report-cycles 60 github.com
The output shows per-hop latency and packet loss. A hop with high loss that doesn’t affect subsequent hops is usually just an ICMP rate-limit. Loss that persists through all downstream hops indicates a real problem.
Testing During Different Times
Network performance varies throughout the day. Test during:
- Morning (7-9 AM): Light usage, typically reliable
- Midday (12-2 PM): Moderate traffic
- Evening (7-10 PM): Peak usage, potential congestion
- Late night (11 PM - 6 AM): Minimal load
Create a testing schedule that captures these windows:
#!/bin/bash
# comprehensive_speedtest.sh
LOGFILE="~/bali_internet_tests/results_$(date +\%Y\%m\%d_\%H\%M\%S).txt"
echo "=== Speed Test $(date) ===" | tee -a $LOGFILE
echo "Location: [YOUR_TEST_LOCATION]" | tee -a $LOGFILE
echo -e "\n--- Morning Test ---" | tee -a $LOGFILE
speedtest --csv >> $LOGFILE
echo -e "\n--- Ping Tests ---" | tee -a $LOGFILE
ping -c 10 8.8.8.8 | tail -1 >> $LOGFILE
ping -c 10 github.com | tail -1 >> $LOGFILE
echo -e "\n--- Bandwidth Test with iperf3 ---" | tee -a $LOGFILE
# Test against a nearby server
iperf3 -c iperf.he.net -R >> $LOGFILE 2>&1
Coworking Space Evaluation
Bali offers numerous coworking spaces with varying internet setups. Before signing a membership, request a trial day and conduct your own tests:
- Connect to the workspace WiFi with your laptop
- Run multiple speed tests at different times during your visit
- Test your actual workflow: clone a large GitHub repository, join a Zoom call, upload to S3
- Ask about backup connections: some spaces have redundant fiber or 4G/5G failover
Request the specific bandwidth allocation from space management. A space claiming “100 Mbps” may share that across 50 users, resulting in 2 Mbps per person during peak hours.
The best coworking spaces in Canggu—such as Dojo, Outpost, and Samadi—invest in redundant ISP connections and automatic failover. Ask specifically whether the space has two independent ISPs or a 4G backup. Spaces that can answer this question confidently are usually the ones worth paying a premium for.
Testing Your Specific Work Tools
Generic speed tests miss tool-specific performance issues. Run tests that mirror your actual workflow before committing to a location.
For developers using cloud IDEs or remote SSH:
# Test SSH performance with a timing command
time ssh user@your-server.com "ls -la /var/log/ | wc -l"
For video call quality, use Zoom’s network test tool before a live meeting. Google Meet’s pre-call diagnostic also shows estimated quality.
For AWS or GCP users, test the actual region latency:
# Test latency to AWS ap-southeast-1 (Singapore, closest to Bali)
ping -c 20 ec2.ap-southeast-1.amazonaws.com
Singapore is typically the lowest-latency AWS region from Bali, usually 30-50ms under good conditions.
Long-Term Monitoring Strategies
For accurate reliability data, monitor the connection over several days:
Python-Based Monitoring Script
#!/usr/bin/env python3
import subprocess
import time
import csv
from datetime import datetime
def run_speedtest():
result = subprocess.run(
['speedtest', '--csv'],
capture_output=True,
text=True
)
return result.stdout.strip()
def ping_test(host='8.8.8.8', count=10):
result = subprocess.run(
['ping', '-c', str(count), host],
capture_output=True,
text=True
)
# Extract packet loss and avg latency
lines = result.stdout.split('\n')
for line in lines:
if 'packets transmitted' in line:
return line
# Continuous monitoring loop
with open('bali_connection_log.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow(['timestamp', 'speedtest_result', 'ping_result'])
while True:
timestamp = datetime.now().isoformat()
speed_result = run_speedtest()
ping_result = ping_test()
writer.writerow([timestamp, speed_result, ping_result])
f.flush()
time.sleep(3600) # Test every hour
This script runs continuously, logging hourly measurements. Leave it running for a week to capture weekly patterns before making relocation decisions.
Interpreting Your Results
Evaluate your data against your work requirements:
| Activity | Minimum Latency | Recommended Bandwidth | Acceptable Packet Loss |
|---|---|---|---|
| Video calls (Zoom/Meet) | < 150ms | 10 Mbps | < 1% |
| Git operations | < 200ms | 5 Mbps | < 0.5% |
| Cloud development (SSH, containers) | < 100ms | 15 Mbps | < 1% |
| Large file uploads (S3, cloud storage) | N/A | 20+ Mbps | < 2% |
If your test results consistently fall below these thresholds, consider alternative locations or coworking arrangements.
Backup Connectivity Planning
Even with good primary connectivity, build a backup plan before relying on Bali as your sole remote work base.
A local SIM with a generous data plan is your first line of defense. Telkomsel’s Orbit router provides home broadband over 4G, which many remote workers use as a backup or primary connection in areas without fiber. Grab a SIM at the airport and load it with a monthly data package—30-50 GB runs around IDR 100,000-200,000 (roughly $6-12 USD).
A portable 4G router lets you tether from your phone data plan when coworking WiFi fails. Keep your phone charged and your data plan active. This two-connection strategy—primary fiber plus 4G backup—eliminates most connectivity emergencies.
Making the Decision
After collecting data, evaluate whether the tested location meets your specific needs. For developers, prioritize low latency to your codebase’s hosting location (GitHub, GitLab, Bitbucket) and any cloud infrastructure you manage. A connection averaging 30 Mbps with 80ms latency and zero packet loss supports most development workflows effectively.
Document your findings. Share test results with your team to validate your remote work setup. This data also helps future remote workers planning Bali relocations.
Related Articles
- Test WiFi speed using speedtest-cli
- Test upload/download speed to common video call servers
- How to Optimize Internet Speed for Remote Work
- Remote Work Internet Speed Requirements by Task Type
- Infrastructure evaluation script concept
Built by theluckystrike — More at zovo.one