wiremock is a free, open source api development & testing project written in Java and released under Apache-2.0. It has 7,374 GitHub stars, 1,518 forks and 503 open issues, and was last pushed 2 days ago. On this registry it ranks #31 of 103 tracked projects in API Development & Testing, with 5 head-to-head comparisons available. It gained 2 stars over the last 3 tracked days.

What is wiremock?

What it is

WireMock is an open source tool for mocking HTTP services, started in 2011 as a Java library by Tom Akehurst and now spanning multiple programming languages and technology stacks. It lives in the Java ecosystem, is licensed under Apache-2.0, and is published at wiremock.org. The project can run as a library or client wrapper in many languages, or as a standalone server, and it supports several approaches for creating mock APIs: in code, via its REST API, as JSON files, and by recording HTTP traffic proxied to another destination.

The concrete problem it solves is the instability and unavailability of the HTTP services that tests and development environments depend on. WireMock creates stable test and development environments, isolates a codebase from flaky third parties, and simulates APIs that do not exist yet. Its rich matching system allows any part of an incoming request to be matched against complex and precise criteria, and responses of any complexity can be generated dynamically through a Handlebars based templating system. Numerous extension points and comprehensive APIs make it straightforward to integrate into an existing workflow.

Key capabilities

  • HTTP response stubbing, matchable on URL, header and body content patterns.
  • Configuration through a fluent Java API, JSON files, or JSON over HTTP.
  • Record and playback of stubs, including recording HTTP traffic proxied to another destination.
  • Request verification against the stubs that were registered.
  • Fault and response delay injection for exercising error and timeout paths.
  • Per-request conditional proxying, plus browser proxying for request inspection and replacement.
  • Stateful behaviour simulation and extensibility through documented extension points.

Who uses it and how

  • Teams running WireMock inside unit tests, where it starts and stops alongside the test suite.
  • Teams running it as a standalone process or as a container, so a shared mock API serves several services or developers.
  • Teams recording traffic from a real upstream and replaying it as stubs, to remove dependence on a live third party.
  • Teams defining stubs as JSON files or posting them over the REST API, keeping mock definitions outside application code.
  • Teams simulating APIs that do not exist yet, so client work can proceed before the upstream is built.

Getting started

WireMock can run in unit tests, as a standalone process, or as a container, and can be used as a library or client wrapper in many languages. Full documentation is at wiremock.org/docs, and the community Slack at slack.wiremock.org hosts a #help channel for questions.

When to use it — and when not to

WireMock open source is the free tool that powers WireMock Cloud, the paid offering the README points to for advanced capabilities such as OpenAPI, dynamic state, and data sources, so teams needing those features are directed to the hosted product rather than the open source build. A self-hoster runs the standalone server or container and maintains the stub definitions, JSON files, and any recording or proxying configuration themselves. The project carries 503 open issues and ships a japicmp-based report comparing each build against the last 3.x release for binary-incompatible changes to @PublishedAPI classes, so upgrades across

project readme (upstream, from github) — read inline

WireMock - flexible, open source API mocking

WireMock Logo

Build Status Docs Join us on Slack Contributing Guide Maven Central


WireMock Cloud Logo WireMock open source is supported by WireMock Cloud. Please consider trying it out if your team needs advanced capabilities such as OpenAPI, dynamic state, data sources and more.

WireMock is the popular open source tool for API mocking, with over 6 million downloads per month, and powers WireMock Cloud.

It can help you to create stable test and development environments, isolate yourself from flaky 3rd parties and simulate APIs that don’t exist yet.

Started in 2011 as a Java library by Tom Akehurst, now WireMock spans across multiple programming languages and technology stacks. It can run as a library or client wrapper in many languages, or as a standalone server. There is a big community behind the project and its ecosystem.

WireMock supports several approaches for creating mock APIs - in code, via its REST API, as JSON files and by recording HTTP traffic proxied to another destination. WireMock has a rich matching system, allowing any part of an incoming request to be matched against complex and precise criteria. Responses of any complexity can be dynamically generated via the Handlebars based templating system. Finally, WireMock is easy to integrate into any workflow due to its numerous extension points and comprehensive APIs.

Key Features

WireMock can run in unit tests, as a standalone process or a container. Key features include:

  • HTTP response stubbing, matchable on URL, header and body content patterns
  • Configuration via a fluent Java API, JSON files and JSON over HTTP
  • Record/playback of stubs
  • Request verification
  • Fault and response delays injection
  • Per-request conditional proxying
  • Browser proxying for request inspection and replacement
  • Stateful behaviour simulation
  • Extensibility

Full documentation can be found at wiremock.org/docs.

Questions and Issues

If you have a question about WireMock, or are experiencing a problem you're not sure is a bug please post a message to the WireMock Community Slack in the #help channel.

On the other hand if you're pretty certain you've found a bug please open an issue.

Log4j Notice

WireMock only uses log4j in its test dependencies. Neither the thin nor standalone JAR depends on or embeds log4j, so you can continue to use WireMock 2.32.0 and above without any risk of exposure to the recently discovered vulnerability.

Breaking-change report

A japicmp-based report compares the current build against the last 3.x release and lists binary-incompatible changes to classes annotated @PublishedAPI.

If you have Claude Code installed, run the report and produce a filtered summary in one step:

/breaking-change-report

To generate the raw report without Claude Code (which will included classes not intended to be part of the published DSL/API):

./gradlew :wiremock-core:japicmp

Reports are written to wiremock-core/build/reports/japicmp/:

File Contents
breaking-changes.html Full report (all public classes)
breaking-changes.txt Same, plain text
breaking-changes-published-api.md Filtered to @PublishedAPI classes only (produced by the skill)

Contributing

WireMock exists and continues to thrive due to the efforts of contributors. Regardless of your expertise and time you could dedicate, there're opportunities to participate and help the project!

See the Contributing Guide for more information.

Frequently asked questions

Is wiremock free to use?

wiremock is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does wiremock do?

A tool for mocking HTTP services

What is wiremock written in?

wiremock is primarily written in Java. Its source is publicly available at https://github.com/wiremock/wiremock, and it has 7,374 GitHub stars.