Time series generator

Create reproducible timestamped test data with trend, seasonality, seeded noise, missing values and outliers.

Try:
Generated series

About this tool

Time series generator creates reproducible test data for charts, forecasting pipelines, monitoring demos and data-cleaning fixtures. Pick a start timestamp, interval and row count, then layer on a trend, one or more seasonal cycles, seeded noise, missing values and outliers.

Use it when you need data that looks realistic enough to exercise code paths, but you still want every run to be deterministic. The same seed and settings produce the same CSV, TSV, JSON or NDJSON in the CLI, chat block and browser page.

Example: generate two days of hourly web traffic with daily seasonality and two value columns:

gizza tool time-series-generator start=2024-06-01T00:00:00Z interval=1h count=48 base=1000 period=24 amplitude=120 noise_level=20 series=2 labels=visits,signups seed=7

For QA fixtures, switch output=stats to inspect the achieved min, max, mean, standard deviation and how many values were blanked or spiked before handing the rows to another tool.

Limits and edge cases

FAQ

How do I make the same data again?

Keep the same seed and the same settings. Randomness comes from a deterministic SplitMix64 stream, so matching inputs reproduce exactly across the CLI and browser page.

Can I generate daily and weekly seasonality at the same time?

Yes. Put comma-separated cycles in period and matching strengths in amplitude, for example period=24,168 amplitude=8,4 for hourly data with a daily and weekly wave.

What does multiplicative mode change?

In additive mode, seasonality and noise are added in raw units. In multiplicative mode, amplitude and noise_level are fractions of the current level, which is useful when larger values should also have larger swings.

How are missing values and outliers represented?

Missing values become empty cells in CSV/TSV and null in JSON/NDJSON. Outliers are applied before min/max clamps, so you can create spikes and still keep the final data inside a realistic range.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool time-series-generator 'start=2024-01-01'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/time-series-generator/?start=2024-01-01&interval=1d&count=100&base=100&trend=linear&trend_strength=0.5&seasonality=sine&period=7%20or%2024%2C168&amplitude=10%20or%208%2C4&weekday_pattern=1.1%2C%201.05%2C%201%2C%201.05%2C%201.25%2C%200.8%2C%200.7&combine=additive&noise=gaussian&noise_level=5&noise_phi=0.7&missing_rate=0&outlier_rate=0&outlier_magnitude=3&outlier_direction=both&min_value=0&max_value=250&series=1&seed=42&decimals=2&output=csv&timestamp_format=auto&header=true&labels=visits%2Csignups

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.