All Projects ā†’ showwin ā†’ Speedtest Go

showwin / Speedtest Go

Licence: mit
CLI and Go API to Test Internet Speed using speedtest.net

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Speedtest Go

Homebox
A Toolbox for Home Local Networks
Stars: āœ­ 78 (-39.06%)
Mutual labels:  speedtest, network
Fwd
šŸš‚ The little forwarder that could
Stars: āœ­ 203 (+58.59%)
Mutual labels:  cli, network
Piano Rs
A multiplayer piano using UDP sockets that can be played using computer keyboard, in the terminal
Stars: āœ­ 180 (+40.63%)
Mutual labels:  cli, network
Hiper
šŸš€ A statistical analysis tool for performance testing
Stars: āœ­ 2,667 (+1983.59%)
Mutual labels:  cli, network
Eiskaltdcpp
File sharing program using DC and ADC protocols
Stars: āœ­ 277 (+116.41%)
Mutual labels:  cli, network
Ovpm
OpenVPN Management Server - Effortless and free OpenVPN server administration
Stars: āœ­ 256 (+100%)
Mutual labels:  cli, network
Geo
šŸŒŽ A Bash utility for easy wan, lan, router, dns, mac address, and geolocation output, with clean stdout for piping
Stars: āœ­ 225 (+75.78%)
Mutual labels:  cli, network
Speedtest
Command line client for speedtest.net written in Go
Stars: āœ­ 361 (+182.03%)
Mutual labels:  speedtest, network
Speedtest Linux
Get download/upload speeds via speedtest.net or fast.com from command line using Bash script -- suitable for logs. POSIX OSX Linux
Stars: āœ­ 103 (-19.53%)
Mutual labels:  speedtest, cli
Typin
Declarative framework for interactive CLI applications
Stars: āœ­ 126 (-1.56%)
Mutual labels:  cli
Create Elm App
šŸƒ Create Elm apps with zero configuration
Stars: āœ­ 1,650 (+1189.06%)
Mutual labels:  cli
Nnn
nĀ³ The unorthodox terminal file manager
Stars: āœ­ 13,138 (+10164.06%)
Mutual labels:  cli
Fjpublish
A simple CLI for publish your projects.
Stars: āœ­ 126 (-1.56%)
Mutual labels:  cli
Grmon
Command line monitoring for goroutines
Stars: āœ­ 1,703 (+1230.47%)
Mutual labels:  cli
Dynein
DynamoDB CLI written in Rust.
Stars: āœ­ 126 (-1.56%)
Mutual labels:  cli
Neix
neix - a RSS/Atom feed reader for your terminal.
Stars: āœ­ 128 (+0%)
Mutual labels:  cli
Speedtest Cli
Command line interface for testing internet bandwidth using speedtest.net
Stars: āœ­ 11,575 (+8942.97%)
Mutual labels:  speedtest
Click
Python composable command line interface toolkit
Stars: āœ­ 11,741 (+9072.66%)
Mutual labels:  cli
Check It Out
A command line interface for Git Checkout. See branches available for checkout.
Stars: āœ­ 127 (-0.78%)
Mutual labels:  cli
Typex
[TOOL, CLI] - Filter and examine Go type structures, interfaces and their transitive dependencies and relationships. Export structural types as TypeScript value object or bare type representations.
Stars: āœ­ 128 (+0%)
Mutual labels:  cli

speedtest-go

Command Line Interface and pure Go API to Test Internet Speed using speedtest.net
You can speedtest 2x faster than speedtest.net with almost the same result. See the experimental results..

Inspired by sivel/speedtest-cli

Go API Installation below.

CLI

Installation

macOS (homebrew)

$ brew tap showwin/speedtest
$ brew install speedtest

### How to Update ###
$ brew update
$ brew upgrade speedtest

Other Platform (Linux, Windows, etc.)

Please download compatible package from Releases.
If there are no compatible package you want, please let me know on issue.

Usage

$ speedtest --help
usage: speedtest-go [<flags>]

Flags:
      --help               Show context-sensitive help (also try --help-long and --help-man).
  -l, --list               Show available speedtest.net servers.
  -s, --server=SERVER ...  Select server id to speedtest.
      --saving-mode        Using less memory (ā‰’10MB), though low accuracy (especially > 30Mbps).
      --version            Show application version.

