Open source · Self-hosted · Web UI + REST API

Mockyard generates realistic test data on your own machine.

Describe the rows you need in a web UI or with one API call, and get CSV or JSON back. A single Rust binary, free and open source.

Mockyard's schema builder: rows for first name, last name, email and a weighted role enum, with row count and format controls

What it does.

The parts of Mockaroo people actually use, running on your own infrastructure.

Web UI

Build a schema, hit Generate.

Add fields, pick a type, tune the options. The file downloads straight from the browser.

REST API

One POST from scripts, tests or CI.

Send a schema to /v1/generate. Interactive docs with a try-it-out panel live at /docs, and the OpenAPI 3.1 spec ships with the binary.

35+ field types

People, places, money, machines.

Names, emails, phones, addresses, coordinates, companies, job titles, cards, domains, IPs, MAC addresses, user agents, dates, text, numbers, UUIDs, colours, booleans.

Believable options

Messy on purpose.

A blank percentage on any field, min and max ranges including negatives, decimal places, true/false ratios and weighted enum values.

Lookups

Columns that agree with each other.

Define a small table like city, state, country and Mockyard samples whole rows from it, so related values never contradict.

Real addresses

Street addresses that exist.

Sampled from a dataset of real addresses, kept unique within a request as far as the data allows, with a live duplicate-risk estimate while you design.

Run it.

One container, no configuration. Then open the UI or talk to the API.

docker run -p 8080:8080 ghcr.io/portside-labs/mockyard

Then open http://localhost:8080 for the UI, or http://localhost:8080/docs for the API docs.

Request
curl -X POST http://localhost:8080/v1/generate \
  -H "Content-Type: application/json" \
  -d '{
    "fields": [
      { "name": "id",        "type": "row_number" },
      { "name": "name",      "type": "full_name" },
      { "name": "email",     "type": "email",
        "options": { "blank_percentage": 10 } },
      { "name": "plan",      "type": "enum",
        "options": { "values": [
          { "value": "free", "weight": 60 },
          { "value": "pro",  "weight": 30 },
          { "value": "team" } ] } },
      { "name": "balance",   "type": "currency",
        "options": { "min": 0, "max": 500 } }
    ],
    "num_rows": 3,
    "format": "json"
  }'
Response
[
  {
    "id": 1,
    "name": "Iliana Bashirian",
    "email": "[email protected]",
    "plan": "free",
    "balance": 376.77
  },
  {
    "id": 2,
    "name": "Monserrat Jakubowski",
    "email": "[email protected]",
    "plan": "team",
    "balance": 284.23
  },
  {
    "id": 3,
    "name": "Reese Moore",
    "email": null,
    "plan": "free",
    "balance": 63.7
  }
]
Mockyard's interactive API documentation page
Interactive API docs at /docs, with a try-it-out panel.

Questions.

Is Mockyard really free?

Yes. Mockyard is open source. Run it anywhere, for anything, with no account and no per-row pricing. A single request can return up to 10 million rows.

Does my data leave my machine?

No. Generation happens inside the container or binary you run. Mockyard sends nothing to us.

How is it different from Mockaroo?

Same idea, on your own infrastructure: no sign-up, no row caps to pay for, and it fits into a CI pipeline as one Docker command and one HTTP call.

Can I use it in tests or CI?

Yes. Start the container, POST your schema to /v1/generate and use the CSV or JSON it returns. The OpenAPI 3.1 spec is included for generating clients.

Where do I report a bug or ask for a field type?

Open an issue on GitHub at https://github.com/portside-labs/mockyard. Pull requests are welcome.