Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 9 commits ahead, 666 commits behind kataras:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Deprecated use https://github.com/go-siris/siris instead


A fast, cross-platform and efficient web framework with robust set of well-designed features, written entirely in Go.

Go-speedo focuses on speed and state of the art technology.

Go-speedo started as a fork of Iris

If you're coming from Node.js world, this is the expressjs++ equivalent for the Go Programming Language.

Table of contents


The only requirement is the Go Programming Language, at least version 1.8

Dependencies are shipped in the vendor folder.

$ go get -u github.com/go-speedo/go-speedo


Examples --they cover each feature.

Godocs --for deep understanding.


Feature Overview

Feature More Information
high performance TODO add to speedtest
Authentication basicauth
Cache cache-markdown
Compression gzip TODO add Documentation
http2 push TODO add Documentation
letsencrypt certificates TODO add Documentation
Json, JsonP, XML, Forms, Markdown write-json read-json read-form
Localization i18n
Logger Engines file-logger request-logger
Routing routing
Sessions sessions
Static Files file-server
Subdomains and Grouping subdomains
Tempalte Engines views
Websockets websockets


Third Party Middleware

Go-Speedo has its own middleware form of func(ctx context.Context) but it's also compatible with all net/http middleware forms. See here.

I'm sure that each of you have, already, found his own favorite list but here's a small list of third-party handlers:

Middleware Author Description
tollbooth Didip Kerabat Generic middleware to rate-limit HTTP requests. Example
goth Mark Bates OAuth, OAuth2 authentication. Example
binding Matt Holt Data binding from HTTP requests into structs
cloudwatch Colin Steele AWS cloudwatch metrics middleware
csp Awake Networks Content Security Policy (CSP) support
delay Jeff Martinez Add delays/latency to endpoints. Useful when testing effects of high latency
New Relic Go Agent Yadvendar Champawat Official New Relic Go Agent (currently in beta)
gorelic Jingwen Owen Ou New Relic agent for Go runtime
JWT Auth0 Middleware checks for a JWT on the Authorization header on incoming requests and decodes it. Example
logrus Dan Buch Logrus-based logger
onthefly Alexander Rødseth Generate TinySVG, HTML and CSS on the fly
permissions2 Alexander Rødseth Cookies, users and permissions
prometheus Rene Zbinden Easily create metrics endpoint for the prometheus instrumentation tool
render Cory Jacobsen Render JSON, XML and HTML templates
RestGate Prasanga Siripala Secure authentication for REST API endpoints
secure Cory Jacobsen Middleware that implements a few quick security wins
stats Florent Messa Store information about your web application (response time, etc.)
VanGoH Taylor Wrobel Configurable AWS-Style HMAC authentication middleware
xrequestid Andrea Franz Middleware that assigns a random X-Request-Id header to each request
digits Bilal Amarni Middleware that handles Twitter Digits authentication

Feel free to put up a PR your middleware!


The httptest package is your way for end-to-end HTTP testing, it uses the httpexpect library created by our friend, gavv.

A simple test is located to ./_examples/intermediate/httptest/main_test.go


Go-Speedo started as a fork of https://github.com/kataras/iris as Iris was aquired by a company and shortly after some repositories where deleted.

We believe in Open-source and therefore we forked the repository and keep this project alive.

Furthermore we want to enhance Go-Speedo further and make it the fastest Webserver available.


go-speedo is maintained by the go-speedo organisation @go-speedo

The author of Iris (from which go-speedo was forked) was @kataras.


Current: 7.3.0

Each new release is pushed to the master. It stays there until the next version. When a next version is released then the previous version goes to its own branch with gopkg.in as its import path (and its own vendor folder), in order to keep it working "for-ever".

Should I upgrade?

Developers are not forced to use the latest Go-Speedo version, they can use any version in production, they can update at any time they want.

Testers should upgrade immediately, if you're willing to use Go-Speedo in production you can wait a little more longer, transaction should be as safe as possible.

Where can I find older versions?

Each Go-Speedo version is independent. Only bug fixes, Router's API and experience are kept.

Previous versions can be found at releases page.


Unless otherwise noted, the source files are distributed under the BSD-3-Clause License found in the LICENSE file.

Note that some third-party packages that you use with Go-Speedo may requires different license agreements.