{"id":30441709,"url":"https://github.com/abock/idgen","last_synced_at":"2025-08-23T07:10:59.969Z","repository":{"id":66650548,"uuid":"153701433","full_name":"abock/idgen","owner":"abock","description":"idgen is a .NET Core global tool that supports the bulk generation of various types of unique identifiers.","archived":false,"fork":false,"pushed_at":"2024-12-11T23:15:05.000Z","size":93,"stargazers_count":57,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-01T05:53:17.769Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abock.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2018-10-18T23:48:27.000Z","updated_at":"2025-04-24T11:32:57.000Z","dependencies_parsed_at":"2023-07-23T01:16:34.591Z","dependency_job_id":null,"html_url":"https://github.com/abock/idgen","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/abock/idgen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abock%2Fidgen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abock%2Fidgen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abock%2Fidgen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abock%2Fidgen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abock","download_url":"https://codeload.github.com/abock/idgen/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abock%2Fidgen/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271710466,"owners_count":24807682,"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-08-22T02:00:08.480Z","response_time":65,"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":[],"created_at":"2025-08-23T07:10:54.611Z","updated_at":"2025-08-23T07:10:59.959Z","avatar_url":"https://github.com/abock.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IdentifierGenerator\n\n| ![NuGet Version](https://img.shields.io/nuget/v/IdentifierGenerator) | ![NuGet Downloads](https://img.shields.io/nuget/dt/IdentifierGenerator) ![Build](https://img.shields.io/github/actions/workflow/status/abock/idgen/build.yml) ![GitHub License](https://img.shields.io/github/license/abock/idgen) |\n|:--|:--|\n| **Install** | `dotnet tool install -g IdentifierGenerator` |\n| **Update** | `dotnet tool update -g IdentifierGenerator`|\n\nIdentifierGenerator (`idgen`) is a .NET global tool that supports the bulk generation of various kinds of unique\u003csup\u003e1\u003c/sup\u003e identifiers:\n\n* [Versions 3 and 5 GUID/UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Versions_3_and_5_(namespace_name-based)): reproducible hashed namespace + name IDs\n  * _Note: use version 5 (SHA-1) over version 3 (MD5) unless compatibility is required._\n* [Version 4 GUID/UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_(random)): secure random IDs\n* [Hashid](https://hashids.org/): Stable, short, unique, non-sequential, **_insecure_** IDs from integer array input\n* [Nano ID](https://zelark.github.io/nano-id-cc/): secure random IDs of configurable size and alphabet\n* Xcode Storyboard/XIB IDs\n\nIt can also encode strings for [3x4 numeric keypad/phone entry][phonewords]. This feature was implemented for and tested on [Fidelity's](https://www.fidelity.com/) antiquated phone authentication system, wherein they ask for an account password to be entered on a phone keypad.\n\n\u003e [!NOTE]\n\u003e\n\u003e _\u003csup\u003e1.\u003c/sup\u003e \"Uniqueness\" is an inherent property of the chosen format. No ID formats are truly unique._\n\n## Examples\nRun `idgen --help` after installing for detailed options.\n\n\u003e [!TIP]\n\u003e Any argument that expects a number my be specified in decimal, binary (`0b1001`), or hex (`0xabcd` and `ab123h`) notation. Numbers may also contain digit separators (`_` and `,`) and arbitrary whitespace.\n\n### Generate a single v4 random GUID\n```bash\nidgen\n```\n\u003e \u003cpre\u003e\n\u003e 0b0d5b33-b5e9-45cb-8f14-9bdab594cc98\n\u003e \u003c/pre\u003e\n\n### Do the same, but upper-case it\n```bash\nidgen -upper\n```\n\u003e \u003cpre\u003e\n\u003e 8E350BC7-FF37-4E96-A5F7-CD945C9BDC33\n\u003e \u003c/pre\u003e\n\n### Generate a true base-64 encoded v4 random GUID\n```bash\nidgen -f base64\n```\n\u003e \u003cpre\u003e\n\u003e JWn2giJJhUePnVzrCAK8JQ==\n\u003e \u003c/pre\u003e\n\n### Generate a true short v4 random GUID (base-64 with minor transformations)\n```bash\nidgen -f short\n```\n\u003e \u003cpre\u003e\n\u003e 9lsQ5-h1nEy9uS3DMbLoeg\n\u003e \u003c/pre\u003e\n\n### Generate a Hashid from a set of numbers\n```bash\nidgen hashid 3 100 45 11\n```\n\u003e \u003cpre\u003e\n\u003e Q0i67ixxir\n\u003e \u003c/pre\u003e\n\n### Generate a Hashid from a set of numbers with a minimum ID length, salt, and alphabet\n```bash\nidgen hashid 3 100 45 11 -salt bojangles -a aBcDeFgHiJkLmNoPqRsTuV -s 32\n```\n\u003e \u003cpre\u003e\n\u003e BPDNPBNqkgLJVRsVaFLBsVJRVDmaeaLm\n\u003e \u003c/pre\u003e\n\n### Generate Hashids of numbers 1 to 100 from stdin\n```bash\nseq 1 100 | idgen hashid\n```\n\u003e \u003cpre\u003e\n\u003e jR\n\u003e k5\n\u003e l5\n\u003e ...\n\u003e vgm\n\u003e wjR\n\u003e g56\n\u003e \u003c/pre\u003e\n\n### Generate 5 Nano IDs\n```bash\nidgen nanoid -n 5\n```\n\u003e \u003cpre\u003e\n\u003e Fm82ZL3eyabMeVAgDGF7k\n\u003e LlrnWI3YrhUbQY3zHiyYc\n\u003e JUExm8eTVmLjLBjVeabZd\n\u003e 1bNIDlndN6W~chHMDq2y9\n\u003e izaokjb4E9ft6~rAgINEy\n\u003e \u003c/pre\u003e\n\n### Generate a Nano ID with a custom size and alphabet\n```bash\nidgen nanoid -s 32 -alphabet abcdefghijklmnopqrstuvwxyz\n```\n\u003e \u003cpre\u003e\n\u003e aqmtbhpgomnpvudpmtesoooakyrrdrap\n\u003e \u003c/pre\u003e\n\n### Generate a v5 SHA-1 namespace + name hashed GUID using the URL namespace and the name _`bojangles`_\n```bash\nidgen v5 bojangles\n```\n\u003e \u003cpre\u003e\n\u003e 11de2b26-984e-56b4-aa25-b3bd28ea5ac2\n\u003e \u003c/pre\u003e\n\n### Generate a v5 SHA-1 namespace + name hashed GUID using a custom namespace and the name _`bojangles`_\n```bash\nidgen v5 bojangles 11de2b26-984e-56b4-aa25-b3bd28ea5ac2\n```\n\u003e \u003cpre\u003e\n\u003e de9425a4-e8dd-510b-8e00-b6ac890c733a\n\u003e \u003c/pre\u003e\n\n### Generate a v5 SHA-1 namespace + name hashed GUID from `stdin`\n\n```bash\nidgen v5 - \u003c /usr/share/dict/words\n```\n\u003e \u003cpre\u003e\n\u003e e54b4418-5a27-5bdb-a1e8-24a89e2a8634\n\u003e \u003c/pre\u003e\n\n### Generate an ID suitable for an Xcode storyboard\n```bash\nidgen xcode\n```\n\u003e \u003cpre\u003e\n\u003e KoW-8m-wjo\n\u003e \u003c/pre\u003e\n\n### Encode a string suitable for [3x4 numeric keypad/phone entry][phonewords]\n```bash\nidgen phone \"hello world\"\n```\n\u003e \u003cpre\u003e\n\u003e 43556*96753#\n\u003e \u003c/pre\u003e\n\n#### GUID Formats\nFor GUID/UUIDs, a number of representation formats are supported via the `-f` or `-format`\n\n| `-format` | Description |\n| --------------- | ----------- |\n| `Base64` | The binary representation of the GUID encoded in base 64. _This format ignores the `-upper` option if specified._ |\n| `Short` | Like Base64, but with padding (`==`) stripped, `/` changed to `_`, and `+` changed to `-`. |\n| `N` | 32 digits:\u003cbr\u003e`00000000000000000000000000000000` |\n| `D` | 32 digits separated by hyphens:\u003cbr\u003e`00000000-0000-0000-0000-000000000000` |\n| `B` | 32 digits separated by hyphens, enclosed in braces:\u003cbr\u003e`{00000000-0000-0000-0000-000000000000}` |\n| `P` | 32 digits separated by hyphens, enclosed in parentheses:\u003cbr\u003e`(00000000-0000-0000-0000-000000000000)` |\n| `X` | Four hexadecimal values enclosed in braces, where the fourth value is a subset of eight hexadecimal values that is also enclosed in braces:\u003cbr\u003e`{0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}` |\n\n[phonewords]: https://en.wikipedia.org/wiki/Telephone_keypad","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabock%2Fidgen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabock%2Fidgen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabock%2Fidgen/lists"}