A GO lang command line tool to check internet speed right from the terminal.
Uses fast.com through headless chrome.
Chrome or Chromium or Brave browser must be installed. chromedp will try to locate the chrome executable automatically from these paths.
If you get error regarding chrome availability, and you have chrome in custom path then check Troubleshooting.
Install fast binary:
go get -u github.com/adhocore/fast/cmd/fast
or in recent go versions:
go install github.com/adhocore/fast/cmd/fast@v1.2.0
Finally, make sure $GOPATH or $HOME/go/bin is in your $PATH or %path%, then run:
fast
# if you just want download speed (pass -noup aka no upload speed)
fast -noup
Wait a while or Ctrl+C if you can't. That's all.
You can also integrate fast in your Go projects.
import (
"github.com/adhocore/chin"
"github.com/adhocore/fast"
)
// true if you want only download speed
noUpload := false
// Optional, shows a spinner while waiting result,
spin := chin.New()
go spin.Start()
// Prints the output right away:
fast.Run(noUpload)
// OR, to customize print style:
res, err := fast.Measure(noUpload)
// Then use res (`fast.Fast` struct) to print in custom style.
// Stop the spinner finally!
spin.Stop()

In MacOS, you can do something like this:
echo '#!/bin/sh\n\n/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome $@' > /usr/local/bin/chrome
chmod +x /usr/local/bin/chrome
In WSL, you can symlink chrome from host WinOS like this:
sudo ln -s /mnt/c/Program\ Files/Google/Chrome/Application/chrome.exe /usr/local/bin/chrome
In other OS, you can do something equivalent to above. The idea is chrome command should point to Chrome Browser.
My other golang projects you might find interesting and useful: