Skip to content
Go (golang) package for progress bars around io.Reader/Writers.
Branch: master
Clone or download
mitchellh Merge pull request #2 from endocode/iaguis/always-draw
reader: draw last update even if we didn't draw before.
Latest commit 6a23b12 Feb 1, 2018


ioprogress is a Go (golang) library with implementations of io.Reader and io.Writer that draws progress bars. The primary use case for these are for CLI applications but alternate progress bar writers can be supplied for alternate environments.




Standard go get:

$ go get


Here is an example of outputting a basic progress bar to the CLI as we're "downloading" from some other io.Reader (perhaps from a network connection):

// Imagine this came from some external source, such as a network connection,
// and that we have the full size of it, such as from a Content-Length HTTP
// header.
var r io.Reader

// Create the progress reader
progressR := &ioprogress.Reader{
	Reader: r,
	Size:   rSize,

// Copy all of the reader to some local file f. As it copies, the
// progressR will write progress to the terminal on os.Stdout. This is
// customizable.
io.Copy(f, progressR)
You can’t perform that action at this time.