Measure Internet Speed in Python: Complete Guide

Online Python Trainer for Beginners

Learn Python easily without overwhelming theory. Solve practical tasks with automatic checking, get hints in Russian, and write code directly in your browser — no installation required.

Start Course

How to Measure Internet Speed in Python: A Complete Guide with Examples

Measuring internet speed is an essential task in modern development. This functionality is crucial for building monitoring systems, testing network connection quality, and personal use.

Python offers an efficient solution for automating internet speed measurement. The speedtest library lets you retrieve connection speed data directly from your code.

Why Programmatically Measure Internet Speed

Automated internet speed measurement solves many practical problems:

• Real-time network connection stability monitoring • Internet service provider quality control • Integration into IoT systems and network services • Automated internet speed reporting • Identifying network equipment issues • Network load planning

What Is the Speedtest Library

The speedtest library for Python provides programmatic access to the popular Speedtest.net service. It enables comprehensive measurements of your internet connection parameters.

Key Library Features

The library measures the following critical parameters:

• Download Speed • Upload Speed • Network Response Time (Ping/Latency) • Jitter (latency variability) • Packet Loss

Installing and Configuring the Speedtest Library

Installation Process

To install the library, use the pip package manager. Open your command line or terminal and run the following command:

pip install speedtest-cli

The library is named speedtest-cli but can be used both from the command line and within Python scripts.

Verifying the Installation

After installation, verify the library works correctly:

import speedtest
print("Speedtest library installed successfully")

Basic Internet Speed Measurement Example

Simple Measurement Script

import speedtest

st = speedtest.Speedtest()

download_speed = st.download() / 1024 / 1024  # Convert to megabits per second
upload_speed = st.upload() / 1024 / 1024      # Convert to megabits per second
ping_result = st.results.ping

print(f"Download Speed: {download_speed:.2f} Mbps")
print(f"Upload Speed: {upload_speed:.2f} Mbps")
print(f"Ping: {ping_result:.2f} ms")

Typical Output

Download Speed: 92.34 Mbps
Upload Speed: 25.67 Mbps
Ping: 15.23 ms

How the Speedtest Library Works

Speed Measurement Algorithm

The internet speed measurement process happens in several stages:

• Determine the user's geographic location • Select the nearest test server • Measure response time to the server • Download test data to measure incoming traffic speed • Upload test data to measure outgoing traffic speed • Calculate and present results

Technical Process Details

The library uses multithreading for more accurate measurements. It creates multiple parallel connections to the server, maximizing the channel's bandwidth usage.

Speedtest Library Methods and Functions

Core Methods

Method Description Return Value
.download() Download speed test Speed in bits/sec
.upload() Upload speed test Speed in bits/sec

Blogs

Book Recommendations