목 데이터 생성기
검증을 통과하는 목 데이터를 만듭니다. Luhn 카드번호, mod-97 IBAN, 진짜 UUID. 시드로 재현 가능하며 JSON·CSV·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_n전체 28086자 가운데 앞 20000자를 보여 줍니다. 복사와 내려받기는 전체를 가져갑니다.
메일은 example.com으로, 전화번호는 555-0100 블록으로, 주소는 문서용 네트워크로, 카드번호는 공개된 시험용 BIN으로 갑니다. 여기 기본값은 모두 표준이 예약해 둔 범위이므로, 생성된 값이 실제 사람의 것일 수 없습니다.
검증을 통과하는 데이터
생성된 테스트 데이터에 대한 흔한 불만은 가짜처럼 보인다는 것이 아닙니다. 실패한다는 것입니다. 어떤 결제 라이브러리도 받지 않는 카드번호, 은행 양식이 거부하는 IBAN, 바코드 리더가 읽지 못하는 ISBN, 버전 자리가 그저 무작위 바이트였던 UUID. 결국 픽스처를 손으로 고치게 되고, 그 시점에서 생성기는 아낀 것보다 더 많은 비용을 치르게 합니다.
여기서 공개된 표준이 검사를 정의한 값은 모두 올바른 검사를 갖고 있습니다. 계산량은 크지 않지만 데이터의 쓰임이 달라집니다. 실제로 쓰는 검증을 그대로 겨눌 수 있습니다.
- 카드번호는 ISO/IEC 7812-1의 Luhn 검사 숫자를 앞선 자리들로부터 계산해 갖고 있으며, 고른 브랜드의 공개된 시험용 BIN 위에 놓입니다.
- IBAN은 ISO 7064 mod-97을 만족합니다. 자리를 옮기고 문자를 숫자로 펼친 값의 나머지가 1이 되도록 검사 숫자를 고르기 때문입니다. 게다가 해당 국가가 등록한 정확한 길이를 지키는데, 이는 mod-97만으로는 잡히지 않습니다.
- ISBN-13과 EAN-13 값은 1과 3이 번갈아 붙는 가중치의 검사 숫자를 가지며, ISBN 제도에 배정된 두 GS1 접두사 중 하나 아래에 있습니다.
- UUID에는 RFC 9562가 요구하는 버전 니블과 변형 비트 두 개가 들어 있어, 파서가 어깨를 으쓱하는 대신 v4 또는 v7이라고 알려 줍니다.
- 주소, 타임스탬프, 시맨틱 버전, 통화 코드는 근사치가 아니라 각 표준이 정의한 형태 그대로 쓰입니다.
이 가운데 무엇도 데이터를 사실로 만들지는 않습니다. 형식이 올바르게 만들 뿐이고, 그것이 픽스처가 정직하게 주장할 수 있는 유일한 속성입니다.
시드, 그리고 그것이 핵심인 이유
매번 다른 행을 주는 생성기는 장난감입니다. 데이터가 테스트나 시연이나 스크린샷에 들어가는 순간, 그것을 되찾을 수 있어야 합니다. 새로고침한 뒤에도, 동료의 컴퓨터에서도, 일 년 뒤 CI에서도요.
그래서 여기서의 무작위성은 시드를 씁니다. 시드는 직접 고르는 문자열이고, 같은 시드에 같은 스키마와 같은 행 수라면 어디서든 바이트 단위로 같은 결과가 나옵니다. 생성기는 splitmix64로 씨를 뿌린 xoshiro128**이며, 둘 다 참조 구현이 함께 공개된 알고리즘입니다. 이 페이지는 스스로가 아니라 그 참조 구현에서 옮겨 적은 출력과 대조해 시험합니다.
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
마지막 줄은 두 번 읽을 만합니다. 이 도구를 단지 재현 가능한 정도가 아니라 쓸 만하게 만드는 것이 바로 그 성질이기 때문입니다. 각 필드는 자기 이름에 묶인 전용 흐름에서 값을 뽑습니다. 열을 추가해도 기존 열은 모두 같은 값으로 나옵니다. 행 수를 100에서 1000으로 올려도 앞의 100행은 이미 갖고 있던 그 행들입니다. 어제 커밋한 픽스처는 오늘 스키마를 넓힌 뒤에도 그대로 맞습니다.
이름에 묶는 데 따르는 정직한 대가는, 필드 이름을 바꾸면 그 데이터가 교체된다는 점입니다. 이름이 시드의 절반이기 때문입니다. 빈 값 비율만은 의도적으로 이 규칙에서 빼 두었습니다. 값을 비울지에 대한 판단은 값을 뽑은 뒤에 내리므로, 빈 값을 켜면 일부 행만 비고 나머지는 밀리지 않습니다.
이 모든 것에서 경고 하나가 곧바로 따라 나옵니다. 시드 기반 생성기는 설계상 예측 가능하며, 그것이 바로 장점입니다. 여기서 나온 무엇도 비밀번호나 토큰이나 키로 써서는 안 됩니다. 그런 용도에는 플랫폼의 암호학적 난수원에서 뽑는 생성기를 쓰세요.
실제 값이 될 수 없도록 예약된 범위
실제 메일 도메인의 주소를 내놓는 생성기는 장전된 총을 건네는 것과 같습니다. 테스트는 메일을 보냅니다. 스테이징 환경이 운영 SMTP를 향하기도 합니다. 부하 테스트는 픽스처에 적힌 IP 주소를 두들깁니다. 그 값이 누군가의 것이면 사고는 그 사람에게 닿습니다.
표준화 기구들은 이를 내다보고 결코 배정되지 않도록 보장된 범위를 떼어 두었습니다. 여기 기본값은 모두 그중 하나에서 뽑습니다.
- 메일은 RFC 2606이 영구히 예약한 example.com, example.net, example.org로 갑니다. RFC 6761이 더한 .test, .example, .invalid 최상위 도메인도 마찬가지입니다.
- 전화번호는 555-0100부터 555-0199까지를 씁니다. 북미 번호 체계가 허구를 위해 예약한 블록이고, 영화가 이를 쓰는 이유도 그것입니다.
- IPv4 주소는 RFC 5737의 문서용 네트워크 세 곳인 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24에서, IPv6는 RFC 3849에 따라 2001:db8::/32에서 옵니다.
- MAC 주소는 로컬 관리 비트를 세웁니다. IEEE가 결코 배정하지 않겠다고 보장한 비트입니다. RFC 7042의 문서용 블록도 고를 수 있지만 주소가 256개뿐입니다.
- 카드번호는 운영 중인 발급 대역이 아니라 공개된 시험용 BIN 네 개 위에 만들어지므로, Luhn을 만족하는 번호가 실제 카드와 겹칠 수 없습니다.
이유가 있다면 각각을 덮어쓸 수 있습니다. 스테이징 환경을 위한 자체 도메인이나 사내 네트워크에 맞춘 CIDR 블록 같은 것들이지요. 기본값은 안전한 답이고, 덮어쓰기는 의식적으로 내리는 결정으로 남아 있습니다.
이름과 지명은 미국 인구조사국이 공개한 이름 분포와 법인 자치단체 목록에서 가져왔습니다. 영어권에서 흔한 이름이므로, 생성된 이름이 실제 사람의 이름과 겹칠 수 있습니다. 어떤 이름이든 그렇듯이 말입니다. 출력은 있는 그대로 대하세요. 그럴듯한 문자열이지 사람이 아닙니다.
서로를 참조하는 필드
서로 독립인 열은 한 번만 봐도 무너지는 행을 만듭니다. 이름과 아무 상관 없는 메일 주소를 가진 'Dana Levy'라는 사용자는 스크린샷에서 고장 난 것처럼 보이고, 생성 시각보다 앞선 수정 시각은 실제 단언을 떨어뜨립니다.
짝마다 특수한 처리를 두는 대신 장치는 하나입니다. 참조를 받는다고 표시된 설정은 이중 중괄호 안에 다른 필드 이름을 적을 수 있고, 같은 행의 값이 채워집니다. 그러면 필드는 나열한 순서가 아니라 의존 순서로 생성되고, 참조의 순환은 멈춤이 아니라 스키마 오류로 보고됩니다.
메일보다 멀리 나아갑니다. 템플릿 필드는 다른 열들로 원하는 문자열을 조립하며 필요하면 대소문자도 바꿉니다. 날짜 필드의 하한이나 상한에 다른 날짜 필드를 지정할 수 있어 앞뒤가 맞는 시간축을 얻습니다. 그리고 참조된 값이 비어 있으면 그에 기대는 필드도 비어 있습니다. 스키마가 한 번도 말한 적 없는 기본 구간으로 조용히 되돌아가지 않습니다.
꺼내기: JSON, NDJSON, CSV, SQL
JSON은 당연한 선택이고 들여쓰기를 넣거나 한 줄로 낼 수 있습니다. NDJSON은 한 줄에 압축된 객체 하나로, 로그 파이프라인과 스트리밍 임포터가 기대하는 형식이며 레코드를 하나씩 읽는 도구에 붙여 넣을 형식입니다.
CSV는 RFC 4180을 따릅니다. 쉼표나 따옴표나 줄바꿈이 들어 있을 때만 따옴표로 감싸고, 안쪽 따옴표는 두 번 쓰며, 줄은 CRLF로 끝납니다. 스프레드시트와 데이터베이스 벌크 로더가 합의한 형태가 이것입니다.
생성기들이 대개 소홀해지는 곳이 SQL입니다. 올바른 답이 방언마다 다르기 때문입니다. 식별자 따옴표부터 갈립니다. PostgreSQL과 SQLite는 큰따옴표를, MySQL은 백틱을, SQL Server는 대괄호를 쓰고, 각자 이름 안에서 자기 따옴표 문자를 두 번 씁니다. 문자열 리터럴은 어디서나 작은따옴표를 두 번 쓰지만, MySQL은 NO_BACKSLASH_ESCAPES가 켜져 있지 않으면 역슬래시를 이스케이프로 읽기 때문에 역슬래시로 끝나는 Windows 경로가 닫는 따옴표를 삼켜 버립니다. 세 번째 갈림은 불리언입니다. PostgreSQL에는 진짜 불리언 타입이 있고 나머지는 1과 0을 원합니다. 그리고 SQL Server는 1000행을 넘는 테이블 값 생성자를 거부하므로, 큰 내보내기는 실패하는 한 문장 대신 여러 문장으로 나옵니다.
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);스키마는 파일이다
빌더 옆의 창은 같은 스키마를 JSON으로 적은 것이고 양방향으로 동작합니다. 필드를 고치면 갱신되고, 스키마를 붙여 넣으면 빌더가 따라옵니다. 기본값 그대로인 설정은 빠지므로, 다시 읽는 것은 이 도구가 가진 모든 손잡이가 아니라 당신이 내린 결정입니다.
이 파일과 그 안의 시드가 온전한 재현 단위입니다. 데이터를 쓰는 테스트 옆에 두면, 픽스처는 아무도 설명하지 못하는 커다란 값 덩어리가 아니라 검토자가 읽고 동료가 다시 만들어 낼 수 있는 것이 됩니다.
자주 묻는 질문
- 신용카드 번호가 진짜인가요?
- 유효하지만 진짜는 아닙니다. 하나하나가 올바른 Luhn 검사 숫자를 가지므로 결제 라이브러리가 형식을 받아들이고, 하나하나가 운영 중인 발급 대역이 아니라 공개된 시험용 BIN 네 개 중 하나 위에 만들어졌으므로 누군가가 가진 카드와 겹칠 수 없습니다. 어디에서도 결제를 승인하지 못합니다.
- 같은 시드가 내년에도 정말 같은 데이터를 줄까요?
- 네. 생성기는 동작이 바뀔 수 있는 브라우저 API가 아니라 참조 구현이 고정된 공개 알고리즘이고, 이 페이지는 그 구현에서 옮겨 적은 출력과 대조해 시험합니다. 시계를 읽는 곳은 어디에도 없습니다. 날짜 범위는 스키마 안의 명시적인 값입니다. 스키마 JSON과 그 안의 시드를 보관하면 행이 그대로 돌아옵니다.
- 열을 추가했는데 왜 다른 건 하나도 안 바뀌었나요?
- 각 필드가 시드와 필드 이름에 묶인 자기 흐름에서 값을 뽑기 때문입니다. 의도한 것입니다. 스키마를 넓힐 때마다 뒤섞이는 픽스처는 저장소에 둘 수 없습니다. 같은 성질 덕분에 행 수를 늘려도 앞선 행은 그대로 남습니다.
- 필드 이름을 바꿨더니 데이터가 바뀌었습니다.
- 같은 설계에서 따라 나오는 결과입니다. 필드 이름이 그 흐름 키의 절반이니까요. 값을 유지하고 싶다면 아래쪽 단계에서 열 이름을 바꾸거나 새 추첨을 받아들이세요. 이름 변경에도 순서 변경에도 안정적이려면 스키마 파일이 숨은 식별자를 지니고 다녀야 하고, 그것 없이는 둘을 동시에 얻을 수 없습니다.
- 이걸로 비밀번호나 API 키를 만들 수 있나요?
- 아니요. 여기 있는 모든 값은 시드 기반 의사난수 생성기에서 나오며, 설계상 예측 가능합니다. 바로 그래서 출력이 재현됩니다. 비밀은 플랫폼의 암호학적 난수원에서 와야 합니다. 그런 용도에는 전용 토큰 생성기를 쓰세요.
- 메일 주소를 이름과 맞추려면?
- 템플릿 필드를 추가하고 다른 열 이름을 이중 중괄호로 적으세요. 예를 들어 {{first_name}}.{{last_name}}@example.com 처럼 쓴 다음 대소문자 변환을 소문자로 두면 됩니다. 필드는 의존 순서로 생성되므로 템플릿은 목록에서 자기 뒤에 오는 열을 지정해도 됩니다.
- 몇 행까지 만들 수 있나요?
- 필드 마흔 개까지에서 만 행입니다. 이 정도 규모에서는 생성이 메인 스레드에 남아 있어도 될 만큼 빠르고, 정작 불편해지는 것은 만들어진 텍스트입니다. 그래서 창에는 잘라 낸 미리 보기를 보여 주고 복사와 내려받기는 전체를 가져갑니다.
- 이 가운데 무엇이든 제 브라우저를 벗어나나요?
- 아니요. 생성기도 이름 자료도 모든 출력 형식도 페이지 안의 JavaScript로 동작합니다. 서버 호출은 없고, 스키마에 입력한 어떤 것도 어디로도 전송되지 않습니다.