{"id":13582099,"url":"https://github.com/zpeters/speedtest","last_synced_at":"2025-04-06T11:32:32.406Z","repository":{"id":9182865,"uuid":"10985360","full_name":"zpeters/speedtest","owner":"zpeters","description":"Command line client for speedtest.net written in Go","archived":true,"fork":false,"pushed_at":"2019-06-07T13:25:43.000Z","size":1677,"stargazers_count":369,"open_issues_count":5,"forks_count":55,"subscribers_count":26,"default_branch":"master","last_synced_at":"2024-11-05T21:45:47.670Z","etag":null,"topics":["command-line","download","go","monitoring","network","speed","speedtest"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zpeters.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-06-27T02:41:10.000Z","updated_at":"2024-10-25T16:27:03.000Z","dependencies_parsed_at":"2022-08-30T11:10:35.258Z","dependency_job_id":null,"html_url":"https://github.com/zpeters/speedtest","commit_stats":null,"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpeters%2Fspeedtest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpeters%2Fspeedtest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpeters%2Fspeedtest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpeters%2Fspeedtest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zpeters","download_url":"https://codeload.github.com/zpeters/speedtest/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247478132,"owners_count":20945257,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command-line","download","go","monitoring","network","speed","speedtest"],"created_at":"2024-08-01T15:02:25.612Z","updated_at":"2025-04-06T11:32:31.635Z","avatar_url":"https://github.com/zpeters.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"2019 Update\n==========\nI don't have a lot of time to work on this code anymore. I may post updates from time to time, but at the moment this software is mostly abandonded.  I am working on a Rust implementation and will post more details here in the future. See https://github.com/zpeters/speedtestr\n\nThank you for all of the fun and support over the years.\n\n-zach\n\n\nVERSION 2.0 Testing\n===================\nInitial testing release of v2.0 is out for the testing. See \"releases\" for downloads.  The current \"test\" is hard coded and there are no options at the moment. Please send me any feedback at zpeters@gmail.com or through the issues.\n\nThe Unofficial Speedtest CLI\n============================\nThe Unofficial Speedtest CLI is a command-line program to test\nbandwidth in situations where you don't have access to a full GUI\nenvironment and web browser.\n\nIn [2013 I was feeling guilty](http://thehelpfulhacker.net/2013/07/29/giving-something-back/)\nabout using Open Source software for most of my life without giving\nanything back in return.  I decided to create this project to my part\nto help the IT community.\n\nA lot of the initial algorithms here are based on different scripts I\nfound when I was studying how speedtest.net works.  Mainly, @sivel's\n[speedtest-cli](https://github.com/sivel/speedtest-cli),\nthanks for your work!\n\n**master branch**\n[![Go Report Card](https://goreportcard.com/badge/github.com/zpeters/speedtest)](https://goreportcard.com/report/github.com/zpeters/speedtest)\n[![Github All Releases](https://img.shields.io/github/downloads/zpeters/speedtest/total.svg?style=plastic)](https://www.somsubhra.com/github-release-stats/?username=zpeters\u0026repository=speedtest)\n[![Build Status](https://travis-ci.org/zpeters/speedtest.svg?branch=master)](https://travis-ci.org/zpeters/speedtest)\n[![GoDoc](https://godoc.org/github.com/zpeters/speedtest?status.svg)](https://godoc.org/github.com/zpeters/speedtest)\n\n**development branch**\n[![Build Status](https://travis-ci.org/zpeters/speedtest.svg?branch=develop)](https://travis-ci.org/zpeters/speedtest)\n\n[![Sparkline](https://stars.medv.io/zpeters/speedtest.svg)](https://stars.medv.io/zpeters/speedtest)\n\nLicense\n=======\nLicensed under GPLv3 (See COPYING and LICENSE)\n\nDownload\n========\n- Github (Windows/Linux/Mac) - https://github.com/zpeters/speedtest/releases\n- Mirror (Windows/Linux/Mac) - http://media.thehelpfulhacker.net/index.php?dir=speedtest/\n\nBuild\n=====\nSee [Build Instructions](https://github.com/zpeters/speedtest/wiki/Build-Instructions)\n\nBugs, Features and Contributing\n=================\nSee github issues tracker - https://github.com/zpeters/speedtest/issues\n\nUsage\n=====\nspeedtest.exe -- normal run, will automatically select the closests/fastest server to test against\n```shell\n$ bin/speedtest.exe \nFinding fastest server..\n1752 | 5NINES (Madison, WI, United States)\nTesting download speed......\nTesting upload speed......\nPing: 53.613233ms | Download: 13.34 Mbps | Upload: 3.89 Mbps\n```\n\nspeedtest.exe -l -- List servers\n```shell\n$ bin/speedtest.exe -l\n1724 | CityNet (Zaporizhzhya, Ukraine)\n2966 | FUSION MEDIA Kft. (Budapest, Hungary)\n3634 | Paul Bunyan Communications (Bemidji, MN, United States\n...\n\n```\n\nspeedtest.exe -s 1724 -- Run against a specific server\n```shell\n$ bin/speedtest.exe -s 1724\n1724 | CityNet (Zaporizhzhya, Ukraine)\nTesting latency...\nTesting download speed......\nTesting upload speed......\nPing: 982.913566ms | Download: 0.91 Mbps | Upload: 1.25 Mbps\n```\n\nspeedtest.exe -b 1234 -b 5678 -- Run the test blacklisting servers 1234 and 5678\nspeedtest.exe -r -- Runs speedtest in \"reporting\" mode (useful for Labtec, Excel spreadsheets, etc)\nspeedtest.exe -r -rc=\",\" -- Use a different separator (default is '|')\nReport Fields: Server ID, Server Name (Location), Ping time in ms, Download speed in kbps, Upload speed in kbps\n```shell\n1752|5NINES(Madison, WI,United States)|36.18|19452|4053\n```\n\n```shell\nCOMMANDS:\n     help, h  Shows a list of commands or help for one command\n\nGLOBAL OPTIONS:\n   --algo value, -a value          Specify the measurement method to use ('max', 'avg')\n   --debug, -d                     Turn on debugging\n   --list, -l                      List available servers\n   --update, -u                    Check for a new version of speedtest\n   --ping, -p                      Ping only mode\n   --quiet, -q                     Quiet mode\n   --report, -r                    Reporting mode output, minimal output with '|' for separators, use '--rc'\n                                     to change separator characters. Reports the following: Server ID,\n                                     Server Name (Location), Ping time in ms, Download speed in kbps, Upload speed in kbps\n   --downloadonly, --do            Only perform download test\n   --uploadonly, --uo              Only perform upload test\n   --reportchar value, --rc value  Set the report separator. Example: --rc=','\n   --server value, -s value        Use a specific server\n   --blacklist value, -b value     Blacklist a server.  Use this multiple times for more than one server\n   --mini value, -m value          URL of speedtest mini server\n   --useragent value, --ua value   Specify a useragent string\n   --numclosest value, --nc value  Number of 'closest' servers to find (default: 3)\n   --httptimeout value, -t value   Timeout (seconds) for http connections (default: 15)\n   --numlatency value, --nl value  Number of latency tests to perform (default: 5)\n   --interface value, -I value     Source IP address or name of an interface\n   --help, -h                      show help\n   --version, -v                   print the version\n```\n\nThank You\n=========\n- Jacob McDonald - jmc734 - Cleaned up printing and formatting.  Added parameter passing to run.sh - https://github.com/zpeters/speedtest/pull/4\n- Cory Lievers - Testing and feedback. Suggestions for formatting to make this more useful for labtec - https://github.com/zpeters/speedtest/issues/9\n- Paul Baker (Network Manager - BMS Telecorp) - Located a bug in the speedtest.net server list generation and found the correct 'static' url\n- Graham Roach (Contact Info?) - Extensive user testing to help determine issues with latency and accuracy of upload and download speeds - #11 (and others)\n- @larray - slightly obscure issues with http caches interfering with test results - #20\n- Noric - reporting and help with testing issues with report formatting - #32\n- @jannson - submitting patch to reduce memory usage on download test - #37\n- @vendion - teaching me how to import packages the corret way - #67\n- @invalid-email-address - various formatting\n- @l2dy - cleaned up README and broken links\n- @m01 - speed test mini support\n- @pra85 - fixed types in README\n- @schweikert - for adding the interface selection code\n\nWhy don't my speeds match those reported from the speedtest.net website?\n========================================================================\nThe calculation that is used for testing download speeds is literally measuring the amount of data we are downloading (we request a \"random\" image and count how many bytes are received) and how long it takes to download.  We multiply by the correct factors to get from bytes to megabits. I consider this to be an honest and accurate measurement.\n\nIn speedtest.net's reference documentation they describe doing a lot of manipulation to the results to return an \"ideal\" measurement (https://support.speedtest.net/entries/20862782-How-does-the-test-itself-work-How-is-the-result-calculated-). This, to me, is trading accuracy for speed and not what I'm looking for out of a testing tool.\n\nFor confirmation that my download calculations are correct I have tested against a few other speed testing sites, specifically http://testmy.net (\"What makes TestMy.net better\") who appear to use an \"unfiltered\" method of calculating bandwidth speeds.  These results typically match up with speedtest.net cli\n\n\nReference\n=========\n- how does it work - https://support.speedtest.net/entries/20862782-How-does-the-test-itself-work-How-is-the-result-calculated-\n- why actual speedtest.net results may be inaccurate - http://testmy.net/\n   \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzpeters%2Fspeedtest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzpeters%2Fspeedtest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzpeters%2Fspeedtest/lists"}