Generator data tiruan
Hasilkan data tiruan yang lolos validasi: kartu Luhn, IBAN mod-97, UUID asli. Ber-seed dan dapat diulang: JSON, CSV, NDJSON, atau 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_nMenampilkan 20000 karakter pertama dari 28086. Salin dan unduh mengambil seluruhnya.
Surel menuju example.com, telepon ke blok 555-0100, alamat ke jaringan dokumentasi, dan nomor kartu ke BIN uji yang dipublikasikan — setiap nilai bawaan di sini adalah rentang yang disisihkan sebuah standar, sehingga tidak ada yang dihasilkan bisa menjadi milik orang sungguhan.
Data yang lolos validator Anda
Keluhan biasa tentang data uji yang dihasilkan bukanlah bahwa data itu terlihat palsu, melainkan bahwa ia gugur. Nomor kartu yang tidak akan diterima pustaka pembayaran mana pun, IBAN yang ditolak formulir bank, ISBN yang tidak terbaca pembaca kode batang, UUID yang angka versinya sekadar kebetulan dari bita acak. Akhirnya fixture disunting dengan tangan, dan pada titik itu generatornya memakan biaya lebih besar daripada yang dihematnya.
Setiap nilai di sini yang standarnya menetapkan pemeriksaan membawa pemeriksaan yang benar. Itu hitungan yang kecil, tetapi mengubah kegunaan datanya: Anda bisa mengarahkan validasi sungguhan Anda ke sana.
- Nomor kartu membawa digit periksa Luhn dari ISO/IEC 7812-1, dihitung dari digit yang mendahuluinya, dan berdiri di atas BIN uji yang dipublikasikan untuk merek yang Anda pilih.
- IBAN memenuhi ISO 7064 mod-97 — digit periksanya dipilih agar angka yang disusun ulang dan hurufnya diuraikan menyisakan sisa 1 — dan panjangnya persis seperti yang didaftarkan negara itu, hal yang tidak akan tertangkap oleh mod-97 saja.
- Nilai ISBN-13 dan EAN-13 membawa digit periksa dengan bobot berselang-seling 1 dan 3, di bawah salah satu dari dua awalan GS1 yang diberikan kepada sistem ISBN.
- UUID membawa nibble versi dan dua bit varian yang diminta RFC 9562, sehingga pengurai menyebut v4 atau v7 alih-alih angkat bahu.
- Alamat, cap waktu, versi semantik, dan kode mata uang ditulis dalam bentuk yang ditetapkan standarnya, bukan pendekatannya.
Tidak satu pun dari itu membuat datanya benar. Itu membuatnya berbentuk sah, dan itulah satu-satunya sifat yang bisa diklaim sebuah fixture dengan jujur.
Seed, dan mengapa justru itu intinya
Generator yang memberi baris berbeda setiap kali adalah mainan. Begitu data masuk ke sebuah uji, demonstrasi, atau tangkapan layar, Anda perlu bisa mendapatkannya kembali: setelah memuat ulang, di mesin rekan kerja, di integrasi berkelanjutan setahun lagi.
Karena itu keacakan di sini ber-seed. Seed adalah teks yang Anda pilih, dan seed yang sama dengan skema dan jumlah baris yang sama menghasilkan keluaran identik bita demi bita di mana pun. Generatornya adalah xoshiro128** yang di-seed lewat splitmix64; keduanya algoritma yang dipublikasikan dengan implementasi rujukan, dan halaman ini diuji terhadap keluaran yang disalin dari rujukan itu, bukan terhadap dirinya sendiri.
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
Baris terakhir itu layak dibaca dua kali, sebab itulah yang membuat alat ini terpakai dan bukan sekadar dapat diulang. Setiap ruas menarik dari aliran acaknya sendiri, terikat pada namanya. Tambahkan satu kolom dan semua kolom yang ada keluar identik. Naikkan barisnya dari seratus ke seribu dan seratus baris pertama adalah baris yang sudah Anda miliki. Fixture yang Anda simpan kemarin tetap cocok setelah skema diperluas hari ini.
Harga jujur dari pengikatan ke nama adalah bahwa mengganti nama ruas akan mengganti datanya, karena nama itu separuh dari seed. Proporsi nilai kosong adalah satu-satunya setelan yang sengaja dikecualikan: keputusan mengosongkan sebuah nilai diambil setelah nilainya ditarik, sehingga menyalakan nilai kosong menghapus sebagian baris tanpa menggeser sisanya.
Satu peringatan mengikuti langsung dari semua ini. Generator ber-seed dapat diramalkan menurut rancangannya, dan justru itu keunggulannya. Tidak satu pun hasilnya boleh dipakai sebagai kata sandi, token, atau kunci. Untuk itu pakailah generator yang menarik dari sumber kriptografis platform.
Rentang yang disisihkan agar data Anda tak mungkin nyata
Generator yang mengeluarkan alamat di domain surel sungguhan menyodorkan senjata bermuatan kepada Anda. Rangkaian uji mengirim surel. Lingkungan staging kadang diarahkan ke SMTP produksi. Uji beban menghantam alamat IP yang tertulis di fixture. Ketika nilainya milik seseorang, kecelakaannya sampai kepadanya.
Badan standar sudah menduga hal ini dan menyisihkan rentang yang dijamin tidak akan pernah dialokasikan. Setiap nilai bawaan di sini menarik dari salah satunya:
- Surel mendarat di example.com, example.net, dan example.org, yang disisihkan RFC 2606 secara permanen, beserta domain tingkat atas .test, .example, dan .invalid yang ditambahkan RFC 6761.
- Nomor telepon memakai 555-0100 sampai 555-0199, blok yang disisihkan penomoran Amerika Utara untuk fiksi — itulah sebabnya film memakainya.
- Alamat IPv4 datang dari 192.0.2.0/24, 198.51.100.0/24, dan 203.0.113.0/24, tiga jaringan dokumentasi RFC 5737, dan IPv6 dari 2001:db8::/32 menurut RFC 3849.
- Alamat MAC menyalakan bit pengelolaan lokal, yang dijamin IEEE tidak akan pernah dialokasikan; blok dokumentasi RFC 7042 juga tersedia, meski hanya memuat 256 alamat.
- Nomor kartu dibangun di atas empat BIN uji yang dipublikasikan, bukan rentang penerbitan aktif, sehingga nomor yang sah menurut Luhn tidak mungkin berimpit dengan kartu sungguhan.
Masing-masing bisa ditimpa bila Anda punya alasan: domain sendiri untuk lingkungan staging, blok CIDR yang cocok dengan jaringan Anda. Nilai bawaannya adalah jawaban yang aman, dan penimpaannya tetap menjadi keputusan sadar Anda.
Nama dan tempat diambil dari distribusi nama yang dipublikasikan Biro Sensus Amerika Serikat dan dari daftar kota berbadan hukumnya. Ini nama-nama Inggris yang umum, artinya nama yang dihasilkan bisa saja berimpit dengan nama orang sungguhan — sebagaimana nama apa pun bisa. Perlakukan keluarannya sebagaimana adanya: untaian teks yang masuk akal, bukan orang.
Ruas yang saling merujuk
Kolom yang saling lepas menghasilkan baris yang runtuh begitu diperiksa. Pengguna bernama Dana Levy yang alamat surelnya tak berkaitan dengan namanya tampak rusak dalam tangkapan layar, dan cap waktu pembaruan yang mendahului cap waktu pembuatan akan menggugurkan asersi sungguhan.
Alih-alih kasus khusus untuk tiap pasangan, hanya ada satu mekanisme: setiap setelan yang ditandai menerima rujukan boleh menyebut nama ruas lain di dalam kurung kurawal ganda, dan nilainya diisi dari baris yang sama. Ruas lalu dihasilkan menurut urutan ketergantungan, bukan urutan yang Anda daftarkan, dan lingkaran rujukan dilaporkan sebagai galat skema alih-alih menggantung.
Ini menjangkau lebih jauh daripada surel. Ruas templat menyusun untaian teks apa pun dari kolom lain, dengan pengubahan huruf yang opsional. Batas bawah atau batas atas ruas tanggal boleh menyebut ruas tanggal lain, dan begitulah garis waktu yang runtut diperoleh. Dan ketika nilai yang dirujuk kosong, ruas yang bergantung padanya juga kosong, alih-alih diam-diam mundur ke jendela bawaan yang tak pernah disebut skema.
Mengeluarkannya: JSON, NDJSON, CSV, SQL
JSON adalah pilihan yang jelas dan keluar berindentasi atau dalam satu baris. NDJSON — satu objek ringkas per baris — adalah yang diharapkan jalur pipa log dan pengimpor aliran, dan itulah format yang ditempel ke alat yang membaca satu rekaman setiap kali.
CSV mengikuti RFC 4180: ruas hanya diapit tanda kutip bila memuat koma, tanda kutip, atau ganti baris; tanda kutip di dalamnya digandakan; dan baris berakhir dengan CRLF. Itulah bentuk yang disepakati lembar sebar dan pemuat massal basis data.
Di SQL-lah para generator biasanya lalai, karena jawaban yang benar bergantung pada dialek. Pengutipan pengenal berbeda-beda — PostgreSQL dan SQLite memakai tanda kutip ganda, MySQL memakai aksen kubur, SQL Server memakai kurung siku — dan masing-masing menggandakan karakter kutipnya sendiri di dalam sebuah nama. Literal teks menggandakan tanda kutip tunggal di mana-mana, tetapi MySQL juga membaca garis miring terbalik sebagai pelolos kecuali NO_BACKSLASH_ESCAPES disetel, sehingga jalur Windows yang berakhir dengan garis miring akan menelan kutip penutupnya. Boolean adalah perbedaan ketiga: PostgreSQL punya tipe boolean sungguhan sedangkan yang lain menginginkan 1 dan 0. Lalu SQL Server menolak konstruktor nilai tabel dengan lebih dari seribu baris, sehingga ekspor besar dikeluarkan sebagai beberapa pernyataan alih-alih satu yang gagal.
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);Skema adalah sebuah berkas
Panel di sebelah penyusun adalah skema yang sama, ditulis sebagai JSON, dan bekerja dua arah: sunting ruasnya dan panel ikut berubah, tempel sebuah skema dan penyusunnya menyesuaikan. Pilihan yang dibiarkan pada nilai bawaan dihilangkan, sehingga yang Anda baca kembali adalah keputusan yang Anda ambil, bukan setiap tombol yang dimiliki alat ini.
Berkas itu, berikut seed di dalamnya, adalah satuan pengulangan yang utuh. Simpan di sebelah uji yang memakai datanya, dan fixture berubah menjadi sesuatu yang bisa dibaca peninjau dan dibangkitkan ulang oleh rekan kerja, bukan gumpalan besar nilai yang tak bisa dijelaskan siapa pun.
Pertanyaan yang sering diajukan
- Apakah nomor kartu kreditnya asli?
- Sah tetapi tidak asli. Masing-masing membawa digit periksa Luhn yang benar, sehingga pustaka pembayaran menerima formatnya, dan masing-masing dibangun di atas salah satu dari empat BIN uji yang dipublikasikan alih-alih rentang penerbitan aktif, sehingga tidak mungkin berimpit dengan kartu milik seseorang. Nomor-nomor itu tidak akan mengotorisasi pembayaran di mana pun.
- Apakah seed yang sama benar-benar memberi data yang sama tahun depan?
- Ya. Generatornya adalah algoritma yang dipublikasikan dengan implementasi rujukan yang tetap, bukan antarmuka peramban yang perilakunya bisa berubah, dan halaman ini diuji terhadap keluaran yang disalin dari rujukan itu. Tidak ada yang membaca jam: rentang tanggal adalah nilai harfiah di dalam skema. Simpan JSON skema dan seed di dalamnya, dan barisnya kembali persis.
- Mengapa menambah kolom tidak mengubah apa pun yang lain?
- Karena setiap ruas menarik dari aliran acaknya sendiri, terikat pada seed dan nama ruas. Ini disengaja: fixture yang teracak ulang setiap kali Anda memperluas skema tidak bisa disimpan di repositori. Sifat yang sama membuat menaikkan jumlah baris membiarkan baris sebelumnya utuh.
- Saya mengganti nama ruas dan datanya berubah.
- Itu mengikuti rancangan yang sama — nama ruas adalah separuh dari kunci aliran acaknya. Kalau ingin mempertahankan nilainya, ganti nama kolomnya di tahap berikutnya, atau terima tarikan yang baru. Tidak ada cara memperoleh sekaligus kestabilan terhadap penggantian nama dan terhadap penyusunan ulang tanpa pengenal tersembunyi yang lalu harus dibawa-bawa oleh berkas skemanya.
- Bisakah saya membuat kata sandi atau kunci API dengan ini?
- Tidak. Semua di sini berasal dari generator pseudoacak ber-seed, yang dapat diramalkan menurut rancangannya, dan justru itulah sebabnya keluarannya dapat diulang. Sebuah rahasia harus datang dari sumber kriptografis platform. Pakailah generator token khusus untuk itu.
- Bagaimana membuat surel cocok dengan namanya?
- Tambahkan ruas templat dan tulis nama kolom lain di dalam kurung kurawal ganda — misalnya {{first_name}}.{{last_name}}@example.com — lalu setel pengubahan huruf ke huruf kecil. Ruas dihasilkan menurut urutan ketergantungan, jadi templat boleh menyebut kolom yang muncul sesudahnya dalam daftar.
- Berapa banyak baris yang bisa dihasilkan?
- Sepuluh ribu, dengan paling banyak empat puluh ruas. Pada ukuran itu pembangkitannya cukup cepat untuk tetap berada di utas utama; yang benar-benar merepotkan justru teksnya, dan karena itu panelnya menampilkan pratinjau terpotong sementara salin dan unduh mengambil seluruhnya.
- Apakah ada yang keluar dari peramban saya?
- Tidak. Generator, kumpulan nama, dan semua format keluaran berjalan sebagai JavaScript di halaman ini. Tidak ada panggilan server, dan tidak ada yang Anda ketikkan di skema dikirim ke mana pun.