diff --git a/script/release b/script/release
new file mode 100755
index 0000000..54f6c84
--- /dev/null
+++ b/script/release
@@ -0,0 +1,74 @@
+#!/bin/bash
+PROJDIR=$(cd `dirname $0`/.. && pwd)
+
+VERSION="${1}"
+TAG="v${VERSION}"
+USER="tomnomnom"
+REPO="waybackurls"
+BINARY="${REPO}"
+
+if [[ -z "${VERSION}" ]]; then
+    echo "Usage: ${0} <version>"
+    exit 1
+fi
+
+if [[ -z "${GITHUB_TOKEN}" ]]; then
+    echo "You forgot to set your GITHUB_TOKEN"
+    exit 2
+fi
+
+cd ${PROJDIR}
+
+# Run the tests
+go test
+if [ $? -ne 0 ]; then
+    echo "Tests failed. Aborting."
+    exit 3
+fi
+
+# Check if tag exists
+git fetch --tags
+git tag | grep "^${TAG}$"
+
+if [ $? -ne 0 ]; then
+    github-release release \
+        --user ${USER} \
+        --repo ${REPO} \
+        --tag ${TAG} \
+        --name "${REPO} ${TAG}" \
+        --description "${TAG}" \
+        --pre-release
+fi
+
+
+for ARCH in "amd64" "386"; do
+    for OS in "darwin" "linux" "windows" "freebsd"; do
+
+        BINFILE="${BINARY}"
+
+        if [[ "${OS}" == "windows" ]]; then
+            BINFILE="${BINFILE}.exe"
+        fi
+
+        rm -f ${BINFILE}
+
+        GOOS=${OS} GOARCH=${ARCH} go build github.com/${USER}/${REPO}
+
+        if [[ "${OS}" == "windows" ]]; then
+            ARCHIVE="${BINARY}-${OS}-${ARCH}-${VERSION}.zip"
+            zip ${ARCHIVE} ${BINFILE}
+        else
+            ARCHIVE="${BINARY}-${OS}-${ARCH}-${VERSION}.tgz"
+            tar --create --gzip --file=${ARCHIVE} ${BINFILE}
+        fi
+
+        echo "Uploading ${ARCHIVE}..."
+        github-release upload \
+            --user ${USER} \
+            --repo ${REPO} \
+            --tag ${TAG} \
+            --name "${ARCHIVE}" \
+            --file ${PROJDIR}/${ARCHIVE}
+    done
+done
+