Mockdaten-Generator
Erzeugen Sie Mockdaten, die die Validierung bestehen: Luhn-Karten, IBANs mit mod-97, echte UUIDs. Mit Seed reproduzierbar. JSON, CSV, NDJSON oder SQL.
[
{
"id": "018cc251-f400-79a7-abdf-9623646f1963",
"first_name": "Ruby",
"last_name": "Long",
"email": "[email protected]",
"country": "IE",
"created_at": "2024-04-13T08:13:34Z",
"last_seen_at": null,
"is_active": true
},
{
"id": "018cc251-f7e8-7727-8c38-6095cbcabdb9",
"first_name": "Ellen",
"last_name": "Hoffman",
"email": "[email protected]",
"country": "US",
"created_at": "2024-06-28T10:45:21Z",
"last_seen_at": "2024-10-31T16:44:09Z",
"is_active": false
},
{
"id": "018cc251-fbd0-7056-ad40-e80a775668cc",
"first_name": "Keith",
"last_name": "Hudson",
"email": "[email protected]",
"country": "AR",
"created_at": "2025-08-11T01:04:04Z",
"last_seen_at": "2025-09-19T15:18:41Z",
"is_active": true
},
{
"id": "018cc251-ffb8-74a1-b4c8-83cc6bd2ae90",
"first_name": "Thomas",
"last_name": "Moore",
"email": "[email protected]",
"country": "BE",
"created_at": "2025-02-21T16:27:55Z",
"last_seen_at": "2025-04-28T03:30:59Z",
"is_active": true
},
{
"id": "018cc252-03a0-7309-8795-f9f277a8f8c0",
"first_name": "Benjamin",
"last_name": "Austin",
"email": "[email protected]",
"country": "MX",
"created_at": "2024-06-15T11:04:56Z",
"last_seen_at": "2025-06-30T22:00:26Z",
"is_active": true
},
{
"id": "018cc252-0788-7658-937d-58b138c92232",
"first_name": "Barbara",
"last_name": "Flores",
"email": "[email protected]",
"country": "GR",
"created_at": "2024-04-17T19:41:08Z",
"last_seen_at": "2025-01-13T23:55:46Z",
"is_active": true
},
{
"id": "018cc252-0b70-7c3a-96ae-719ee90a05af",
"first_name": "Allen",
"last_name": "Vazquez",
"email": "[email protected]",
"country": "NG",
"created_at": "2024-09-18T13:23:49Z",
"last_seen_at": "2026-05-04T06:32:51Z",
"is_active": false
},
{
"id": "018cc252-0f58-7dfd-8623-52572f04ce20",
"first_name": "Harry",
"last_name": "Nichols",
"email": "[email protected]",
"country": "SG",
"created_at": "2026-06-26T14:48:47Z",
"last_seen_at": "2026-06-30T12:56:13Z",
"is_active": false
},
{
"id": "018cc252-1340-738f-b536-279444cb4512",
"first_name": "Elaine",
"last_name": "Wagner",
"email": "[email protected]",
"country": "UA",
"created_at": "2025-05-09T14:48:44Z",
"last_seen_at": "2026-05-19T14:58:47Z",
"is_active": true
},
{
"id": "018cc252-1728-7d96-8856-b87ee9d904e9",
"first_name": "Fred",
"last_name": "Fisher",
"email": "[email protected]",
"country": "JP",
"created_at": "2025-11-25T05:27:13Z",
"last_seen_at": "2026-04-04T05:36:09Z",
"is_active": true
},
{
"id": "018cc252-1b10-7baa-a79b-9567cf1366fd",
"first_name": "Lois",
"last_name": "Nelson",
"email": "[email protected]",
"country": "FR",
"created_at": "2025-05-08T16:32:25Z",
"last_seen_at": null,
"is_active": true
},
{
"id": "018cc252-1ef8-7c8c-b859-cea655faef9c",
"first_name": "Mark",
"last_name": "Cunningham",
"email": "[email protected]",
"country": "FI",
"created_at": "2026-02-21T11:09:02Z",
"last_seen_at": null,
"is_active": true
},
{
"id": "018cc252-22e0-77bf-bc1c-40120a5b29c4",
"first_name": "Anne",
"last_name": "Flores",
"email": "[email protected]",
"country": "KR",
"created_at": "2025-08-02T22:55:20Z",
"last_seen_at": "2025-10-27T03:27:52Z",
"is_active": true
},
{
"id": "018cc252-26c8-7220-9453-1804e8ce88c4",
"first_name": "Arthur",
"last_name": "Crawford",
"email": "[email protected]",
"country": "PL",
"created_at": "2025-02-26T04:55:03Z",
"last_seen_at": "2025-07-25T07:05:17Z",
"is_active": true
},
{
"id": "018cc252-2ab0-75a8-8a2b-28833306b87c",
"first_name": "Ronald",
"last_name": "Hansen",
"email": "[email protected]",
"country": "KR",
"created_at": "2025-03-09T06:31:44Z",
"last_seen_at": "2026-01-04T03:11:24Z",
"is_active": true
},
{
"id": "018cc252-2e98-7c38-93e2-9f80d039eb75",
"first_name": "Donna",
"last_name": "Porter",
"email": "[email protected]",
"country": "IE",
"created_at": "2026-01-12T06:55:22Z",
"last_seen_at": null,
"is_active": true
},
{
"id": "018cc252-3280-77a0-8152-8f5a9584a581",
"first_name": "Carol",
"last_name": "Wells",
"email": "[email protected]",
"country": "PL",
"created_at": "2025-07-20T23:09:02Z",
"last_seen_at": "2026-01-24T23:04:38Z",
"is_active": true
},
{
"id": "018cc252-3668-7208-8bbe-619dada6b7e0",
"first_name": "Sheila",
"last_name": "Lee",
"email": "[email protected]",
"country": "PT",
"created_at": "2025-01-05T20:09:52Z",
"last_seen_at": "2025-04-08T12:02:09Z",
"is_active": false
},
{
"id": "018cc252-3a50-7b11-9261-0c17e909f6fb",
"first_name": "Jack",
"last_name": "Evans",
"email": "[email protected]",
"country": "KE",
"created_at": "2025-12-29T14:31:00Z",
"last_seen_at": "2026-03-28T14:30:43Z",
"is_active": true
},
{
"id": "018cc252-3e38-7f22-8cc7-0dd649d26379",
"first_name": "Randy",
"last_name": "Harris",
"email": "[email protected]",
"country": "GB",
"created_at": "2026-06-26T19:25:04Z",
"last_seen_at": "2026-06-30T08:39:51Z",
"is_active": true
},
{
"id": "018cc252-4220-7e86-8dae-b25b4f837713",
"first_name": "Josephine",
"last_name": "Castro",
"email": "[email protected]",
"country": "DK",
"created_at": "2024-02-07T22:33:55Z",
"last_seen_at": "2026-02-23T13:56:30Z",
"is_active": true
},
{
"id": "018cc252-4608-7120-abd5-535883ca01b9",
"first_name": "Edith",
"last_name": "Graham",
"email": "[email protected]",
"country": "CN",
"created_at": "2024-04-29T08:59:26Z",
"last_seen_at": "2024-06-17T10:20:45Z",
"is_active": true
},
{
"id": "018cc252-49f0-77f7-9bf9-17e87b0a09c6",
"first_name": "Tracy",
"last_name": "Willis",
"email": "[email protected]",
"country": "PT",
"created_at": "2024-03-21T07:42:06Z",
"last_seen_at": null,
"is_active": true
},
{
"id": "018cc252-4dd8-75c8-8b04-1e0fb891e435",
"first_name": "Irene",
"last_name": "Larson",
"email": "[email protected]",
"country": "AT",
"created_at": "2025-06-04T15:01:38Z",
"last_seen_at": null,
"is_active": true
},
{
"id": "018cc252-51c0-7be0-a6ca-12bc704a2b3f",
"first_name": "Betty",
"last_name": "Morrison",
"email": "[email protected]",
"country": "ID",
"created_at": "2025-11-11T21:56:19Z",
"last_seen_at": "2026-03-29T03:33:49Z",
"is_active": true
},
{
"id": "018cc252-55a8-736d-a7b2-8bec744ecf74",
"first_name": "Kevin",
"last_name": "Cox",
"email": "[email protected]",
"country": "GR",
"created_at": "2025-10-06T23:28:21Z",
"last_seen_at": null,
"is_active": false
},
{
"id": "018cc252-5990-73ca-a2d3-89bf2b8eb5f6",
"first_name": "Sean",
"last_name": "Carr",
"email": "[email protected]",
"country": "KR",
"created_at": "2026-02-19T23:27:53Z",
"last_seen_at": "2026-03-02T22:16:30Z",
"is_active": true
},
{
"id": "018cc252-5d78-79e2-bd4d-d8b6867867dc",
"first_name": "Heather",
"last_name": "Ferguson",
"email": "[email protected]",
"country": "IL",
"created_at": "2024-07-07T01:39:16Z",
"last_seen_at": "2025-09-21T19:17:00Z",
"is_active": false
},
{
"id": "018cc252-6160-78f8-a9af-d73b74581b86",
"first_name": "Rose",
"last_name": "Chen",
"email": "[email protected]",
"country": "DE",
"created_at": "2024-09-07T16:16:48Z",
"last_seen_at": "2024-10-02T08:29:39Z",
"is_active": true
},
{
"id": "018cc252-6548-71f0-ab4f-c824fd842a67",
"first_name": "Maria",
"last_name": "Brooks",
"email": "[email protected]",
"country": "FR",
"created_at": "2024-06-29T06:22:30Z",
"last_seen_at": "2025-12-22T00:38:13Z",
"is_active": true
},
{
"id": "018cc252-6930-7067-b516-480051493ec0",
"first_name": "Donna",
"last_name": "Hamilton",
"email": "[email protected]",
"country": "IE",
"created_at": "2024-09-01T09:09:40Z",
"last_seen_at": "2025-03-29T23:26:22Z",
"is_active": false
},
{
"id": "018cc252-6d18-7de1-bae1-21dc471405fa",
"first_name": "Rachel",
"last_name": "Wagner",
"email": "[email protected]",
"country": "IE",
"created_at": "2026-05-31T02:06:02Z",
"last_seen_at": "2026-06-17T16:37:27Z",
"is_active": false
},
{
"id": "018cc252-7100-752d-bc4e-c4e5bd755743",
"first_name": "Philip",
"last_name": "Jones",
"email": "[email protected]",
"country": "NO",
"created_at": "2024-10-21T12:22:35Z",
"last_seen_at": "2025-02-15T07:00:10Z",
"is_active": true
},
{
"id": "018cc252-74e8-7b4d-b9cf-4e8e03d1e269",
"first_name": "Bonnie",
"last_name": "Carter",
"email": "[email protected]",
"country": "PT",
"created_at": "2026-05-28T06:16:25Z",
"last_seen_at": "2026-06-26T21:36:12Z",
"is_active": true
},
{
"id": "018cc252-78d0-708b-a96f-d9f474e95238",
"first_name": "Douglas",
"last_name": "Evans",
"email": "[email protected]",
"country": "NG",
"created_at": "2024-02-18T20:36:33Z",
"last_seen_at": "2024-10-31T01:37:50Z",
"is_active": true
},
{
"id": "018cc252-7cb8-7865-96fa-e9681611dbed",
"first_name": "Theresa",
"last_name": "Larson",
"email": "[email protected]",
"country": "NZ",
"created_at": "2024-11-21T08:57:18Z",
"last_seen_at": null,
"is_active": true
},
{
"id": "018cc252-80a0-7eca-80cd-7159faf3467f",
"first_name": "Gladys",
"last_name": "Reyes",
"email": "[email protected]",
"country": "NG",
"created_at": "2024-04-27T11:34:46Z",
"last_seen_at": "2026-03-09T18:39:31Z",
"is_active": true
},
{
"id": "018cc252-8488-76b2-9271-dabf0da27b4f",
"first_name": "Bonnie",
"last_name": "Cook",
"email": "[email protected]",
"country": "AT",
"created_at": "2024-01-13T17:42:35Z",
"last_seen_at": null,
"is_active": true
},
{
"id": "018cc252-8870-70d0-ab33-72cd838e6603",
"first_name": "Diane",
"last_name": "Wells",
"email": "[email protected]",
"country": "NZ",
"created_at": "2024-05-02T11:22:23Z",
"last_seen_at": null,
"is_active": true
},
{
"id": "018cc252-8c58-725c-980d-f206b971497b",
"first_name": "Gloria",
"last_name": "Woods",
"email": "[email protected]",
"country": "IT",
"created_at": "2025-06-27T01:56:54Z",
"last_seen_at": "2025-09-04T17:13:00Z",
"is_active": true
},
{
"id": "018cc252-9040-786d-90d1-5c9bae512dbf",
"first_name": "Alan",
"last_name": "Rodriguez",
"email": "[email protected]",
"country": "DK",
"created_at": "2026-03-29T17:48:08Z",
"last_seen_at": null,
"is_active": true
},
{
"id": "018cc252-9428-7b58-8dde-508b603b97d8",
"first_name": "Leonard",
"last_name": "Jones",
"email": "[email protected]",
"country": "MX",
"created_at": "2026-02-06T22:38:18Z",
"last_seen_at": "2026-04-27T00:46:32Z",
"is_active": true
},
{
"id": "018cc252-9810-7c69-8024-23852691d72c",
"first_name": "Maria",
"last_name": "Davis",
"email": "[email protected]",
"country": "JP",
"created_at": "2025-03-30T14:01:05Z",
"last_seen_at": "2025-04-24T10:25:01Z",
"is_active": true
},
{
"id": "018cc252-9bf8-7e3a-a37a-06b1a661a0dc",
"first_name": "Carl",
"last_name": "Duncan",
"email": "[email protected]",
"country": "KE",
"created_at": "2026-03-30T06:02:52Z",
"last_seen_at": "2026-05-16T00:15:55Z",
"is_active": false
},
{
"id": "018cc252-9fe0-7a01-8a38-5d3e36f9eca3",
"first_name": "Phillip",
"last_name": "Harrison",
"email": "[email protected]",
"country": "DK",
"created_at": "2024-07-12T01:56:26Z",
"last_seen_at": "2026-05-28T21:32:17Z",
"is_active": true
},
{
"id": "018cc252-a3c8-7977-a212-1c82b978ccbe",
"first_name": "Kim",
"last_name": "Franklin",
"email": "[email protected]",
"country": "KE",
"created_at": "2024-09-23T15:16:03Z",
"last_seen_at": "2025-08-20T03:29:07Z",
"is_active": true
},
{
"id": "018cc252-a7b0-78f6-bb2a-d194bc638e71",
"first_name": "Patrick",
"last_name": "Coleman",
"email": "[email protected]",
"country": "ID",
"created_at": "2025-01-06T09:04:26Z",
"last_seen_at": "2025-07-21T22:36:07Z",
"is_active": true
},
{
"id": "018cc252-ab98-7b5b-8f5c-8b6a21b71208",
"first_name": "Harry",
"last_name": "Martin",
"email": "[email protected]",
"country": "ES",
"created_at": "2026-02-21T17:42:10Z",
"last_seen_at": "2026-05-16T20:52:12Z",
"is_active": true
},
{
"id": "018cc252-af80-7504-8719-59c6e3efd9c3",
"first_name": "Carlos",
"last_name": "Gibson",
"email": "[email protected]",
"country": "ZA",
"created_at": "2024-01-14T06:39:34Z",
"last_seen_at": null,
"is_active": true
},
{
"id": "018cc252-b368-7525-9a9c-a09c2f8c2c8b",
"first_name": "Jean",
"last_name": "Morales",
"email": "[email protected]",
"country": "CA",
"created_at": "2025-06-05T13:13:54Z",
"last_seen_at": "2025-07-18T07:30:36Z",
"is_active": true
},
{
"id": "018cc252-b750-76bd-81cc-42435c3231bd",
"first_name": "Ernest",
"last_name": "Cooper",
"email": "[email protected]",
"country": "FR",
"created_at": "2026-06-30T05:15:30Z",
"last_seen_at": "2026-06-30T22:07:31Z",
"is_active": true
},
{
"id": "018cc252-bb38-7a65-8fdd-29417173ce08",
"first_name": "John",
"last_name": "Wallace",
"email": "[email protected]",
"country": "GR",
"created_at": "2024-01-01T11:53:11Z",
"last_seen_at": "2025-05-13T01:10:51Z",
"is_active": false
},
{
"id": "018cc252-bf20-7253-a075-e01c6d997ffd",
"first_name": "Lee",
"last_name": "Brooks",
"email": "[email protected]",
"country": "AU",
"created_at": "2024-03-20T07:03:24Z",
"last_seen_at": "2025-04-29T10:30:14Z",
"is_active": true
},
{
"id": "018cc252-c308-7709-a61e-916f4cb44f86",
"first_name": "Antonio",
"last_name": "Evans",
"email": "[email protected]",
"country": "JP",
"created_at": "2025-09-17T01:49:49Z",
"last_seen_at": "2026-04-27T19:54:08Z",
"is_active": true
},
{
"id": "018cc252-c6f0-7095-be95-c60913b0062d",
"first_name": "Jose",
"last_name": "Porter",
"email": "[email protected]",
"country": "ZA",
"created_at": "2024-06-01T00:33:54Z",
"last_seen_at": "2024-09-30T08:59:58Z",
"is_active": false
},
{
"id": "018cc252-cad8-7565-b5d8-117f4a6fb217",
"first_name": "Eric",
"last_name": "Ward",
"email": "[email protected]",
"country": "TR",
"created_at": "2024-03-06T08:01:45Z",
"last_seen_at": "2024-10-07T12:38:03Z",
"is_active": true
},
{
"id": "018cc252-cec0-79ae-adaa-96058dd4aabe",
"first_name": "Marjorie",
"last_name": "Cox",
"email": "[email protected]",
"country": "NG",
"created_at": "2026-06-08T11:01:04Z",
"last_seen_at": "2026-06-20T16:41:37Z",
"is_active": true
},
{
"id": "018cc252-d2a8-7d31-bab8-63bfaa7342bd",
"first_name": "Bryan",
"last_name": "Pena",
"email": "[email protected]",
"country": "IT",
"created_at": "2024-01-06T14:25:41Z",
"last_seen_at": null,
"is_active": true
},
{
"id": "018cc252-d690-7e1b-a275-f48a8c1ccbf6",
"first_name": "Catherine",
"last_name": "Munoz",
"email": "[email protected]",
"country": "AU",
"created_at": "2026-05-30T07:29:25Z",
"last_seen_at": "2026-06-23T08:23:39Z",
"is_active": true
},
{
"id": "018cc252-da78-7c22-9180-f137d46ec702",
"first_name": "Joyce",
"last_name": "Jordan",
"email": "[email protected]",
"country": "TR",
"created_at": "2025-01-13T19:52:26Z",
"last_seen_at": null,
"is_active": true
},
{
"id": "018cc252-de60-7bc5-907f-8eebca9226bf",
"first_name": "Jennifer",
"last_name": "Riley",
"email": "[email protected]",
"country": "AT",
"created_at": "2026-02-21T06:27:48Z",
"last_seen_at": "2026-04-30T10:23:57Z",
"is_active": true
},
{
"id": "018cc252-e248-7464-86b7-54ee11fc6051",
"first_name": "Amanda",
"last_name": "Daniels",
"email": "[email protected]",
"country": "IL",
"created_at": "2025-04-29T02:18:30Z",
"last_seen_at": "2026-04-17T18:37:07Z",
"is_active": false
},
{
"id": "018cc252-e630-7bf3-ab8d-a72175e7c3fb",
"first_name": "Laura",
"last_name": "Alvarado",
"email": "[email protected]",
"country": "PT",
"created_at": "2024-08-26T17:26:51Z",
"last_seen_at": "2025-09-16T12:46:07Z",
"is_active": true
},
{
"id": "018cc252-ea18-74fb-955a-5d6d42ed1760",
"first_name": "Andrea",
"last_name": "Turner",
"email": "[email protected]",
"country": "CA",
"created_at": "2024-07-13T08:04:19Z",
"last_seen_at": "2025-01-08T17:24:13Z",
"is_active": true
},
{
"id": "018cc252-ee00-7216-953a-2094b3402b1e",
"first_name": "Margaret",
"last_name": "Jackson",
"email": "[email protected]",
"country": "NZ",
"created_at": "2025-07-14T00:05:54Z",
"last_seen_at": "2026-05-05T09:44:04Z",
"is_active": true
},
{
"id": "018cc252-f1e8-7262-91aa-5818265220ca",
"first_name": "Rose",
"last_name": "Johnson",
"email": "[email protected]",
"country": "KR",
"created_at": "2024-07-18T02:49:21Z",
"last_seen_at": "2025-04-18T08:52:53Z",
"is_active": true
},
{
"id": "018cc252-f5d0-72f1-ba49-a52514f881dd",
"first_name": "Fred",
"last_name": "George",
"email": "[email protected]",
"country": "PL",
"created_at": "2025-10-26T23:11:53Z",
"last_seen_at": "2025-11-05T21:15:27Z",
"is_active": true
},
{
"id": "018cc252-f9b8-7173-b05d-540124a4fc47",
"first_name": "Sara",
"last_name": "Greene",
"email": "[email protected]",
"country": "PT",
"created_at": "2026-04-26T10:11:22Z",
"last_seen_at": "2026-05-07T04:01:08Z",
"is_active": true
},
{
"id": "018cc252-fda0-7ed5-a24a-3f179c69fc3c",
"first_name": "Jesse",
"last_name": "Bennett",
"email": "[email protected]",
"country": "SG",
"created_at": "2025-10-08T16:19:51Z",
"last_seen_at": "2026-03-04T05:50:50Z",
"is_active": true
},
{
"id": "018cc253-0188-74dd-a728-ed228fc827ac",
"first_name": "Louise",
"last_name": "Santos",
"email": "[email protected]",
"country": "FI",
"created_at": "2026-05-29T18:38:35Z",
"last_seen_at": "2026-06-01T15:33:29Z",
"is_active": true
},
{
"id": "018cc253-0570-7408-b582-07fbebeacbbf",
"first_name": "Scott",
"last_name": "Grant",
"email": "[email protected]",
"country": "NZ",
"created_at": "2024-02-11T17:35:11Z",
"last_seen_at": "2025-08-06T23:23:49Z",
"is_active": true
},
{
"id": "018cc253-0958-7c12-b38e-edc7af958916",
"first_name": "Judy",
"last_nEs werden die ersten 20000 von 28086 Zeichen angezeigt. Kopieren und Herunterladen nehmen alles.
Post geht an example.com, Telefonnummern in den Block 555-0100, Adressen in die Dokumentationsnetze und Kartennummern auf veröffentlichte Test-BINs — jeder Standardwert hier stammt aus einem Bereich, den eine Norm reserviert, sodass nichts Erzeugtes einer realen Person gehören kann.
Daten, die Ihre Validatoren bestehen
Der übliche Vorwurf an generierte Testdaten lautet nicht, dass sie unecht aussehen. Sondern dass sie scheitern. Eine Kartennummer, die keine Zahlungsbibliothek annimmt; eine IBAN, die ein Bankformular ablehnt; eine ISBN, die ein Barcodeleser nicht liest; eine UUID, deren Versionsstelle einfach das ist, was die Zufallsbytes gerade waren. Am Ende bessert man das Fixture von Hand nach, und in diesem Moment hat der Generator mehr gekostet als gespart.
Jeder Wert hier, für den eine veröffentlichte Norm eine Prüfung definiert, trägt die richtige Prüfung. Das ist wenig Rechnerei, und es ändert, wozu die Daten taugen: Sie können Ihre echte Validierung darauf richten.
- Kartennummern tragen die Luhn-Prüfziffer nach ISO/IEC 7812-1, berechnet über die vorangehenden Ziffern, und sitzen auf der veröffentlichten Test-BIN der gewählten Kartenmarke.
- IBANs erfüllen ISO 7064 mod-97 — die Prüfziffern werden so gewählt, dass die umgestellte und in Buchstaben ausgeschriebene Zahl den Rest 1 lässt — und haben genau die Länge, die dieses Land registriert, was mod-97 allein nicht bemerken würde.
- ISBN-13- und EAN-13-Werte tragen die Prüfziffer mit den abwechselnden Gewichten 1 und 3, unter einem der beiden GS1-Präfixe, die dem ISBN-System zugewiesen sind.
- UUIDs tragen das Versions-Nibble und die beiden Variantenbits, die RFC 9562 verlangt, sodass ein Parser v4 oder v7 meldet statt mit den Schultern zu zucken.
- Adressen, Zeitstempel, semantische Versionen und Währungscodes stehen in der Form, die ihre Norm definiert, nicht in einer Annäherung daran.
Nichts davon macht die Daten wahr. Es macht sie wohlgeformt, und das ist die einzige Eigenschaft, die ein Fixture ehrlich für sich beanspruchen kann.
Der Seed, und warum alles daran hängt
Ein Generator, der jedes Mal andere Zeilen liefert, ist Spielzeug. Sobald die Daten in einen Test, eine Demo oder einen Screenshot geraten, müssen Sie sie zurückholen können: nach einem Neuladen, auf dem Rechner einer Kollegin, in der CI in einem Jahr.
Deshalb hat der Zufall hier einen Seed. Der Seed ist eine Zeichenkette, die Sie wählen, und derselbe Seed mit demselben Schema und derselben Zeilenzahl erzeugt überall byteweise identische Ausgabe. Der Generator ist xoshiro128**, über splitmix64 initialisiert; beides sind veröffentlichte Algorithmen mit Referenzimplementierungen, und diese Seite wird gegen Ausgaben geprüft, die aus diesen Referenzen übertragen wurden, nicht gegen sich selbst.
seed "orders-2026" same rows, every time, everywhere seed "orders-2027" a completely different set field stream = hash(seed, field name) row N of a field depends on nothing but the seed, the name and N
Die letzte Zeile lohnt zweimaliges Lesen, denn sie macht das Werkzeug brauchbar und nicht bloß reproduzierbar. Jedes Feld zieht aus einem eigenen Strom, der an seinen Namen gebunden ist. Fügen Sie eine Spalte hinzu, und alle vorhandenen Spalten kommen unverändert heraus. Erhöhen Sie die Zeilenzahl von hundert auf tausend, und die ersten hundert sind die, die Sie schon hatten. Ein gestern eingechecktes Fixture passt auch, nachdem Sie das Schema heute erweitert haben.
Der ehrliche Preis der Bindung an den Namen ist, dass ein Umbenennen die Daten des Feldes ersetzt, denn der Name ist die Hälfte des Seeds. Der Anteil leerer Werte ist die einzige bewusst ausgenommene Einstellung: Die Entscheidung, einen Wert zu leeren, fällt nach dem Ziehen des Wertes, sodass das Einschalten leerer Werte einige Zeilen entfernt, ohne die übrigen zu verschieben.
Eine Warnung folgt daraus unmittelbar. Ein Generator mit Seed ist konstruktionsbedingt vorhersagbar, und das ist der Zweck. Nichts, was er erzeugt, darf jemals als Passwort, Token oder Schlüssel dienen. Nehmen Sie dafür einen Generator, der aus der kryptografischen Quelle der Plattform zieht.
Bereiche, die reserviert sind, damit Ihre Daten nicht echt sein können
Ein Generator, der Adressen auf einer echten Maildomain ausgibt, drückt Ihnen eine geladene Waffe in die Hand. Testsuiten verschicken Post. Staging-Umgebungen zeigen irgendwann auf den Produktions-SMTP. Lasttests hämmern auf die IP-Adresse, die im Fixture steht. Wenn der Wert jemandem gehört, erreicht ihn der Unfall.
Die Normungsgremien haben das vorhergesehen und Bereiche beiseitegelegt, die garantiert nie vergeben werden. Jeder Standardwert hier zieht aus einem davon:
- Post landet auf example.com, example.net und example.org, die RFC 2606 dauerhaft reserviert, dazu die Top-Level-Domains .test, .example und .invalid, die RFC 6761 hinzufügt.
- Telefonnummern nutzen 555-0100 bis 555-0199, den Block, den die nordamerikanische Nummerierung für Fiktion reserviert — weshalb Filme ihn verwenden.
- IPv4-Adressen kommen aus 192.0.2.0/24, 198.51.100.0/24 und 203.0.113.0/24, den drei Dokumentationsnetzen aus RFC 5737, und IPv6 aus 2001:db8::/32 gemäß RFC 3849.
- MAC-Adressen setzen das Bit für lokale Verwaltung, das die IEEE garantiert nie vergibt; der Dokumentationsblock aus RFC 7042 steht ebenfalls zur Wahl, umfasst aber nur 256 Adressen.
- Kartennummern werden auf den vier veröffentlichten Test-BINs aufgebaut und nicht auf einem aktiven Ausgabebereich, sodass eine nach Luhn gültige Nummer nicht mit einer echten Karte zusammenfallen kann.
Jedes davon lässt sich überschreiben, wenn Sie einen Grund haben: eine eigene Domain für eine Staging-Umgebung, ein CIDR-Block, der zu Ihrem Netz passt. Der Standardwert ist die sichere Antwort, und das Überschreiben bleibt Ihre bewusste Entscheidung.
Namen und Orte stammen aus den veröffentlichten Namensverteilungen des US Census Bureau und seiner Liste eingetragener Gemeinden. Es sind gängige englischsprachige Namen, das heißt ein erzeugter Name kann mit dem einer realen Person zusammenfallen — wie jeder Name das kann. Behandeln Sie die Ausgabe als das, was sie ist: plausible Zeichenketten, keine Menschen.
Felder, die aufeinander verweisen
Unabhängige Spalten erzeugen Zeilen, die beim Hinsehen auseinanderfallen. Eine Nutzerin namens Dana Levy, deren E-Mail-Adresse nichts mit ihrem Namen zu tun hat, wirkt auf einem Screenshot kaputt, und ein Änderungszeitpunkt vor dem Erstellungszeitpunkt lässt eine echte Zusicherung scheitern.
Statt eines Sonderfalls je Paar gibt es einen einzigen Mechanismus: Jede Einstellung, die als verweisfähig gekennzeichnet ist, darf ein anderes Feld in doppelten geschweiften Klammern nennen, und es wird aus derselben Zeile gefüllt. Die Felder werden dann in Abhängigkeitsreihenfolge erzeugt und nicht in der aufgelisteten, und ein Kreis von Verweisen wird als Schemafehler gemeldet, statt hängen zu bleiben.
Das reicht weiter als E-Mail-Adressen. Ein Vorlagenfeld baut aus anderen Spalten jede gewünschte Zeichenkette, mit optionaler Umwandlung der Schreibweise. Die Unter- oder Obergrenze eines Datumsfeldes darf ein anderes Datumsfeld nennen, und so entsteht eine Zeitachse, die zusammenpasst. Und wenn ein referenzierter Wert leer ist, ist auch das abhängige Feld leer, statt stillschweigend auf ein Standardfenster zurückzufallen, das im Schema nie erwähnt wurde.
Herausbekommen: JSON, NDJSON, CSV, SQL
JSON ist das Naheliegende und kommt eingerückt oder in einer Zeile. NDJSON — ein kompaktes Objekt pro Zeile — erwarten Log-Pipelines und Streaming-Importer, und es ist das Format, das man in ein Werkzeug einfügt, das je einen Datensatz liest.
CSV folgt RFC 4180: Felder werden nur in Anführungszeichen gesetzt, wenn sie ein Komma, ein Anführungszeichen oder einen Zeilenumbruch enthalten, ein enthaltenes Anführungszeichen wird verdoppelt, und Zeilen enden mit CRLF. Auf diese Form haben sich Tabellenkalkulationen und Datenbank-Massenlader geeinigt.
Bei SQL werden Generatoren gewöhnlich nachlässig, weil die richtige Antwort vom Dialekt abhängt. Die Zitierung von Bezeichnern unterscheidet sich — PostgreSQL und SQLite nehmen doppelte Anführungszeichen, MySQL nimmt Backticks, SQL Server nimmt eckige Klammern — und jeder verdoppelt innerhalb eines Namens sein eigenes Zeichen. Zeichenkettenliterale verdoppeln überall das einfache Anführungszeichen, doch MySQL liest zusätzlich den Backslash als Escape, sofern NO_BACKSLASH_ESCAPES nicht gesetzt ist, sodass ein auf Backslash endender Windows-Pfad sonst das schließende Anführungszeichen verschlucken würde. Boolesche Werte sind die dritte Trennlinie: PostgreSQL hat einen echten booleschen Typ, die anderen wollen 1 und 0. Und SQL Server lehnt einen Tabellenwertkonstruktor mit mehr als tausend Zeilen ab, sodass ein großer Export als mehrere Anweisungen statt einer scheiternden ausgegeben wird.
PostgreSQL INSERT INTO "records" ("id", "ok") VALUES (1, TRUE);
MySQL INSERT INTO `records` (`id`, `ok`) VALUES (1, 1);
SQLite INSERT INTO "records" ("id", "ok") VALUES (1, 1);
SQL Server INSERT INTO [records] ([id], [ok]) VALUES (1, 1);Das Schema ist eine Datei
Der Bereich neben dem Baukasten ist dasselbe Schema als JSON, und er arbeitet in beide Richtungen: Bearbeiten Sie die Felder, und er aktualisiert sich; fügen Sie ein Schema ein, und der Baukasten folgt. Auf Standard belassene Optionen werden weggelassen, sodass Sie Ihre Entscheidungen zurücklesen und nicht jeden Regler, den das Werkzeug besitzt.
Diese Datei bildet zusammen mit dem darin enthaltenen Seed die vollständige reproduzierbare Einheit. Legen Sie sie neben den Test, der die Daten verbraucht, und das Fixture wird zu etwas, das eine Prüferin lesen und eine Kollegin neu erzeugen kann, statt zu einem großen Block von Werten, den niemand erklären kann.
Häufig gestellte Fragen
- Sind die Kreditkartennummern echt?
- Sie sind gültig und nicht echt. Jede trägt eine korrekte Luhn-Prüfziffer, sodass eine Zahlungsbibliothek ihr Format annimmt, und jede baut auf einer der vier veröffentlichten Test-BINs auf statt auf einem aktiven Ausgabebereich, sodass sie nicht mit einer Karte zusammenfallen kann, die jemand besitzt. Sie autorisieren nirgends eine Zahlung.
- Gibt mir derselbe Seed nächstes Jahr wirklich dieselben Daten?
- Ja. Der Generator ist ein veröffentlichter Algorithmus mit fester Referenzimplementierung, keine Browser-Schnittstelle, deren Verhalten sich ändern kann, und diese Seite wird gegen aus dieser Referenz übertragene Ausgaben geprüft. Nichts liest die Uhr: Datumsbereiche sind wörtliche Werte im Schema. Bewahren Sie das Schema-JSON samt Seed auf, und die Zeilen kommen exakt zurück.
- Warum hat das Hinzufügen einer Spalte sonst nichts verändert?
- Weil jedes Feld aus einem eigenen Strom zieht, der an Seed und Feldnamen gebunden ist. Das ist Absicht: Ein Fixture, das sich bei jeder Erweiterung des Schemas neu mischt, lässt sich nicht in einem Repository halten. Dieselbe Eigenschaft sorgt dafür, dass eine höhere Zeilenzahl die bisherigen Zeilen unberührt lässt.
- Ich habe ein Feld umbenannt und seine Daten haben sich geändert.
- Das folgt aus derselben Konstruktion — der Feldname ist die Hälfte seines Stromschlüssels. Wenn Sie die Werte behalten wollen, benennen Sie die Spalte weiter hinten in der Kette um oder akzeptieren Sie die neue Ziehung. Stabilität gegen Umbenennen und gegen Umsortieren zugleich gibt es nicht ohne eine verborgene Kennung, die die Schemadatei dann mitführen müsste.
- Kann ich damit ein Passwort oder einen API-Schlüssel erzeugen?
- Nein. Alles hier stammt aus einem pseudozufälligen Generator mit Seed, der konstruktionsbedingt vorhersagbar ist — genau deshalb ist die Ausgabe reproduzierbar. Ein Geheimnis muss aus der kryptografischen Quelle der Plattform kommen. Nehmen Sie dafür einen eigenen Token-Generator.
- Wie bringe ich die E-Mail-Adresse mit dem Namen in Einklang?
- Fügen Sie ein Vorlagenfeld hinzu und schreiben Sie die anderen Spalten in doppelten geschweiften Klammern — etwa {{first_name}}.{{last_name}}@example.com — und stellen Sie die Schreibweise auf Kleinbuchstaben. Felder werden in Abhängigkeitsreihenfolge erzeugt, die Vorlage darf also eine Spalte nennen, die in der Liste nach ihr steht.
- Wie viele Zeilen kann es erzeugen?
- Zehntausend, über bis zu vierzig Felder. Die Erzeugung ist bei dieser Größe schnell genug, um im Hauptthread zu bleiben; unangenehm wird tatsächlich der entstehende Text, weshalb der Bereich eine gekürzte Vorschau zeigt, während Kopieren und Herunterladen alles nehmen.
- Verlässt irgendetwas davon meinen Browser?
- Nein. Der Generator, der Namensbestand und alle Ausgabeformate laufen als JavaScript auf der Seite. Es gibt keinen Serveraufruf, und nichts, was Sie ins Schema tippen, wird irgendwohin gesendet.