diff --git a/frameworks/vertx/Dockerfile b/frameworks/vertx/Dockerfile
new file mode 100644
index 0000000..26bc87a
--- /dev/null
+++ b/frameworks/vertx/Dockerfile
@@ -0,0 +1,26 @@
+FROM maven:3.9-eclipse-temurin-21 AS build
+WORKDIR /app
+COPY pom.xml .
+RUN mvn dependency:go-offline -q
+COPY src ./src
+RUN mvn package -DskipTests -q
+
+FROM eclipse-temurin:21-jre
+WORKDIR /app
+COPY --from=build /app/target/vertx-httparena-1.0.0.jar /app/app.jar
+EXPOSE 8080 8443
+ENTRYPOINT ["java", \
+ "-server", \
+ "-XX:+UseParallelGC", \
+ "-XX:+UseNUMA", \
+ "-XX:-StackTraceInThrowable", \
+ "-Dio.netty.buffer.checkBounds=false", \
+ "-Dio.netty.buffer.checkAccessible=false", \
+ "-Dvertx.disableURIValidation=true", \
+ "-Dvertx.disableHttpHeadersValidation=true", \
+ "-Dvertx.disableMetrics=true", \
+ "-Dvertx.disableH2c=true", \
+ "-Dvertx.disableWebsockets=true", \
+ "-Dvertx.threadChecks=false", \
+ "-Dvertx.disableContextTimings=true", \
+ "-jar", "app.jar"]
diff --git a/frameworks/vertx/README.md b/frameworks/vertx/README.md
new file mode 100644
index 0000000..15792b5
--- /dev/null
+++ b/frameworks/vertx/README.md
@@ -0,0 +1,22 @@
+# Vert.x — HttpArena
+
+[Eclipse Vert.x](https://github.com/eclipse-vertx/vert.x) is a reactive toolkit for building high-performance applications on the JVM. Unlike traditional frameworks (Spring, Quarkus), Vert.x uses an event-loop threading model directly on Netty — no annotation scanning, no dependency injection, no framework overhead.
+
+## Key Details
+
+- **Vert.x 4.5.14** (latest stable) with vertx-web for routing
+- **Event-loop architecture**: one verticle instance per CPU core, each on its own event loop
+- **JDK 21** with ParallelGC
+- **Jackson** for JSON serialization
+- **SQLite** via JDBC (executed on worker threads via `executeBlocking()` to avoid blocking event loops)
+- **Pre-computed** JSON and gzip responses at startup
+- **Netty native transport** enabled (`preferNativeTransport`)
+
+## Architecture Notes
+
+Vert.x sits in a unique spot in the JVM ecosystem:
+- **Spring** = DI + annotations + Tomcat/Netty (high-level framework)
+- **Quarkus** = CDI + annotations + Vert.x/Netty under the hood (compile-time optimization)
+- **Vert.x** = event loops + handlers + Netty directly (reactive toolkit)
+
+Quarkus actually uses Vert.x internally, so this benchmark shows the raw Vert.x performance vs. the Quarkus abstraction on top.
diff --git a/frameworks/vertx/meta.json b/frameworks/vertx/meta.json
new file mode 100644
index 0000000..29761ba
--- /dev/null
+++ b/frameworks/vertx/meta.json
@@ -0,0 +1,21 @@
+{
+ "display_name": "vertx",
+ "language": "Java",
+ "type": "framework",
+ "engine": "Netty",
+ "description": "Eclipse Vert.x 4.5 — reactive toolkit on Netty with event-loop threading, JDK 21.",
+ "repo": "https://github.com/eclipse-vertx/vert.x",
+ "enabled": true,
+ "tests": [
+ "baseline",
+ "pipelined",
+ "limited-conn",
+ "json",
+ "upload",
+ "compression",
+ "noisy",
+ "mixed",
+ "baseline-h2",
+ "static-h2"
+ ]
+}
diff --git a/frameworks/vertx/pom.xml b/frameworks/vertx/pom.xml
new file mode 100644
index 0000000..5c5fba8
--- /dev/null
+++ b/frameworks/vertx/pom.xml
@@ -0,0 +1,78 @@
+
+
+ 4.0.0
+
+ com.httparena
+ vertx-httparena
+ 1.0.0
+ jar
+
+
+ 21
+ 21
+ UTF-8
+ 4.5.14
+ 2.16.1
+
+
+
+
+ io.vertx
+ vertx-core
+ ${vertx.version}
+
+
+ io.vertx
+ vertx-web
+ ${vertx.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+
+
+ org.xerial
+ sqlite-jdbc
+ 3.47.2.0
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.6.0
+
+
+ package
+
+ shade
+
+
+
+
+ com.httparena.MainVerticle
+
+
+
+
+
+ *:*
+
+ META-INF/*.SF
+ META-INF/*.DSA
+ META-INF/*.RSA
+
+
+
+
+
+
+
+
+
+
diff --git a/frameworks/vertx/src/main/java/com/httparena/MainVerticle.java b/frameworks/vertx/src/main/java/com/httparena/MainVerticle.java
new file mode 100644
index 0000000..f203e9f
--- /dev/null
+++ b/frameworks/vertx/src/main/java/com/httparena/MainVerticle.java
@@ -0,0 +1,339 @@
+package com.httparena;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.vertx.core.*;
+import io.vertx.core.buffer.Buffer;
+import io.vertx.core.http.*;
+import io.vertx.core.net.PemKeyCertOptions;
+import io.vertx.ext.web.Router;
+import io.vertx.ext.web.RoutingContext;
+import io.vertx.ext.web.handler.BodyHandler;
+
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.sql.*;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class MainVerticle extends AbstractVerticle {
+
+ private static final ObjectMapper MAPPER = new ObjectMapper();
+ private static final Buffer OK_BUFFER = Buffer.buffer("ok");
+
+ // Shared pre-computed data (loaded once, shared across verticle instances)
+ private static volatile List