diff --git a/.gitattributes b/.gitattributes
index 53b0a935..4d66fe58 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -10,7 +10,6 @@
 .gitattributes export-ignore
 .gitignore export-ignore
 .phpstorm.meta.php export-ignore
-.scrutinizer.yml export-ignore
 .travis.yml export-ignore
 build.sh export-ignore
 CHANGELOG.md export-ignore
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 0442604b..c426f4a3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -284,10 +284,12 @@ jobs:
       - run: mv build/coverage-unit/coverage-unit.cov build/coverage-unit.cov
       - run: mv build/coverage-db/coverage-db.cov build/coverage-db.cov
       - run: mv build/coverage-api/coverage-api.cov build/coverage-api.cov
-      - run: wget https://phar.phpunit.de/phpcov-7.0.2.phar
-      - run: php phpcov-7.0.2.phar merge build --clover build/clover.xml
-      - run: wget https://scrutinizer-ci.com/ocular.phar
-      - run: php ocular.phar code-coverage:upload --format=php-clover build/clover.xml
+      - run: wget https://phar.phpunit.de/phpcov-8.2.0.phar
+      - run: php phpcov-8.2.0.phar merge build --clover build/clover.xml
+      - name: Publish coverage
+        uses: codecov/codecov-action@v1
+        with:
+          file: ./build/clover.xml
 
   delete-artifacts:
     needs:
diff --git a/.scrutinizer.yml b/.scrutinizer.yml
deleted file mode 100644
index ed831706..00000000
--- a/.scrutinizer.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-tools:
-  external_code_coverage:
-    timeout: 600
-checks:
-  php:
-    code_rating: true
-    duplication: true
-build:
-  dependencies:
-    override:
-      - composer install --no-interaction --no-scripts --ignore-platform-reqs
-  nodes:
-    analysis:
-      tests:
-        override:
-          - php-scrutinizer-run
diff --git a/README.md b/README.md
index 7756c063..d8263f6b 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
 ![Shlink](https://raw.githubusercontent.com/shlinkio/shlink.io/main/public/images/shlink-hero.png)
 
 [![Build Status](https://img.shields.io/github/workflow/status/shlinkio/shlink/Continuous%20integration/develop?logo=github&style=flat-square)](https://github.com/shlinkio/shlink/actions?query=workflow%3A%22Continuous+integration%22)
+[![Code Coverage](https://img.shields.io/codecov/c/gh/shlinkio/shlink/develop?style=flat-square)](https://app.codecov.io/gh/shlinkio/shlink)
 [![Code Coverage](https://img.shields.io/scrutinizer/coverage/g/shlinkio/shlink.svg?style=flat-square)](https://scrutinizer-ci.com/g/shlinkio/shlink/)
-[![Scrutinizer Code Quality](https://img.shields.io/scrutinizer/g/shlinkio/shlink.svg?style=flat-square)](https://scrutinizer-ci.com/g/shlinkio/shlink/)
 [![Latest Stable Version](https://img.shields.io/github/release/shlinkio/shlink.svg?style=flat-square)](https://packagist.org/packages/shlinkio/shlink)
 [![Docker pulls](https://img.shields.io/docker/pulls/shlinkio/shlink.svg?logo=docker&style=flat-square)](https://hub.docker.com/r/shlinkio/shlink/)
 [![License](https://img.shields.io/github/license/shlinkio/shlink.svg?style=flat-square)](https://github.com/shlinkio/shlink/blob/main/LICENSE)