Distributed Trace Generator
A trace is not a list of log lines. It is a tree with a shape you can be wrong about: a call cannot start before the call that made it, cannot finish after it, and cannot quietly succeed while something underneath it failed. This builds a request as that tree, with services, operations, whole-millisecond timings and an optional failure that shows all the way to the top — so a dashboard, a parser or a demo has something to chew on that is actually well formed.
What this generator does
Lays out an entry point across the time you give it, then hands each call a window inside its caller’s and repeats. Times are whole milliseconds, so a call either sits inside its caller or plainly does not.
How to use this tool
- Set how deep the calls go and how many each one makes.
- Say how long the whole request took, and how often calls run at the same time.
- Fail a call if you want to see how a failure looks on its way up.
- Build it, then read the waterfall or copy it as JSON or columns.
Understanding the controls
- Levels and calls each
- How deep and how wide the tree is. A shape that will not fit in the time given is refused with the smallest time that would work, rather than squeezed until it breaks.
- How long the request takes
- The entry point’s own duration. Everything else is carved out of it.
- Calls at the same time
- At zero, siblings run strictly one after another and the time each call spent on its own work adds up to exactly the length of the request. Above zero some groups overlap, and overlapping work is counted once rather than twice.
- Fail one call
- Picks a call at the bottom, marks it as the origin, and marks every call above it as failed — which is what a real trace does and what makes a failure findable.
Common use cases
- Filling a tracing dashboard with something to look at before real traffic arrives
- Testing a parser or an exporter against a well-formed tree rather than a hand-typed one
- Explaining to a team what a slow chain of calls looks like
- Producing screenshots for documentation without exposing real traffic
- Showing what a failure deep in the tree does to everything above it
How this generator works
The finished tree is read back before it is shown. Every call is looked up against its caller for containment, sibling calls are checked for overlap where none was asked for, own-work times are added up against the length of the request, the slowest chain is confirmed to be the last to return at every step, and the failure is confirmed to be marked above the origin and nowhere else. Those results are printed under the trace.
Randomness and fairness
Services, operations and timings are built from a repeat word taken from your browser’s secure generator unless you type one of your own, and that word goes into the address bar, so the link brings the same trace back. Reproducibility is the whole point of a fixture and is the opposite of secrecy: a repeat word carries no cryptographic strength and nothing here belongs anywhere that needs it.
For how randomness is produced across the whole site, see how Generate Random works.
Limitations and good to know
- One caller per call, so it does not model a call fanning back into a shared downstream service.
- Up to five levels and four calls each, which is a readable example rather than a production trace.
- The slowest chain finishes before the request does, because the entry point carries on working after its last call returns. That gap is reported rather than hidden.
- Service and operation names are invented and are not meant to match any real system.
Privacy and your data
The trace is built in your browser. No settings and nothing generated is transmitted or stored.
Related generators
- Test Event Log GeneratorGenerate realistic log rows in your own event vocabulary — ordered timestamps, event names, actors and status codes — as CSV, with every value you list guaranteed to appear if you ask.
- API Failure Scenario GeneratorNine distinct ways an API call fails, each saying where in the request it broke, whether a retry is safe, and what the client should do.
- Timestamp Sequence GeneratorGenerate an ordered run of timestamps at a set interval, with optional jitter, in ISO, epoch, SQL or date-only format.
- Relational Test Data GeneratorBuilds three linked tables of sample rows where every key joins up — plus, if you want them, an exact number of ones that do not.