Three terms QA engineers use interchangeably — and why the distinction is actually useful.
"Just use some mock data" and "generate some fake data" get thrown around as if they mean the same thing. In casual conversation, they mostly do. But the underlying concepts are different enough that picking the right one saves real time.
Dummy data is the placeholder you use purely to fill space — you don't care what it says, only that something is there. Think lorem ipsum text in a design mockup, a gray placeholder image while a layout is being reviewed, or a text file generated purely to test whether an upload button accepts a 50MB file. Nobody reads a dummy value for meaning; it exists to occupy a slot.
Good tools: Lorem Ipsum generator, image generator, text file generator.
Fake data is meant to look and behave like the real thing, down to the format and internal consistency — a plausible name paired with a plausible email, a card number that passes the same checksum real cards use, an address with a real-looking street/city/postal-code structure. The point isn't that it's meaningless (like dummy data) — it's that it's realistic enough to exercise validation logic, formatting, and display code the same way genuine data would, without being tied to a real person or account.
Good tools: names generator, test card generator, phone number generator.
Mocking is a slightly different axis — it's less about the data's content and more about what it's replacing. A mock is a stand-in for something you don't want to call for real during a test: a payment gateway, a third-party API, a slow database. "Mock data" usually means the canned response you configure the mock to return — a fake JSON payload shaped exactly like what the real API would send back, used to test how your frontend handles it without ever making the real network call.
Good tools: the JSON / CSV / SQL generator is a natural source of the payloads you'd hand to a mock server or intercepted API route — see our guide to mocking API responses.
In practice, a single generated record often serves more than one purpose at once — a fake user object might be dummy data for a UI layout test and mock data for an intercepted API call, at the same time. The distinction is more about intent than a strict taxonomy: are you filling space, imitating realism, or replacing a system? Once you know which one you need, picking the right generator (and the right level of realism to bother with) gets a lot faster.