Simulate network link speed
Clone or download
ian-kent Merge pull request #1 from jeffallen/readme
Update to clarify fork/license
Latest commit 97566b8 Aug 8, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information.
.travis.yml Update readme, add .travis.yml Dec 29, 2014 Update to clarify fork/license Jul 4, 2017
linkio.go Update package description Dec 24, 2014
linkio_test.go Add io.Writer support Dec 24, 2014

linkio GoDoc Build Status

linkio provides an io.Reader and io.Writer that simulate a network connection of a certain speed, e.g. to simulate a mobile connection.

Quick start

You can use linkio to wrap existing io.Reader and io.Writer interfaces:

// Create a new link at 512kbps
link = linkio.NewLink(512 * linkio.KilobitPerSecond)

// Open a connection
conn, err := net.Dial("tcp", "")
if err != nil {
  // handle error

// Create a link reader/writer
linkReader := link.NewLinkReader(io.Reader(conn))
linkWriter := link.NewLinkWriter(io.Writer(conn))

// Use them as you would normally...
fmt.Fprintf(linkWriter, "GET / HTTP/1.0\r\n\r\n")
status, err := bufio.NewReader(linkReader).ReadString('\n')

History and license

This repository is a fork of Jeff R. Allen's linkio. linkio was brought into the world to help make a proxy to simulate slow Internet links (see this blog posting).

Jeff's linkio was licensed via the BSD 3-clause license.

Any modifications since the initial commit are Copyright ©‎ 2014, Ian Kent (, and are released under the terms of the MIT License.