diff --git a/.circleci/config.yml b/.circleci/config.yml
index 25a175c4..cc65a597 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -41,7 +41,6 @@ jobs:
           name: unit-tests
           command: |
             ./gradlew ciTest testDebugUnitTest
-            ./gradlew jacocoFullReport
       - run:
           name: lint
           command: ./gradlew :ultrasonic:lintRelease
@@ -61,8 +60,6 @@ jobs:
       - store_artifacts:
           path: subsonic-api/build/reports
           destination: reports
-      - store_artifacts:
-          path: build/reports/jacoco/jacocoFullReport/
   push_translations:
     docker:
       - image: cimg/python:3.6
diff --git a/build.gradle b/build.gradle
index 925569fa..c44d7f84 100644
--- a/build.gradle
+++ b/build.gradle
@@ -17,7 +17,6 @@ buildscript {
         classpath libs.kotlin
         classpath libs.ktlintGradle
         classpath libs.detekt
-        classpath libs.jacoco
     }
 }
 
@@ -44,8 +43,6 @@ allprojects {
     }
 }
 
-apply from: 'gradle_scripts/jacoco.gradle'
-
 wrapper {
     gradleVersion(libs.versions.gradle.get())
     distributionType("all")
diff --git a/core/domain/build.gradle b/core/domain/build.gradle
index 0b0ab96c..3ed1e681 100644
--- a/core/domain/build.gradle
+++ b/core/domain/build.gradle
@@ -1,12 +1,6 @@
 apply from: bootstrap.androidModule
 apply plugin: 'kotlin-kapt'
 
-ext {
-    jacocoExclude = [
-            '**/domain/**'
-    ]
-}
-
 dependencies {
     implementation libs.roomRuntime
     implementation libs.roomKtx
diff --git a/core/subsonic-api/build.gradle b/core/subsonic-api/build.gradle
index 9ad09193..6db3ffcb 100644
--- a/core/subsonic-api/build.gradle
+++ b/core/subsonic-api/build.gradle
@@ -20,11 +20,3 @@ dependencies {
     testImplementation libs.mockWebServer
     testImplementation libs.apacheCodecs
 }
-
-ext {
-    // Excluding data classes
-    jacocoExclude = [
-            '**/models/**',
-            '**/di/**'
-    ]
-}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 59ea094a..f5edc6ce 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -8,7 +8,6 @@ androidxcore           = "1.6.0"
 ktlint                 = "0.43.2"
 ktlintGradle           = "10.2.0"
 detekt                 = "1.19.0"
-jacoco                 = "0.8.7"
 preferences            = "1.1.1"
 media                  = "1.3.1"
 media3                 = "1.0.0-alpha03"
@@ -49,7 +48,6 @@ gradle                  = { module = "com.android.tools.build:gradle", version.r
 kotlin                  = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
 ktlintGradle            = { module = "org.jlleitschuh.gradle:ktlint-gradle", version.ref = "ktlintGradle" }
 detekt                  = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detekt" }
-jacoco                  = { module = "org.jacoco:org.jacoco.core", version.ref = "jacoco" }
 
 core                    = { module = "androidx.core:core-ktx", version.ref = "androidxcore" }
 support                 = { module = "androidx.legacy:legacy-support-v4", version.ref = "androidLegacySupport" }
diff --git a/gradle_scripts/android-module-bootstrap.gradle b/gradle_scripts/android-module-bootstrap.gradle
index 84aa4e41..70a8a479 100644
--- a/gradle_scripts/android-module-bootstrap.gradle
+++ b/gradle_scripts/android-module-bootstrap.gradle
@@ -3,7 +3,6 @@
  */
 apply plugin: 'com.android.library'
 apply plugin: 'kotlin-android'
-apply plugin: 'jacoco'
 apply from: "${project.rootDir}/gradle_scripts/code_quality.gradle"
 
 android {
@@ -48,10 +47,6 @@ android {
 
 tasks.withType(Test) {
     useJUnitPlatform()
-    jacoco {
-        includeNoLocationClasses = true
-        excludes += jacocoExclude
-    }
 }
 
 dependencies {
@@ -61,11 +56,4 @@ dependencies {
     testRuntimeOnly libs.junitVintage
 }
 
-jacoco {
-    toolVersion(libs.versions.jacoco.get())
-}
-
-ext {
-    jacocoExclude = ['jdk.internal.*']
-}
 
diff --git a/gradle_scripts/jacoco.gradle b/gradle_scripts/jacoco.gradle
deleted file mode 100644
index c8ba2c07..00000000
--- a/gradle_scripts/jacoco.gradle
+++ /dev/null
@@ -1,92 +0,0 @@
-apply plugin: 'jacoco'
-
-jacoco {
-    toolVersion(libs.versions.jacoco.get())
-}
-
-def mergedJacocoExec = file("${project.buildDir}/jacoco/jacocoMerged.exec")
-
-def merge = tasks.register('jacocoMergeReports', JacocoMerge) {
-    group = "Reporting"
-    description = "Merge all jacoco reports from projects into one."
-
-    ListProperty<File> jacocoFiles = project.objects.listProperty(File.class)
-    project.subprojects { subproject ->
-        subproject.plugins.withId("jacoco") {
-            project.logger.info("${subproject.name} has Jacoco plugin applied")
-            subproject.tasks.withType(Test) { task ->
-                File destFile = task.extensions.getByType(JacocoTaskExtension.class).destinationFile
-                if (destFile.exists() && !task.name.contains("Release")) {
-                    jacocoFiles.add(destFile)
-                }
-            }
-        }
-    }
-
-    executionData(jacocoFiles)
-    destinationFile(mergedJacocoExec)
-}
-
-tasks.register('jacocoFullReport', JacocoReport) {
-    dependsOn merge
-    group = "Reporting"
-    description = "Generate full Jacoco coverage report including all modules."
-
-    getClassDirectories().setFrom(files())
-    getSourceDirectories().setFrom(files())
-    getExecutionData().setFrom(files())
-
-    reports {
-        xml.enabled = true
-        html.enabled = true
-        csv.enabled = false
-    }
-
-    // Always run merging, as all input calculation is done in doFirst {}
-    outputs.upToDateWhen { false }
-    // Task will run anyway even if initial inputs are empty
-    onlyIf = { true }
-
-    project.subprojects { subproject ->
-        subproject.plugins.withId("jacoco") {
-            project.logger.info("${subproject.name} has Jacoco plugin applied")
-            subproject.plugins.withId("kotlin-android") {
-                project.logger.info("${subproject.name} is android project")
-                def mainSources = subproject.extensions.findByName("android").sourceSets['main']
-                project.logger.info("Android sources: ${mainSources.java.srcDirs}")
-                mainSources.java.srcDirs.forEach {
-                    additionalSourceDirs(it)
-                }
-                project.logger.info("Subproject exclude: ${subproject.jacocoExclude}")
-                additionalClassDirs(fileTree(
-                        dir: "${subproject.buildDir}/tmp/kotlin-classes/debug",
-                        excludes: subproject.jacocoExclude
-                ))
-            }
-            subproject.plugins.withId("kotlin") { plugin ->
-                project.logger.info("${subproject.name} is common kotlin project")
-                SourceDirectorySet mainSources = subproject.extensions.getByName("kotlin")
-                        .sourceSets[SourceSet.MAIN_SOURCE_SET_NAME]
-                        .kotlin
-                mainSources.srcDirs.forEach {
-                    project.logger.debug("Adding sources: $it")
-                    additionalSourceDirs(it)
-                }
-                project.logger.info("Subproject exclude: ${subproject.jacocoExclude}")
-                additionalClassDirs(fileTree(
-                        dir: "${subproject.buildDir}/classes/kotlin/main",
-                        excludes: subproject.jacocoExclude
-                ))
-            }
-
-            subproject.tasks.withType(Test) { task ->
-                File destFile = task.extensions.getByType(JacocoTaskExtension.class).destinationFile
-                if (destFile.exists() && !task.name.contains("Release")) {
-                    project.logger.info("Adding execution data: $destFile")
-                    executionData(destFile)
-                }
-            }
-        }
-    }
-
-}
diff --git a/gradle_scripts/kotlin-module-bootstrap.gradle b/gradle_scripts/kotlin-module-bootstrap.gradle
index 4a17c80f..d440dec5 100644
--- a/gradle_scripts/kotlin-module-bootstrap.gradle
+++ b/gradle_scripts/kotlin-module-bootstrap.gradle
@@ -3,7 +3,6 @@
  */
 apply plugin: 'kotlin'
 apply plugin: 'kotlin-kapt'
-apply plugin: 'jacoco'
 apply from: "${project.rootDir}/gradle_scripts/code_quality.gradle"
 
 sourceSets {
@@ -21,36 +20,8 @@ dependencies {
     testRuntimeOnly libs.junitVintage
 }
 
-jacoco {
-    toolVersion(libs.versions.jacoco.get())
-}
-
-ext {
-    // override it in the module
-    jacocoExclude = ['jdk.internal.*']
-}
-
-jacocoTestReport {
-    reports {
-        html.required = true
-        xml.required = false
-        csv.required = false
-    }
-
-    afterEvaluate {
-        getClassDirectories().setFrom(files(classDirectories.files.collect {
-            fileTree(dir: it, excludes: jacocoExclude)
-        }))
-    }
-}
-
 tasks.named("test").configure {
     useJUnitPlatform()
-    jacoco {
-        excludes += jacocoExclude
-        includeNoLocationClasses = true
-    }
-    finalizedBy jacocoTestReport
 }
 
 tasks.register("ciTest") {
diff --git a/ultrasonic/build.gradle b/ultrasonic/build.gradle
index 95196a9c..986ebf0e 100644
--- a/ultrasonic/build.gradle
+++ b/ultrasonic/build.gradle
@@ -1,7 +1,6 @@
 apply plugin: 'com.android.application'
 apply plugin: 'kotlin-android'
 apply plugin: 'kotlin-kapt'
-apply plugin: 'jacoco'
 apply from: "../gradle_scripts/code_quality.gradle"
 
 android {
@@ -135,36 +134,3 @@ dependencies {
 
     implementation libs.timber
 }
-
-jacoco {
-    toolVersion(libs.versions.jacoco.get())
-}
-
-// Excluding all java classes and stuff that should not be covered
-ext {
-    jacocoExclude = [
-            '**/activity/**',
-            '**/audiofx/**',
-            '**/fragment/**',
-            '**/provider/**',
-            '**/receiver/**',
-            '**/service/**',
-            '**/Test/**',
-            '**/util/**',
-            '**/view/**',
-            '**/R$*.class',
-            '**/R.class',
-            '**/BuildConfig.class',
-            '**/di/**',
-            'jdk.internal.*'
-    ]
-}
-
-jacoco {
-    toolVersion(libs.versions.jacoco.get())
-}
-
-tasks.withType(Test) {
-    jacoco.includeNoLocationClasses = true
-    jacoco.excludes += jacocoExclude
-}