FIRST CH TOOLS / 26 UUID & ULID GENERATOR
UUID (v4) & ULID Bulk Generator
Mint unique IDs for test data and migrations, 1 to 100 at a time. Pick fully random UUID v4 or time-sortable ULID, then write them out in the shape your target wants — upper or lower case, no hyphens, JSON array. The randomness comes from this browser's cryptographic RNG, and the values are never sent anywhere.
Press Generate and the IDs appear here.
| Part | Value | What it is |
|---|
How to Use
- Pick a typeLet the use case decide. If you only need IDs that never collide across machines, take UUID v4. If the ID is a database primary key and you want rows to land in insertion order — or want the creation time readable from the ID — take ULID.
- Set the count and formatAsk for 1 to 100, then choose the shape your target expects. Use “Quoted” to paste into an INSERT, “JSON array” to drop into code, and “Strip hyphens” for systems that store UUIDs as 32 characters.
- Generate and copyPress Generate and the values appear immediately. “Copy” puts the whole batch on your clipboard, “Download” saves it as a text file, and the table below shows exactly how the first value is built.
About This Tool
A UUID v4 is 128 bits of which 122 are random. Six bits are spent on the version (4) and the variant; everything else is entropy. That is the whole point: any machine can mint one without asking a central server, and collisions stay negligible (you would need on the order of 1014 IDs before a single collision reaches a one-in-a-billion chance). This page draws its randomness from crypto.getRandomValues(), the browser's cryptographic RNG. It does not use Math.random(). UUIDs built on Math.random() can be predicted, which rules them out anywhere the ID must not be guessable.
A ULID is a UUID with the clock in front. Of its 26 characters, the first 10 encode the creation time (Unix milliseconds, 48 bits) and the remaining 16 are random (80 bits), the whole thing written in Crockford's Base32. Because the time leads, sorting the strings alphabetically sorts them chronologically, and you can read the creation time back out of the ID. The alphabet drops the ambiguous I, L, O and U, so the values survive being read aloud or copied by hand.
“Time-sortable” is exactly what naive bulk generation breaks. Generate 100 of them inside one millisecond and every timestamp prefix is identical, so the order falls to the 16 random characters — which is not creation order. This tool follows the monotonic rule from the ULID spec instead: within the same millisecond it increments the random part by one for each new value. A batch of 100 therefore still sorts lexicographically in the order it was created.
As a primary key, ULID often wins. UUID v4 is uniformly random, so every insert lands in a different place in a B+tree index, which costs page splits and cache misses. A ULID starts with the time, so inserts cluster near the end of the index. The trade-off is that a ULID publishes its creation time to anyone who has it, which makes it a poor choice when that timing is sensitive. (UUID v7 is the standardised version of the same idea.)
Watch the spelling. RFC 9562 says UUIDs are output in lower case (upper case is only accepted on input). Windows GUIDs are traditionally written upper case inside braces {…}, and MySQL BINARY(16) setups often use the 32-character hyphen-free form. ULID goes the other way and defaults to upper case. This tool writes any of them — but keep one spelling per system, or the same ID will eventually be treated as two.
Everything happens on this page. No server hands out the numbers, so none of these values end up in someone else's log. You can also call the tool straight from a URL: /en/uuid/?type=ulid&count=20&format=json (type=uuid|ulid, count=1–100, format=plain|json|csv|quoted, case=upper|lower, hyphens=0).
From AI Agents
The same generator ships as the uuid_generate tool of the MCP (Model Context Protocol) server @first-ch/tools-mcp, so an AI agent can call it directly instead of driving a browser — faster when you are seeding test data or drafting a migration. See Using these tools from AI agents for setup.
Install
claude mcp add firstch-tools -- npx -y @first-ch/tools-mcp
Examples
# ten UUID v4 values uuid_generate(type="uuid", count=10) # 100 ULIDs (monotonic within a millisecond, so they stay in creation order) uuid_generate(type="ulid", count=100) # take them as a JSON array / as upper-case values without hyphens uuid_generate(type="uuid", count=5, format="json") uuid_generate(type="uuid", count=5, hyphens=false, uppercase=true)
Other Tools
- 01WebP Converter画像→WebP一括変換
- 02White BG Remover白背景の透過
- 03Contrast Checkerコントラスト比チェッカー
- 04Character Counter文字数カウント
- 05llms.txt Generatorllms.txt ジェネレーター
- 06JSON-LD GeneratorJSON-LD構造化データ生成
- 07Markdown → PDFMarkdown→PDF変換
- 08OGP Meta Tag WizardOGPメタタグ生成ウィザード
- 09Favicon Generatorfaviconジェネレーター
- 10TikTok PublisherTikTok投稿ツール
- 11Encoding Converter文字コード・改行コード変換
- 12AVIF Converter画像→AVIF変換+picture生成
- 13Test Data Generatorテストデータ生成
- 14Marp Markdown → SlidesMarp Markdown→スライド
- 15Text & Code Diff Checkerテキスト・コード差分チェッカー
- 16Cron ExplainerCron式ビジュアル解説&発火日時
- 17Base64 & Data URIBase64 & Data URI変換
- 18URL Parameters & UTMURLパラメータ分解・UTMタグ編集
- 19HTML Escape & UnescapeHTMLエンティティ・特殊文字エスケープ
- 20JSON ⇄ YAML ConverterJSON ⇄ YAML 相互変換&整形
- 21PX ⇄ REM / EM ConverterPX ⇄ REM / EM 単位変換
- 22Color Converter & AlphaColorコード変換&アルファ透過
- 23Hash GeneratorMD5 / SHA-256 ハッシュ生成
- 24JWT Decoder & ExpiryJWTデコーダー&有効期限チェック
- 25User-Agent ParserUser-Agent 解析&デバイス判定
- 27Aspect Ratio Calculatorアスペクト比計算&サイズ算出