# Powerduck vs WireMock: Which Mock Server?

**Short answer:** WireMock is the JVM standard for code-first HTTP stubbing; Powerduck is a spec-first, language-agnostic mock server. The first is unmatched in code-level control on the JVM; the second is generated from the contract and shared across languages. Choose by stack and by whether the mock should be authored or derived.

## What WireMock is best at

Deep matching, stateful scenarios, fault injection, and record-replay in Java or Kotlin, embedded in the tests. It is the right tool for a JVM codebase that wants maximum control.

## What a spec-first mock is best at

| Capability | WireMock | Powerduck |
| --- | --- | --- |
| Approach | Code-first | Spec-first |
| Runtime | JVM | Language-agnostic |
| Source | Stub code | OpenAPI contract |
| On change | Update code | On save |

## The stitching problem

Code-first stubs are a separate description of the API maintained in the tests. A spec-first mock is generated from the contract and cannot drift.

## The decision rule

Use WireMock for JVM code-first control. Use Powerduck when the mock should be generated, shared across languages, and kept in sync.

This is part of the [Powerduck vs WireMock comparison](https://www.powerduck.com/blog/powerduck-vs-wiremock/). Next, read [Java vs spec](https://www.powerduck.com/blog/wiremock-java-vs-openapi-mock-server/).

