{"id":13597565,"url":"https://github.com/datafaker-net/datafaker","last_synced_at":"2025-10-10T17:07:38.408Z","repository":{"id":36985606,"uuid":"442921115","full_name":"datafaker-net/datafaker","owner":"datafaker-net","description":"Generating fake data for the JVM (Java, Kotlin, Groovy) has never been easier!","archived":false,"fork":false,"pushed_at":"2025-09-30T21:27:27.000Z","size":16194,"stargazers_count":1674,"open_issues_count":6,"forks_count":216,"subscribers_count":23,"default_branch":"main","last_synced_at":"2025-09-30T23:25:23.343Z","etag":null,"topics":["faker","testing"],"latest_commit_sha":null,"homepage":"https://www.datafaker.net","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datafaker-net.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-12-30T00:07:31.000Z","updated_at":"2025-09-30T21:26:58.000Z","dependencies_parsed_at":"2023-10-11T13:18:50.488Z","dependency_job_id":"4b59467d-7e7b-4539-9daa-8d1e816f1069","html_url":"https://github.com/datafaker-net/datafaker","commit_stats":null,"previous_names":[],"tags_count":47,"template":false,"template_full_name":null,"purl":"pkg:github/datafaker-net/datafaker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datafaker-net%2Fdatafaker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datafaker-net%2Fdatafaker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datafaker-net%2Fdatafaker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datafaker-net%2Fdatafaker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datafaker-net","download_url":"https://codeload.github.com/datafaker-net/datafaker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datafaker-net%2Fdatafaker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279004815,"owners_count":26083783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["faker","testing"],"created_at":"2024-08-01T17:00:36.262Z","updated_at":"2025-10-10T17:07:35.213Z","avatar_url":"https://github.com/datafaker-net.png","language":"Java","readme":"\n# Datafaker\n\n[![Maven Status](https://maven-badges.herokuapp.com/maven-central/net.datafaker/datafaker/badge.svg?style=flat)](http://mvnrepository.com/artifact/net.datafaker/datafaker)\n[![License](http://img.shields.io/:license-apache-brightgreen.svg)](http://www.apache.org/licenses/LICENSE-2.0.html)\n[![codecov](https://codecov.io/gh/datafaker-net/datafaker/branch/main/graph/badge.svg?token=FJ6EXMUTFD)](https://codecov.io/gh/datafaker-net/datafaker)\n\nThis library is a modern fork of [java-faker](https://github.com/DiUS/java-faker) with up to date libraries and several newly added Fake Generators.\n\nDatafaker 2.x has Java 17 as the minimum requirement.\n\n*If Java 17 is not an option for you, you can choose to use Datafaker 1.x. Datafaker 1.x is built on Java 8, but this version is no longer maintained. We recommend all users to upgrade to Datafaker 2.x.*\n\nThis library generates fake data, similar to other fake data generators, such as:\n\n* Ruby's [faker](https://github.com/stympy/faker) gem\n* Perl's [Data::Faker](https://metacpan.org/pod/Data::Faker) library\n* Python [faker](https://faker.readthedocs.io/en/master/) package\n* PHP [faker](https://fakerphp.github.io/) library\n* Javascript [Faker.js](https://github.com/faker-js/faker) library\n\nIt's useful when you're developing a new project and need some pretty data for showcase.\n\n## Usage\n\nIn the pom.xml, add the following fragment to the `dependencies` section:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003enet.datafaker\u003c/groupId\u003e\n    \u003cartifactId\u003edatafaker\u003c/artifactId\u003e\n    \u003cversion\u003e2.4.2\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nFor Gradle users, add the following to your build.gradle file.\n\n```groovy\ndependencies {\n    implementation 'net.datafaker:datafaker:2.4.2'\n}\n\n```\n\nYou can also use the snapshot version (`2.4.3-SNAPSHOT`), which automatically gets published\nafter every push to the main branch of this repository. Binary repository URL for snapshots download is\n`https://s01.oss.sonatype.org/content/repositories/snapshots/`.\n\n### Get started\n\nIn your Java code:\n\n```java\nFaker faker = new Faker();\n\nString name = faker.name().fullName(); // Miss Samanta Schmidt\nString firstName = faker.name().firstName(); // Emory\nString lastName = faker.name().lastName(); // Barton\n\nString streetAddress = faker.address().streetAddress(); // 60018 Sawayn Brooks Suite 449\n```\n\nOr in your Kotlin code:\n\n```kotlin\nval faker = Faker()\n\nval name = faker.name().fullName() // Miss Samanta Schmidt\nval firstName = faker.name().firstName() // Emory\nval lastName = faker.name().lastName() // Barton\n\nval streetAddress = faker.address().streetAddress() // 60018 Sawayn Brooks Suite 449\n```\n\nJShell\n```\n# from project root folder\njshell --class-path $(ls -d target/*.jar | tr '\\n' ':')\n|  Welcome to JShell -- Version 17.0.4\n|  For an introduction type: /help intro\n\njshell\u003e import net.datafaker.Faker;\n\njshell\u003e var faker = new Faker();\nfaker ==\u003e net.datafaker.Faker@c4437c4\n\njshell\u003e faker.address().city();\n$3 ==\u003e \"Brittneymouth\"\n\njshell\u003e faker.name().fullName();\n$5 ==\u003e \"Vernie Schmidt\"\n```\n\n### Expressions\n\n```java\nFaker faker = new Faker();\nfaker.expression(\"#{letterify 'test????test'}\"); // testqwastest\nfaker.expression(\"#{numerify '#test#'}\"); // 3test5\nfaker.expression(\"#{templatify 'test','t','q','@'}\"); // @esq\nfaker.expression(\"#{examplify 'test'}\"); // ghjk\nfaker.expression(\"#{regexify '[a-z]{4,10}'}\"); // wbevoa\nfaker.expression(\"#{options.option '23','2','5','$','%','*'}\"); // *\nfaker.expression(\"#{date.birthday 'yy DDD hh:mm:ss'}\"); // 61 327 08:11:45\nfaker.expression(\"#{csv '1','name_column','#{Name.first_name}','last_name_column','#{Name.last_name}'}\");\n// \"name_column\",\"last_name_column\"\n// \"Sabrina\",\"Kihn\"\nfaker.expression(\"#{json 'person','#{json ''first_name'',''#{Name.first_name}'',''last_name'',''#{Name.last_name}''}','address','#{json ''country'',''#{Address.country}'',''city'',''#{Address.city}''}'}\");\n// {\"person\": {\"first_name\": \"Barbie\", \"last_name\": \"Durgan\"}, \"address\": {\"country\": \"Albania\", \"city\": \"East Catarinahaven\"}}\n```\nalso more examples at https://www.datafaker.net/documentation/expressions/\n\n### Collections\n```java\nFaker faker = new Faker();\nList\u003cString\u003e names = faker.collection(\n                              () -\u003e faker.name().firstName(),\n                              () -\u003e faker.name().lastName())\n                         .len(3, 5)\n                         .generate();\nSystem.out.println(names);\n// [Skiles, O'Connell, Lorenzo, West]\n```\nmore examples about that at https://www.datafaker.net/documentation/sequences/\n\n### Streams\n```java\nFaker faker = new Faker();\n// generate an infinite stream\nStream\u003cString\u003e names = faker.stream(\n                              () -\u003e faker.name().firstName(),\n                              () -\u003e faker.name().lastName())\n                         .generate();\n```\n\n### Formats\n\n#### Schema\nThere are 2 ways of data generation in specific formats\n1. Generate it from scratch\n2. There is already a sequence of objects and we could extract from them some values and return it in specific format\n\nFor both cases we need a `Schema` which could describe fields and a way of data generation.\nIn case of generation from scratch `Suppliers` are enough, in case of transformation `Functions` are required\n#### CSV\n\n```java\n// transformer could be the same for both\nCsvTransformer\u003cName\u003e transformer =\n        CsvTransformer.\u003cName\u003ebuilder().header(true).separator(\",\").build();\n// Schema for from scratch\nSchema\u003cName, String\u003e fromScratch =\n    Schema.of(field(\"firstName\", () -\u003e faker.name().firstName()),\n        field(\"lastname\", () -\u003e faker.name().lastName()));\nSystem.out.println(transformer.generate(fromScratch, 2));\n// POSSIBLE OUTPUT\n// \"first_name\" ; \"last_name\"\n// \"Kimberely\" ; \"Considine\"\n// \"Mariela\" ; \"Krajcik\"\n// ----------------------\n// Schema for transformations\nSchema\u003cName, String\u003e schemaForTransformations =\n    Schema.of(field(\"firstName\", Name::firstName),\n        field(\"lastname\", Name::lastName));\n// Here we pass a collection of Name objects and extract first and lastnames from each element\nSystem.out.println(\n    transformer.generate(\n        faker.collection(faker::name).maxLen(2).generate(), schemaForTransformations));\n// POSSIBLE OUTPUT\n// \"first_name\" ; \"last_name\"\n// \"Kimberely\" ; \"Considine\"\n// \"Mariela\" ; \"Krajcik\"\n```\n\n#### JShell\n\n```\n# from project root folder\njshell --class-path $(ls -d target/*.jar | tr '\\n' ':')\n|  Welcome to JShell -- Version 17.0.4\n|  For an introduction type: /help intro\n\njshell\u003e import net.datafaker.Faker;\n\njshell\u003e import net.datafaker.providers.base.Name;\n\njshell\u003e import net.datafaker.transformations.Schema;\n\njshell\u003e import net.datafaker.transformations.CsvTransformer;\n\njshell\u003e import static net.datafaker.transformations.Field.field;\n\njshell\u003e var faker = new Faker();\nfaker ==\u003e net.datafaker.Faker@c4437c4\n\njshell\u003e Schema fromScratch =\n   ...\u003e     Schema.of(field(\"firstName\", () -\u003e faker.name().firstName()),\n   ...\u003e         field(\"lastname\", () -\u003e faker.name().lastName()));\nfromScratch ==\u003e net.datafaker.transformations.Schema@306a30c7\n\njshell\u003e CsvTransformer\u003cName\u003e transformer =\n   ...\u003e     CsvTransformer.\u003cName\u003ebuilder().header(false).separator(\",\").build();\ntransformer ==\u003e net.datafaker.transformations.CsvTransformer@506c589e\n\njshell\u003e System.out.println(transformer.generate(fromScratch, 2));\n\"firstName\",\"lastname\"\n\"Darcel\",\"Schuppe\"\n\"Noelle\",\"Smitham\"\n```\n\n#### JSON\n\n```java\nSchema\u003cObject, ?\u003e schema = Schema.of(\n    field(\"firstName\", () -\u003e faker.name().firstName()),\n    field(\"lastName\", () -\u003e faker.name().lastName())\n    );\n\nJsonTransformer\u003cObject\u003e transformer = JsonTransformer.builder().build();\nString json = transformer.generate(schema, 2);\n// [{\"firstName\": \"Oleta\", \"lastName\": \"Toy\"},\n// {\"firstName\": \"Gerard\", \"lastName\": \"Windler\"}]\n```\nMore complex examples and other formats like YAML, XML could be found at https://www.datafaker.net/documentation/formats/\n\n### Unique Values\n\n```java\nFaker faker = new Faker();\n\n// The values returned in the following lines will never be the same.\nString firstUniqueInstrument = faker.unique().fetchFromYaml(\"music.instruments\"); // \"Flute\"\nString secondUniqueInstrument = faker.unique().fetchFromYaml(\"music.instruments\"); // \"Clarinet\"\n```\nMore examples can be found in https://www.datafaker.net/documentation/unique-values\n\n### Custom provider\n\nAdd your own custom provider in your app following steps from https://www.datafaker.net/documentation/custom-providers/\n\nDocumentation\n-----\n[Getting started](https://www.datafaker.net/documentation/getting-started/).\n\n\nContributions\n-------------\nSee [CONTRIBUTING.md](https://github.com/datafaker-net/datafaker/blob/main/CONTRIBUTING.md)\n\nIf this is your first time contributing then you may find it helpful to read [FIRST_TIME_CONTRIBUTOR.md](https://github.com/datafaker-net/datafaker/blob/main/FIRST_TIME_CONTRIBUTOR.md)\n\nProviders\n-----\nThe list below is not complete and shows only a part of available providers. To view the full list of providers, please follow the link: [Full list of providers](https://www.datafaker.net/documentation/providers/).\n\n\n* Address\n* Ancient\n* Animal\n* App\n* Appliance\n* Aqua Teen Hunger Force\n* Artist\n* Australia\n* Avatar\n* Aviation\n* AWS\n* Azure\n* Babylon 5\n* Back To The Future\n* Barcode\n* Baseball\n* Basketball\n* Battlefield 1\n* Beer\n* Big Bang Theory\n* Blood Type\n* Boardgame\n* Bojack Horseman\n* Book\n* Bool\n* Bossa Nova\n* Brand\n* Breaking Bad\n* Brooklyn Nine-Nine\n* Buffy\n* Business\n* CNPJ ([Brazilian National Registry of Legal Entities](https://en.wikipedia.org/wiki/CNPJ))\n* CPF ([Brazilian individual taxpayer registry identification](https://en.wikipedia.org/wiki/CPF_number))\n* Camera\n* Cat\n* Chuck Norris\n* Clash of Clans\n* Code\n* Coin\n* Color\n* Commerce\n* Community\n* Company\n* Compass\n* Computer\n* Control\n* Country\n* Credit Card Type\n* Cricket\n* Crypto\n* Currency\n* Date and Time\n* DC Comics\n* Demographic\n* Departed\n* Dessert\n* Device\n* Disease\n* Doctor Who\n* Dog\n* Domain\n* Doraemon\n* Dota 2\n* Dragon Ball\n* Driving License\n* Dumb and Dumber\n* Dune\n* Durations\n* Educator\n* Elden Ring\n* Elder Scrolls\n* Electrical Components\n* Emoji\n* England Football\n* Esports\n* Fallout\n* Family Guy\n* Famous Last Words\n* File\n* Final Space\n* Finance\n* Food\n* Formula 1 (:racing_car:)\n* Friends\n* Fullmetal Alchemist: Brotherhood\n* Funny Name\n* Futurama\n* Game Of Thrones\n* Garment Size\n* Gender\n* Ghostbusters\n* Grateful Dead\n* Greek Philosopher\n* Hacker\n* Harry Potter\n* Hashing\n* Hearthstone\n* Heroes of the Storm\n* Hey Arnold\n* Hipster\n* Hitchhiker's Guide To The Galaxy\n* Hobbit\n* Hobby\n* Horse\n* House\n* How I Met Your Mother\n* IdNumber\n* Industry Segments\n* Internet\n* Job\n* Joke\n* K-pop (Korean popular music)\n* Kaamelott\n* Language Code\n* League Of Legends\n* Lebowski\n* Locality\n* Lord Of The Rings\n* Lorem\n* Marketing\n* Marvel Snap\n* Mass Effect\n* Matz\n* MBTI\n* Measurement\n* Medical\n* Military\n* Minecraft\n* Money\n* Money Heist\n* Mood\n* Mountaineering\n* Mountains\n* Movie\n* Music\n* Name\n* Naruto\n* Nation\n* Nato Phonetic Alphabet\n* Nigeria\n* Number\n* One Piece\n* Options\n* Oscar Movie\n* Overwatch\n* Passport\n* Password\n* Phone Number\n* Photography\n* Planet\n* Pokemon\n* Princess Bride\n* Programming Language\n* Red Dead Redemption 2\n* Relationship Terms\n* Resident Evil\n* Restaurant\n* Rick and Morty\n* Robin\n* Rock Band\n* RuPaul's Drag Race\n* Science\n* Seinfeld\n* Shakespeare\n* Silicon Valley\n* Simpsons\n* Sip\n* Size\n* Slack Emoji\n* Soul Knight\n* Space\n* StarCraft\n* StarTrek\n* Stock\n* Studio Ghibli\n* Subscription\n* Super Mario\n* Superhero\n* Tea\n* Team\n* The IT Crowd\n* Time\n* Touhou\n* Tron\n* Twin Peaks\n* Twitter\n* University\n* Vehicle\n* Verb\n* Volleyball\n* Weather\n* Witcher\n* Yoda\n* Zelda\n\nUsage with Locales\n-----\n\n```java\nFaker faker = new Faker(new Locale(\"lang\", \"COUNTRY\"));\n```\n\nFor example:\n\n```java\nString californiaZipCode = new Faker(new Locale(\"en\", \"US\")).address().zipCodeByState(\"CA\");\nString albanianIdNumber = new Faker(new Locale(\"sq\", \"AL\")).idNumber().valid();\nString moldovanPhone = new Faker(new Locale(\"ru\", \"MD\")).phoneNumber().cellPhone();\n```\n\nNote that most of the data depends on language,\nbut some data depends purely on country (personal ID and phone numbers).\nIn the example above,\n* \"en\", \"sq\", \"ru\" are language codes (English, Albanian and Russian), and\n* \"US\", \"AL\", \"MD\" are country codes (USA, Albanian and Moldova)\n\n\u003cdetails\u003e\n\u003csummary\u003eSupported Locales\u003c/summary\u003e\n\n-----\n* ar (Armenian)\n* be_BY (Belarusian)\n* bg_BG (Bulgarian)\n* ca_CA (Canada)\n* ca-CAT\n* cs_CZ (Czech republic)\n* da-DK (language: Danish, country: Denmark)\n* de (German)\n* de-AT (language: German, country: Austria)\n* de_CH (language: German, country: Switzerland)\n* el-GR (Greek)\n* en\n* en-AU (Australia)\n* en-au-ocker\n* en-BORK\n* en-CA\n* en-GB (Great Britain)\n* en-IN (India)\n* en-MS\n* en-NEP\n* en-NG\n* en-NZ\n* en-PAK\n* en-SG\n* en-UG\n* en-US\n* en-ZA\n* en-PH\n* es-AR (language: Spanish, country: Argentina)\n* es_ES (language: Spanish, country: Spain)\n* es-MX (language: Spanish, country: Mexico)\n* es-PY (language: Spanish, country: Paraguay)\n* et_EE (Estonian)\n* fa (Persian)\n* fi-FI (language: Finnish, country: Finland)\n* fr_FR (language: French, country: France)\n* fr_CH (language: French, country: Switzerland)\n* ge_GE (Georgia)\n* he_IL (language: Hebrew, country: Israel)\n* hr_HR (Croatian)\n* hu_HU (Hungarian)\n* hy_AM (Armenian)\n* id_ID (Indonesia)\n* it (Italian)\n* ja_JP (language: Japanese, country: Japan)\n* ka_GE (language: Georgian, country: Georgia)\n* ko_KR (language: Korean, country: South Korea)\n* lv_LV (language: Latvian, country: Latvia)\n* mk_MK (North Macedonia)\n* nb_NO (language: Norwegian, country: Norway)\n* nl_NL (language: Dutch, country: Netherlands)\n* nl_BE (language: Dutch, country: Belgium)\n* pl (language: Polish, country: Poland)\n* pt (language: Portuguese)\n* pt_BR (language: Portuguese, country: Brazil)\n* ro_MD (language: Romanian a.k.a. Moldavian, country: Moldova)\n* ru_RU (Russian)\n* sk_SK (Slovak)\n* sq_AL (Albanian)\n* sv (Swedish)\n* sv-SE (language: Swedish, country: Sweden)\n* ta (Tamil)\n* tr (Turkish)\n* th_TH (language: Thai, country: Thailand)\n* uk_UA (language: Ukrainian, country: Ukraine)\n* uz (Uzbek)\n* vi_VN (language: Vietnamese, country: Vietnam)\n* zh_CN (language: Chinese, country: China)\n* zh-TW (language: Chinese, country: Taiwan)\n\u003c/details\u003e\n\nNATIVE IMAGE\n------------\n\nSince version 2.4.1, Datafaker provides **experimental** native-image support.\nThis is done by providing a `reachability-metadata.json` file in the META-INF directory.\n\nThis file is currently created manually by running all the unit tests, and having an agent collect tracing info:\n\n```\n-agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image\n```\n\nFuture enhancements should automate and improve this process, but if you encounter any unexpected behaviour,\nfeel free to report an issue.\n\nAn example usage of this can be found here: https://github.com/datafaker-net/datafaker-native-demo\n\nLICENSE\n-------\nCopyright (c) 2025 Datafaker.net See the LICENSE file for license rights and limitations.\n","funding_links":[],"categories":["Java","Languages","Projects","测试","项目","Testing \u0026 Development"],"sub_categories":["Testing","测试","Data Generation"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatafaker-net%2Fdatafaker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatafaker-net%2Fdatafaker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatafaker-net%2Fdatafaker/lists"}