Ian Ward

Boxkite Inc.
CKAN contributor/tech lead
PyRF primary contributor
Urwid author
Speedometer author

Contributing to Open Source
IASA E-Summit, 2014-05-16
Urwid Applications
Urwid Intro
Unfortunate Python
Django 1.1

Moving to Python 3
Article Tags


Ian Ward's email:
first name at this domain

wardi on OFTC, freenode and github

Locations of visitors to this page

Speedometer 2.8


Measure and display the rate of data across a network connection or data being stored in a file.


Current version is 2.8

Version 2.8 download tarball

Mercurial repository: https://excess.org/hg/speedometer/

Github mirror: https://github.com/wardi/speedometer


screenshot with dark transparent backgrounds screenshot with light background screenshot of 256 color mode screenshot of monochrome mode


Debian or Ubuntu

apt-get install speedometer


Download and install Urwid (recommended).

Download the speedometer source.

As root issue the following commands in the directory that you downloaded the source file:

cp speedometer.py /usr/local/bin/speedometer
chown root: /usr/local/bin/speedometer
chmod 755 /usr/local/bin/speedometer


Usage: speedometer [options] tap [[-c] tap]...
Monitor network traffic or speed/progress of a file transfer.  At least one
tap must be entered.  -c starts a new column, otherwise taps are piled

  -f filename [size]          display download speed [with progress bar]
  -r network-interface        display bytes received on network-interface
  -t network-interface        display bytes transmitted on network-interface
  -c                          start a new column for following tap arguments

  -b                          use old blocky display instead of smoothed
                              display even when UTF-8 encoding is detected
                              (use this if you see strange characters)
  -i interval-in-seconds      eg. "5" or "0.25"   default: "1"
  -k (1|16|88|256)            set the number of colors this terminal
                              supports (default 16)
  -l                          use linear charts instead of logarithmic
                              you will VERY LIKELY want to set -m as well
  -m chart-maximum            set the maximum bytes/second displayed on
                              the chart (default 2^32)
  -n chart-minimum            set the minimum bytes/second displayed on
                              the chart (default 32)
  -p                          use original plain-text display (one tap only)
  -s                          use bits/s instead of bytes/s
  -x                          exit when files reach their expected size
  -z                          report zero size on files that don't exist
                              instead of waiting for them to be created

Usage Examples

How long it will take for my 38MB transfer to finish?

speedometer favorite_episode.rm $((38*1024*1024))

How quickly is another transfer going?

speedometer dl/big.avi

How fast is this LAN?

host-a$ cat /dev/zero | nc -l -p 12345

host-b$ nc host-a 12345 > /dev/null 
host-b$ speedometer -rx eth0

How fast is the upstream on this ADSL line? (start an upload first)

speedometer -tx ppp0

How fast can I write data to my filesystem? (with at least 1GB free)

dd bs=1000000 count=1000 if=/dev/zero of=big_nothing &
speedometer big_nothing


Speedometer 2.8 - 2011-12-08

Speedometer 2.7 - 2010-11-08

Speedometer 2.6 - 2008-05-30

Speedometer 2.5 - 2007-10-20

Speedometer 2.4 - 2006-04-09

Speedometer 2.3 - 2006-03-08

Speedometer 2.2 - 2005-12-27

Speedometer 2.1 - 2005-11-05

Speedometer 2.0 - 2005-10-21

Speedometer 1.4 - 2003-07-18

Speedometer 1.3 - 2003-05-19

Speedometer 1.2 - 2003-03-21