An open API service indexing awesome lists of open source software.

https://github.com/frankray78/speedtestconsole

An internet speed test CLI application; made beautiful with Specte.Console.
https://github.com/frankray78/speedtestconsole

cli dotnet dotnet-library library speedtest speedtest-cli

Last synced: 10 months ago
JSON representation

An internet speed test CLI application; made beautiful with Specte.Console.

Awesome Lists containing this project

README

          

# SpeedTestConsole
An internet speed test CLI application; made beautiful with [Spectre.Console](https://github.com/spectreconsole/spectre.console).


Report Bug
-
Request Feature


## About The Project
A cross-platform command-line application for performing network speed tests, including server discovery, latency measurement, download and upload speed testing.
The core speed test library has also been designed for reuse in other projects and applications.

SpeedTestConsole is not endorsed by or related to [Speedtest by Ookla](https://www.speedtest.net/) in any way, although their servers are used under the hood.

The obligatory screenshot (as of 6 March 2025):

![2025-03-25 SpeedTestConsole](https://github.com/user-attachments/assets/b2df7f36-f620-4683-88ad-81b913b24070)


## Background
The idea for this project came from my experience as the Spectre.Console CLI sub-system maintainer, whilst never having used the library for my own production quality application. My motivation is to become expert at developing excellent command line applications, following best practices like the [Command Line Interface Guidelines](https://clig.dev/), and then taking the experience back into my maintainer role.

This is also known as 'dogfooding' in the tech industry ie. using your own product before expecting others to do the same.


## Getting Started
I use Windows 10, Visual Studio 2022 Community, and Microsoft .Net 8.0 to develop and build the codebase - you will need the same, or similar.

Then clone this repository locally and build.


## Usage
`SpeedTestConsole --help` will display detailed usage instructions.

```txt
C:\>SpeedTestConsole.exe --help

_____ __ ______ __ ______ __
/ ___/ ____ ___ ___ ____/ / /_ __/ ___ _____ / /_ / ____/ ____ ____ _____ ____ / / ___
\__ \ / __ \ / _ \ / _ \ / __ / / / / _ \ / ___/ / __/ / / / __ \ / __ \ / ___/ / __ \ / / / _ \
___/ / / /_/ // __// __// /_/ / / / / __/ (__ ) / /_ / /___ / /_/ / / / / / (__ ) / /_/ / / / / __/
/____/ / .___/ \___/ \___/ \__,_/ /_/ \___/ /____/ \__/ \____/ \____/ /_/ /_/ /____/ \____/ /_/ \___/
/_/

DESCRIPTION:
Internet speed tester including server discovery, latency measurement, download and upload speed testing.

USAGE:
SpeedTestConsole [OPTIONS] [COMMAND]

OPTIONS:
DEFAULT
-h, --help Prints help information.
--csv Display minimal output in CSV format (always includes timestamp).
--csv-delimiter , Single character delimiter to use in CSV output.
--no-download Do not perform download test.
--no-upload Do not perform upload test.
-t, --timestamp Include a timestamp.
-u, --unit BitsPerSecond The speed unit.
--unit-system SI The speed unit system.
SI steps up in powers of 1000 (KB, MB, GB), common in networking, while IEC
uses powers of 1024 (KiB, MiB, GiB), standard in computing and storage.
--verbosity Normal The verbosity level.
Minimal is ideal for batch scripts and redirected output.

COMMANDS:
servers Show the nearest speed test servers.
```


## Roadmap
- [X] Download speed test
- [X] Upload speed test
- [ ] User-configurable switches
- [X] BitsPerSecond or BytesPerSecond
- [X] SI or IEC
- [ ] Fixed speed unit (eg. Mbps, Gbps)
- [X] Verbosity of output
- [X] ~~`--plain` switch for minimal output~~ (nb. implemented by verbosity switch)
- [X] CSV output
- [ ] Maximum speed test (time)
- [ ] Maximum speed test (size transferred)
- [ ] Periodically repeat tests
- [ ] Run unit tests on PR
- [ ] NuGet package for the core library

See the [open issues](https://github.com/FrankRay78/SpeedTestConsole/issues) for a full list of proposed features (and known issues).


## Contributing
> [!IMPORTANT]\
> I'm not currently accepting pull requests for this project.

You can contribute by [opening a new issue](https://github.com/FrankRay78/SpeedTestConsole/issues/new/choose) or commenting on existing issues, and you are most welcome to fork the repository for your own purposes.

But please **don't be offended** if I close or delete issues as I see fit.


## License
Distributed under the MIT license. See `LICENSE` for more information.


## Contact
Frank Ray - [LinkedIn](https://www.linkedin.com/in/frankray/) - [Better Software UK](https://bettersoftware.uk)

Project Link: [https://github.com/FrankRay78/SpeedTestConsole](https://github.com/FrankRay78/SpeedTestConsole)


## Acknowledgments
* [Spectre.Console](https://github.com/spectreconsole/spectre.console)
* [SpeedTestSharp](https://github.com/manuelmayer-dev/SpeedTestSharp)
* [Best-README-Template](https://github.com/othneildrew/Best-README-Template)
* [Standard Readme](https://github.com/RichardLitt/standard-readme)