diff --git a/.travis.yml b/.travis.yml
index f76aa1b430727a42eb46f740cc782d2956f6a5c2..fc6cfbdf45c6762abfe891fa405ad355fd98e04d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,3 +4,11 @@ sudo: false
 
 script:
   - cargo test
+  - cargo doc --no-deps
+
+after_success:
+  - test $TRAVIS_PULL_REQUEST == "false" && test $TRAVIS_BRANCH == "master" && bash deploy.sh
+
+env:
+  global:
+    secure: "mBLJANLvtmyWCXw4zMquptqHQnws0pF+C/u4zL1Jfwz8T4UnUjmBUMxSOgSEIzrOM3qb+CTCjY2/j6BM21+/Zfdl8k8CvFWtkqQUPwIfrtwddCgI+P8Hlrk8G43drz/8XAbZ7dOl+Ovwhr0xnSD9ImfyXJec1kDWhubmgyt47Fs="
diff --git a/deploy.sh b/deploy.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ad266a0ea99cf2e2442c76dd2346db4ffa81672f
--- /dev/null
+++ b/deploy.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+rev=$(git rev-parse --short HEAD)
+
+cd target/doc
+
+git init
+git config user.name "Carl Lerche"
+git config user.email "me@carllerche.com"
+
+git remote add upstream "https://$GH_TOKEN@github.com/carllerche/bytes"
+git fetch upstream && git reset upstream/gh-pages
+
+touch .
+
+git add -A .
+git commit -m "rebuild pages at ${rev}"
+git push -q upstream HEAD:gh-pages