{"library":"speedtest-cli","title":"Speedtest CLI for Python","type":"library","description":"speedtest-cli is a Python library that provides a command-line interface for testing internet bandwidth using speedtest.net. The current version is 2.1.3, and the library maintains an active release cadence with frequent bug fixes and minor improvements. It can also be used programmatically within Python applications.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install speedtest-cli"],"cli":{"name":"speedtest-cli","version":"speedtest-cli 2.1.3"}},"imports":["import speedtest\nst = speedtest.Speedtest()"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":null,"github":"https://github.com/sivel/speedtest-cli","docs":null,"changelog":null,"pypi":"https://pypi.org/project/speedtest-cli/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"import speedtest\nimport os\n\ndef human_readable_bytes(nbytes):\n    suffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB']\n    i = 0\n    while nbytes >= 1024 and i < len(suffixes)-1:\n        nbytes /= 1024\n        i += 1\n    f = ('%.2f' % nbytes).rstrip('0').rstrip('.')\n    return '%s %s' % (f, suffixes[i])\n\nprint('Starting Speedtest...')\nst = speedtest.Speedtest()\n\n# Find best server based on ping\nprint('Finding best server...')\nst.get_best_server()\nprint(f'Hosted by {st.results.server['sponsor']} ({st.results.server['name']}) [Ping: {st.results.ping:.2f} ms]')\n\n# Test download speed\nprint('Testing download speed...')\ndownload_speed_bps = st.download()\ndownload_speed_mbps = download_speed_bps / 1_000_000 # Convert to Mbps\nprint(f'Download: {human_readable_bytes(download_speed_bps)} ({download_speed_mbps:.2f} Mbps)')\n\n# Test upload speed\nprint('Testing upload speed...')\nupload_speed_bps = st.upload()\nupload_speed_mbps = upload_speed_bps / 1_000_000 # Convert to Mbps\nprint(f'Upload: {human_readable_bytes(upload_speed_bps)} ({upload_speed_mbps:.2f} Mbps)')\n\n# Get full results (optional)\n# results = st.results.dict()\n# print(results)\n","lang":"python","description":"This quickstart demonstrates how to import the `speedtest` module, initialize the `Speedtest` object, find the best server, and then measure download and upload speeds programmatically. The speeds are converted to a human-readable format for clarity.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"2.1.3","pypi_latest":"2.1.3","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.5,"avg_import_s":0.16,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"speedtest-cli","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.15,"mem_mb":5.3,"disk_size":"17.9M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"speedtest-cli","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":1.5,"import_time_s":0.11,"mem_mb":5.3,"disk_size":"18M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"speedtest-cli","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.21,"mem_mb":5.5,"disk_size":"19.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"speedtest-cli","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":1.6,"import_time_s":0.18,"mem_mb":5.4,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"speedtest-cli","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.17,"mem_mb":5.1,"disk_size":"11.7M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"speedtest-cli","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":1.4,"import_time_s":0.17,"mem_mb":5.1,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"speedtest-cli","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.15,"mem_mb":5.4,"disk_size":"11.4M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"speedtest-cli","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":1.4,"import_time_s":0.15,"mem_mb":5.2,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"speedtest-cli","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.15,"mem_mb":5.1,"disk_size":"17.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"speedtest-cli","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":1.8,"import_time_s":0.12,"mem_mb":5.1,"disk_size":"18M"}]}}