diff --git a/lib/modules/manager/asdf/extract.spec.ts b/lib/modules/manager/asdf/extract.spec.ts
index 680444d4dad0ea59f9fa01bf7cc8c001fc01c5f3..2865ecaeece099bc79ca223cc592c456d7a6692e 100644
--- a/lib/modules/manager/asdf/extract.spec.ts
+++ b/lib/modules/manager/asdf/extract.spec.ts
@@ -107,6 +107,7 @@ php 8.1.12
 pnpm 7.26.2
 poetry 1.3.2
 pre-commit 3.3.1
+protoc 28.3
 pulumi 3.57.1
 python 3.11.0
 rebar 3.23.0
@@ -559,6 +560,13 @@ dummy 1.2.3
             depName: 'pre-commit',
             extractVersion: '^v(?<version>.+)',
           },
+          {
+            currentValue: '28.3',
+            datasource: 'github-releases',
+            packageName: 'protocolbuffers/protobuf',
+            depName: 'protoc',
+            extractVersion: '^v(?<version>\\S+)',
+          },
           {
             currentValue: '3.57.1',
             datasource: 'github-releases',
diff --git a/lib/modules/manager/asdf/upgradeable-tooling.ts b/lib/modules/manager/asdf/upgradeable-tooling.ts
index ba4ac276d9ef521c185e77ae4d49cbe7da67e403..9c6559c8620795c9ffdc1838a529c43999ade759 100644
--- a/lib/modules/manager/asdf/upgradeable-tooling.ts
+++ b/lib/modules/manager/asdf/upgradeable-tooling.ts
@@ -569,6 +569,14 @@ export const upgradeableTooling: Record<string, ToolingDefinition> = {
       extractVersion: '^v(?<version>.+)',
     },
   },
+  protoc: {
+    asdfPluginUrl: 'https://github.com/paxosglobal/asdf-protoc.git',
+    config: {
+      datasource: GithubReleasesDatasource.id,
+      packageName: 'protocolbuffers/protobuf',
+      extractVersion: '^v(?<version>\\S+)',
+    },
+  },
   pulumi: {
     asdfPluginUrl: 'https://github.com/canha/asdf-pulumi.git',
     config: {