Huge news!Announcing our $20M Series A led by Andreessen Horowitz.Learn more
Log inDemoInstall

Package Overview
File Explorer


Version published



A reasonably complete and well-tested golang port of Kenneth Reitz's httpbin service, with zero dependencies outside the go stdlib.

GoDoc Build Status Coverage


Run as a standalone binary, configured by command line flags or environment variables:

$ go-httpbin -help
Usage of ./dist/go-httpbin:
  -max-duration duration
        Maximum duration a response may take (default 10s)
  -max-memory int
        Maximum size of request or response, in bytes (default 1048576)
  -port int
        Port to listen on (default 8080)

Docker images are published to Docker Hub:

$ docker run -P mccutchen/go-httpbin

The package can also be used as a library for testing an applications interactions with an upstream HTTP service, like so:

package httpbin_test

import (


func TestSlowResponse(t *testing.T) {
    handler := httpbin.NewHTTPBin().Handler()
    srv := httptest.NewServer(handler)
    defer srv.Close()

    client := http.Client{
        Timeout: time.Duration(1 * time.Second),
    _, err := client.Get(srv.URL + "/delay/10")
    if err == nil {
        t.Fatal("expected timeout error")


go get

Motivation & prior art

I've been a longtime user of Kenneith Reitz's original, and wanted to write a golang port for fun and to see how far I could get using only the stdlib.

When I started this project, there were a handful of existing and incomplete golang ports, with the most promising being ahmetb/go-httpbin. This project showed me how useful it might be to have an httpbin library available for testing golang applications.

Known differences from other httpbin versions

Compared to the original:

  • No /brotli endpoint (due to lack of support in Go's stdlib)
  • The ?show_env=1 query param is ignored (i.e. no special handling of runtime environment headers)
  • Response values which may be encoded as either a string or a list of strings will always be encoded as a list of strings (e.g. request headers, query params, form values)

Compared to ahmetb/go-httpbin:

  • No dependencies on 3rd party packages
  • More complete implementation of endpoints


# local development
make test
make testcover
make run

# building & pushing docker images
make image
make imagepush


Last updated on 14 Oct 2017

Did you know?

Socket installs a GitHub app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.

SocketSocket SOC 2 Logo


  • Package Issues
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc