Générateur de données factices

Générez des données factices qui passent la validation : cartes Luhn, IBAN mod-97, vrais UUID. Avec graine, reproductible. JSON, CSV, NDJSON ou SQL.

Champs8 sur 40
Schéma
Sortie100 lignes · 28086 caractères
[
  {
    "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

Affichage des 20000 premiers caractères sur 28086. La copie et le téléchargement prennent tout.

Le courrier va vers example.com, les téléphones vers le bloc 555-0100, les adresses vers les réseaux de documentation et les cartes vers les BIN de test publiés : chaque valeur par défaut ici est une plage réservée par une norme, de sorte que rien de généré ne peut appartenir à une personne réelle.

Des données qui passent vos validateurs

Le reproche habituel fait aux données de test générées n'est pas qu'elles aient l'air fausses. C'est qu'elles échouent. Un numéro de carte qu'aucune bibliothèque de paiement n'acceptera, un IBAN qu'un formulaire bancaire rejette, un ISBN qu'un lecteur de code-barres ne parvient pas à lire, un UUID dont le chiffre de version est simplement ce que les octets aléatoires se sont trouvés être. On finit par corriger le jeu de données à la main, et à ce moment-là le générateur a coûté plus qu'il n'a fait gagner.

Chaque valeur ici pour laquelle une norme publiée définit un contrôle porte le bon contrôle. C'est peu d'arithmétique, et cela change ce à quoi servent les données : vous pouvez y pointer votre validation réelle.

  • Les numéros de carte portent la clé de contrôle de Luhn de l'ISO/IEC 7812-1, calculée sur les chiffres qui la précèdent, et reposent sur le BIN de test publié du réseau que vous choisissez.
  • Les IBAN satisfont ISO 7064 mod-97 — les clés sont choisies de sorte que le numéro réordonné et aux lettres développées laisse un reste de 1 — et ont exactement la longueur enregistrée par ce pays, ce que le mod-97 seul ne détecterait pas.
  • Les valeurs ISBN-13 et EAN-13 portent la clé de contrôle aux poids alternés 1 et 3, sous l'un des deux préfixes GS1 attribués au système ISBN.
  • Les UUID portent le quartet de version et les deux bits de variante qu'exige la RFC 9562, si bien qu'un analyseur annonce v4 ou v7 au lieu de rester perplexe.
  • Adresses, horodatages, versions sémantiques et codes de devise sont écrits sous la forme que définit leur norme, non sous une approximation.

Rien de tout cela ne rend les données vraies. Cela les rend bien formées, seule propriété qu'un jeu de données de test puisse honnêtement revendiquer.

La graine, et pourquoi tout tient à elle

Un générateur qui donne des lignes différentes à chaque fois est un jouet. Dès que les données entrent dans un test, une démonstration ou une capture d'écran, il faut pouvoir les retrouver : après un rechargement, sur la machine d'un collègue, dans l'intégration continue dans un an.

L'aléa est donc ici semé. La graine est une chaîne que vous choisissez, et la même graine avec le même schéma et le même nombre de lignes produit une sortie identique octet pour octet partout. Le générateur est xoshiro128**, semé par splitmix64 ; ce sont deux algorithmes publiés avec des implémentations de référence, et cette page est testée contre une sortie transcrite depuis ces références et non contre elle-même.

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

Cette dernière ligne mérite deux lectures, car c'est elle qui rend l'outil utilisable et pas seulement reproductible. Chaque champ puise dans son propre flux, lié à son nom. Ajoutez une colonne et toutes les colonnes existantes sortent identiques. Passez de cent à mille lignes et les cent premières sont celles que vous aviez déjà. Un jeu de données figé hier correspond encore après l'élargissement du schéma aujourd'hui.

Le prix honnête de ce lien au nom est que renommer un champ remplace ses données, puisque le nom est la moitié de la graine. La proportion de valeurs vides est le seul réglage volontairement exempté : la décision de vider une valeur est prise après le tirage, si bien qu'activer les vides retire certaines lignes sans décaler les autres.

Un avertissement découle directement de tout cela. Un générateur à graine est prévisible par conception, et c'est la fonctionnalité. Rien de ce qu'il produit ne doit jamais servir de mot de passe, de jeton ou de clé. Pour cela, utilisez un générateur qui puise dans la source cryptographique de la plateforme.

Des plages réservées pour que vos données ne puissent pas être réelles

Un générateur qui produit des adresses sur un vrai domaine de messagerie vous tend une arme chargée. Les suites de tests envoient du courrier. Les environnements de préproduction finissent pointés sur le SMTP de production. Les tests de charge martèlent l'adresse IP inscrite dans le jeu de données. Quand la valeur appartient à quelqu'un, l'accident lui parvient.

Les organismes de normalisation l'ont anticipé et ont mis de côté des plages dont il est garanti qu'elles ne seront jamais attribuées. Chaque valeur par défaut ici y puise :

  • Le courrier atterrit sur example.com, example.net et example.org, que la RFC 2606 réserve à perpétuité, ainsi que sur les domaines de premier niveau .test, .example et .invalid qu'ajoute la RFC 6761.
  • Les numéros de téléphone utilisent 555-0100 à 555-0199, le bloc que la numérotation nord-américaine réserve à la fiction — d'où son emploi au cinéma.
  • Les adresses IPv4 viennent de 192.0.2.0/24, 198.51.100.0/24 et 203.0.113.0/24, les trois réseaux de documentation de la RFC 5737, et les IPv6 de 2001:db8::/32 selon la RFC 3849.
  • Les adresses MAC positionnent le bit d'administration locale, que l'IEEE garantit ne jamais attribuer ; le bloc de documentation de la RFC 7042 est également proposé, bien qu'il ne compte que 256 adresses.
  • Les numéros de carte sont construits sur les quatre BIN de test publiés et non sur une plage d'émission active, si bien qu'un numéro valide au sens de Luhn ne peut coïncider avec une carte réelle.

Chacun peut être remplacé lorsque vous avez une raison : un domaine à vous pour une préproduction, un bloc CIDR correspondant à votre réseau. La valeur par défaut est la réponse sûre, et le remplacement reste une décision délibérée.

Les noms et les lieux proviennent des distributions de noms publiées par le Bureau du recensement des États-Unis et de sa liste de communes constituées. Ce sont des noms anglophones courants, ce qui veut dire qu'un nom généré peut coïncider avec celui d'une personne réelle — comme n'importe quel nom. Traitez la sortie pour ce qu'elle est : des chaînes plausibles, pas des personnes.

Des champs qui se référencent entre eux

Des colonnes indépendantes produisent des lignes qui s'effondrent à l'examen. Une utilisatrice nommée Dana Levy dont l'adresse de courrier n'a aucun rapport avec son nom fait mauvais effet sur une capture d'écran, et un horodatage de mise à jour antérieur à celui de création fera échouer une assertion réelle.

Plutôt qu'un cas particulier par paire, il y a un seul mécanisme : tout réglage marqué comme acceptant des références peut nommer un autre champ entre doubles accolades, et il est rempli depuis la même ligne. Les champs sont alors générés dans l'ordre des dépendances et non dans celui où vous les avez listés, et un cercle de références est signalé comme erreur de schéma au lieu de bloquer.

Cela va plus loin que les adresses de courrier. Un champ gabarit construit n'importe quelle chaîne à partir d'autres colonnes, avec une transformation de casse facultative. La borne inférieure ou supérieure d'un champ de date peut nommer un autre champ de date, et c'est ainsi qu'on obtient une chronologie cohérente. Et lorsqu'une valeur référencée est vide, le champ qui en dépend l'est aussi, plutôt que de revenir en silence à une fenêtre par défaut que le schéma n'a jamais mentionnée.

En sortir : JSON, NDJSON, CSV, SQL

JSON est l'évidence et sort indenté ou sur une seule ligne. NDJSON — un objet compact par ligne — est ce qu'attendent les chaînes de journalisation et les importateurs en flux, et c'est le format à coller dans un outil qui lit un enregistrement à la fois.

Le CSV suit la RFC 4180 : les champs ne sont entourés de guillemets que s'ils contiennent une virgule, un guillemet ou un saut de ligne, un guillemet interne est doublé, et les lignes se terminent par CRLF. C'est la forme sur laquelle s'accordent les tableurs et les chargeurs de bases de données.

C'est en SQL que les générateurs se relâchent d'ordinaire, car la bonne réponse dépend du dialecte. L'échappement des identifiants diffère — PostgreSQL et SQLite prennent des guillemets doubles, MySQL des accents graves, SQL Server des crochets — et chacun double son propre caractère à l'intérieur d'un nom. Les littéraux de chaîne doublent partout l'apostrophe, mais MySQL lit en outre la barre oblique inverse comme échappement sauf si NO_BACKSLASH_ESCAPES est actif, si bien qu'un chemin Windows finissant par une barre avalerait le guillemet fermant. Les booléens sont la troisième divergence : PostgreSQL possède un vrai type booléen et les trois autres veulent 1 et 0. Enfin SQL Server refuse un constructeur de table de plus de mille lignes, si bien qu'un gros export est émis en plusieurs instructions plutôt qu'en une seule qui échoue.

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);

Le schéma est un fichier

Le panneau à côté du constructeur est le même schéma écrit en JSON, et il fonctionne dans les deux sens : modifiez les champs et il se met à jour, collez un schéma et le constructeur suit. Les options laissées à leur valeur par défaut sont omises, si bien que ce que vous relisez, ce sont vos décisions et non tous les boutons que l'outil possède.

Ce fichier, avec la graine qu'il contient, constitue l'unité reproductible complète. Placez-le à côté du test qui consomme les données et le jeu de données devient quelque chose qu'un relecteur peut lire et qu'un collègue peut régénérer, au lieu d'un gros bloc de valeurs que personne ne sait expliquer.

Questions fréquentes

Les numéros de carte bancaire sont-ils réels ?
Ils sont valides et ne sont pas réels. Chacun porte une clé de Luhn correcte, si bien qu'une bibliothèque de paiement en acceptera le format, et chacun repose sur l'un des quatre BIN de test publiés plutôt que sur une plage d'émission active, si bien qu'il ne peut coïncider avec une carte détenue par quelqu'un. Ils n'autoriseront aucun paiement nulle part.
La même graine me donnera-t-elle vraiment les mêmes données l'an prochain ?
Oui. Le générateur est un algorithme publié doté d'une implémentation de référence figée, et non une API de navigateur dont le comportement peut changer, et cette page est testée contre une sortie transcrite depuis cette référence. Rien ne lit l'horloge : les plages de dates sont des valeurs littérales dans le schéma. Conservez le JSON du schéma et la graine qu'il contient et les lignes reviennent à l'identique.
Pourquoi l'ajout d'une colonne n'a-t-il rien changé d'autre ?
Parce que chaque champ puise dans son propre flux, lié à la graine et au nom du champ. C'est délibéré : un jeu de données qui se remélange à chaque élargissement du schéma ne peut pas être conservé dans un dépôt. La même propriété fait qu'augmenter le nombre de lignes laisse intactes les précédentes.
J'ai renommé un champ et ses données ont changé.
Cela découle de la même conception : le nom du champ constitue la moitié de la clé de son flux. Si vous voulez conserver les valeurs, renommez la colonne plus loin dans la chaîne, ou acceptez le nouveau tirage. On ne peut pas être à la fois stable au renommage et stable au réordonnancement sans un identifiant caché que le fichier de schéma devrait alors transporter.
Puis-je générer ainsi un mot de passe ou une clé d'API ?
Non. Tout ici provient d'un générateur pseudo-aléatoire à graine, prévisible par conception, et c'est précisément pour cela que la sortie est reproductible. Un secret doit venir de la source cryptographique de la plateforme. Utilisez un générateur de jetons dédié pour cela.
Comment faire correspondre l'adresse de courrier au nom ?
Ajoutez un champ gabarit et écrivez les autres colonnes entre doubles accolades — quelque chose comme {{first_name}}.{{last_name}}@example.com — puis réglez la transformation de casse sur minuscules. Les champs sont générés dans l'ordre des dépendances, si bien que le gabarit peut nommer une colonne qui figure après lui dans la liste.
Combien de lignes peut-il produire ?
Dix mille, sur quarante champs au plus. La génération est assez rapide pour rester dans le fil principal à cette taille ; ce qui devient réellement inconfortable, c'est le texte obtenu, d'où l'aperçu tronqué du panneau alors que la copie et le téléchargement prennent tout.
Quelque chose sort-il de mon navigateur ?
Non. Le générateur, le corpus de noms et tous les formats de sortie s'exécutent en JavaScript dans la page. Il n'y a aucun appel serveur, et rien de ce que vous saisissez dans le schéma n'est envoyé où que ce soit.