diff --git a/.coveragerc b/.coveragerc
index 576ac5822746afa622dd8c4ae7deef082eb3cefb..c65389a10121e516b78b56209734881d2ec5ea30 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -1,5 +1,7 @@
 [run]
 source = pykafka
+branch = True
+
 omit =
     */python?.?/*
     */lib-python/?.?/*.py
diff --git a/.travis.yml b/.travis.yml
index 4901f24528595f78a2f392da23fbeb9833d7d8a1..5edf6d8a20b6ac957b2121effda0e42a364803e4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -19,7 +19,7 @@ notifications:
 
 
 install:
-    - pip install python-coveralls kazoo tox testinstances
+    - pip install codecov kazoo tox testinstances
 
 before_script:
     - "python -m pykafka.test.kafka_instance 3 --download-dir /home/travis/kafka-bin &"
@@ -30,7 +30,7 @@ script:
 
 # Calculate coverage on success
 after_success:
-    - coveralls --config_file .coveragerc
+    - codecov
 
 branches:
   only:
diff --git a/README.rst b/README.rst
index 323e90d7ac9f27a17d5846e4232f7378c9a7c29e..385bc84ff8cf6f3e100eb16b5d56990ec5b5471b 100644
--- a/README.rst
+++ b/README.rst
@@ -1,7 +1,7 @@
 .. image:: https://travis-ci.org/Parsely/pykafka.svg?branch=master
     :target: https://travis-ci.org/Parsely/pykafka
-.. image:: https://coveralls.io/repos/Parsely/pykafka/badge.svg?branch=master
-    :target: https://coveralls.io/r/Parsely/pykafka?branch=master
+.. image:: https://codecov.io/github/Parsely/pykafka/coverage.svg?branch=master
+    :target: https://codecov.io/github/Parsely/pykafka?branch=master
 
 PyKafka
 =======