Test Internet Speed

Simply use speedtest command. The closest server is selected by default.

$ speedtest
Testing From IP: 124.27.199.165 (Fujitsu) [34.9769, 138.3831]

Target Server: [6691]     9.03km Shizuoka (Japan) by sudosan
latency: 39.436061ms
Download Test: ................
Upload Test: ................

Download: 73.30 Mbit/s
Upload: 35.26 Mbit/s

Test to Other Servers

If you want to select other server to test, you can see available server list.

$ speedtest --list
Testing From IP: 124.27.199.165 (Fujitsu) [34.9769, 138.3831]
[6691]     9.03km Shizuoka (Japan) by sudosan
[6087]   120.55km Fussa-shi (Japan) by Allied Telesis Capital Corporation
[6508]   125.44km Yokohama (Japan) by at2wn
[6424]   148.23km Tokyo (Japan) by Cordeos Corp.
[6492]   153.06km Sumida (Japan) by denpa893
[7139]   192.63km Tsukuba (Japan) by SoftEther Corporation
[6368]   194.83km Maibara (Japan) by gatolabo
[6463]   220.39km Kusatsu (Japan) by j416dy
[6766]   232.54km Nomi (Japan) by JAIST(ino-lab)
[6476]   265.10km Osaka (Japan) by rxy (individual)
[6477]   268.94km Sakai (Japan) by satoweb
...

and select them by id.

$ speedtest --server 6691 --server 6087
Testing From IP: 124.27.199.165 (Fujitsu) [34.9769, 138.3831]

Target Server: [6691]     9.03km Shizuoka (Japan) by sudosan
Latency: 23.612861ms
Download Test: ................
Upload Test: ........

Target Server: [6087]   120.55km Fussa-shi (Japan) by Allied Telesis Capital Corporation
Latency: 38.694699ms
Download Test: ................
Upload Test: ................

[6691] Download: 65.82 Mbit/s, Upload: 27.00 Mbit/s
[6087] Download: 72.24 Mbit/s, Upload: 29.56 Mbit/s
Download Avg: 69.03 Mbit/s
Upload Avg: 28.28 Mbit/s

Memory Saving Mode

With --saving-mode option, it can be executed even in insufficient memory environment like IoT device. The memory usage can be reduced to 1/10, about 10MB of memory is used.

However, please be careful that the accuracy is particularly low especially in an environment of 30 Mbps or higher. To get more accurate results, run multiple times and average.

For more details, please see saving mode experimental result.

Go API

go get github.com/showwin/speedtest-go

API Usage

The code below finds closest available speedtest server and tests the latency, download, and upload speeds.

package main

import (
	"fmt"
	"github.com/showwin/speedtest-go/speedtest"
)

func main() {
	user, _ := speedtest.FetchUserInfo()

	serverList, _ := speedtest.FetchServerList(user)
	targets, _ := serverList.FindServer([]int{})

	for _, s := range targets {
		s.PingTest()
		s.DownloadTest(false)
		s.UploadTest(false)

		fmt.Printf("Latency: %s, Download: %f, Upload: %f\n", s.Latency, s.DLSpeed, s.ULSpeed)
	}
}

Summary of Experimental Results

Speedtest-go is a great tool because of following 2 reasons:

Following data is summarized. If you got interested in, please see more details.

Download (Mbps)

distance = distance to testing server

  • 0 - 1000(km) ā‰’ domestic
  • 1000 - 8000(km) ā‰’ same region
  • 8000 - 20000(km) ā‰’ really far!
  • 20000km is the half of the circumference of our planet.
distance (km) speedtest.net speedtest-go speedtest-cli
0 - 1000 92.12 91.21 70.27
1000 - 8000 66.45 65.51 56.56
8000 - 20000 11.84 9.43 11.87

Upload (Mbps)

distance (km) speedtest.net speedtest-go speedtest-cli
0 - 1000 65.56 47.58 36.16
1000 - 8000 58.02 54.74 26.78
8000 - 20000 5.20 8.32 2.58

Testing Time (sec)

distance (km) speedtest.net speedtest-go speedtest-cli
0 - 1000 45.03 22.84 24.46
1000 - 8000 44.89 24.45 28.52
8000 - 20000 49.64 34.08 41.26

Contributors

LICENSE

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].