ReSuMeYaDev

เครื่องมือนักพัฒนา

UUID Generator — สร้าง UUID/GUID v4

สร้าง UUID v4 ที่ปลอดภัยระดับ cryptographic ด้วย crypto.randomUUID() ในเบราว์เซอร์ — รองรับสร้างทีละหลายตัว คัดลอกได้ทันที ไม่ส่งข้อมูลไปเซิร์ฟเวอร์

  • ใช้งานฟรี
  • UUID v4
  • crypto-secure
  • รองรับมือถือ

คำจำกัดความ

UUID คืออะไร?

UUID (Universally Unique Identifier) หรือ GUID (Globally Unique Identifier) คือรหัสเฉพาะที่มีความยาว 128 บิต ใช้สำหรับระบุข้อมูลอย่างไม่ซ้ำกัน โดยไม่ต้องอาศัยศูนย์กลาง

UUID v4 สร้างจากตัวเลขสุ่ม มีรูปแบบ xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx โดย x เป็นเลขฐาน 16 ที่สุ่ม และ y เป็น 8, 9, a หรือ b

ใช้งาน

ใช้งาน UUID ที่ไหนบ้าง?

UUID ถูกใช้งานอย่างแพร่หลายในระบบซอฟต์แวร์สมัยใหม่ ตั้งแต่ฐานข้อมูลไปจนถึงระบบกระจาย (distributed systems) ตัวอย่างการใช้งานที่พบบ่อย ได้แก่:

  • Primary Key ในฐานข้อมูล (แทน auto-increment)
  • Session ID และ Token สำหรับ authentication
  • Tracking ID สำหรับ analytics และ logging
  • File naming เพื่อป้องกันชื่อซ้ำ
  • Distributed systems ที่ต้องการ ID ที่ไม่ซ้ำกันจากหลายเซิร์ฟเวอร์

เวอร์ชัน

UUID เวอร์ชันต่างๆ

UUID มีหลายเวอร์ชัน แต่ละเวอร์ชันมีวิธีสร้างและจุดประสงค์ที่แตกต่างกัน เวอร์ชันที่นิยมใช้มากที่สุดคือ v4 ซึ่งสร้างจากตัวเลขสุ่ม:

  • v1 — สร้างจาก timestamp + MAC address
  • v3 — สร้างจาก namespace + name (MD5 hash)
  • v4 — สร้างจากตัวเลขสุ่ม (ใช้มากที่สุด)
  • v5 — สร้างจาก namespace + name (SHA-1 hash)
  • v7 — สร้างจาก timestamp + random (ใหม่ เรียงตามเวลาได้)

กรณีใช้งานจริง

กรณีใช้งานจริง

  • สร้าง primary key สำหรับ record ใหม่ในฐานข้อมูล PostgreSQL หรือ MongoDB แทนการใช้ auto-increment
  • ตั้งชื่อไฟล์ที่อัปโหลดบน S3 หรือ cloud storage เพื่อป้องกันชื่อซ้ำและเดา URL ไม่ได้
  • สร้าง correlation ID สำหรับ request tracing ใน microservices เพื่อติดตาม request ข้าม service
  • กำหนด idempotency key สำหรับ payment API เพื่อป้องกันการทำรายการซ้ำเมื่อ network retry
  • สร้าง session token สำหรับระบบ authentication ที่ต้องการ ID ที่ไม่สามารถเดาได้

แนวปฏิบัติ

เคล็ดลับและแนวปฏิบัติที่ดี

  • ใช้ UUID v7 แทน v4 เมื่อต้องการ sortable ID ใน database เพราะเรียงตามเวลาได้โดยไม่ต้อง index เพิ่ม
  • เก็บ UUID เป็น binary(16) ในฐานข้อมูลแทน varchar(36) เพื่อประหยัดพื้นที่ storage ได้ 60%
  • อย่าใช้ UUID v1 ใน public API เพราะสามารถดึง MAC address และเวลาสร้างออกมาได้ เสี่ยงด้าน security
  • ใช้ lowercase format เป็นมาตรฐานตาม RFC 4122 เพื่อความสอดคล้องในระบบ
  • สร้าง UUID หลายตัวพร้อมกันด้วยเครื่องมือนี้เมื่อต้องเตรียม test data หรือ seed database

หลีกเลี่ยง

ข้อผิดพลาดที่พบบ่อย

  • ใช้ Math.random() สร้าง UUID เอง ซึ่งไม่ cryptographically secure และอาจซ้ำได้ ควรใช้ crypto.randomUUID()
  • เก็บ UUID เป็น string ใน database โดยไม่สร้าง index ทำให้ query ช้ามากเมื่อข้อมูลเยอะ
  • ใช้ UUID เป็น short URL หรือ user-facing ID ซึ่งยาวเกินไป ควรใช้ NanoID หรือ short hash แทน
  • สับสนระหว่าง UUID v4 กับ v1 ใน distributed system โดยไม่เข้าใจ trade-off ระหว่าง randomness กับ time-ordering

เปรียบเทียบ

เปรียบเทียบกับเครื่องมืออื่น

UUID Generator ของเราใช้ crypto.randomUUID() ที่ built-in ในเบราว์เซอร์ ปลอดภัยระดับ cryptographic ต่างจากเครื่องมือบางตัวที่ใช้ Math.random() ซึ่งไม่ปลอดภัย

เมื่อเทียบกับ command-line อย่าง uuidgen หรือ library เช่น uuid npm package เครื่องมือนี้ไม่ต้องติดตั้งอะไร สร้างได้ทีละหลายตัว และคัดลอกได้ทันที เหมาะสำหรับ developer ที่ต้องการ UUID เร็วๆ

FAQ

คำถามที่พบบ่อย

01 UUID v4 จะซ้ำกันได้ไหม?

โอกาสซ้ำต่ำมาก UUID v4 มี 122 บิตสุ่ม หมายความว่าต้องสร้าง UUID ประมาณ 2.7 ล้านล้านตัว (2.7 × 10¹⁸) ถึงจะมีโอกาสซ้ำ 50% ถือว่าแทบเป็นไปไม่ได้ในทางปฏิบัติ

02 UUID กับ GUID ต่างกันไหม?

UUID และ GUID เป็นสิ่งเดียวกัน UUID เป็นชื่อมาตรฐาน (RFC 4122) ส่วน GUID เป็นชื่อที่ Microsoft ใช้

03 ควรใช้ UUID v4 หรือ v7?

ถ้าต้องการความสุ่มล้วนๆ ใช้ v4 ถ้าต้องการเรียงตามเวลา (time-ordered) ใช้ v7 ซึ่งเหมาะกว่าสำหรับ database index

04 UUID สามารถถอดรหัสกลับได้ไหม?

UUID v4 ไม่สามารถถอดรหัสกลับได้เพราะสร้างจากตัวเลขสุ่ม ส่วน UUID v1 สามารถดึง timestamp และ MAC address ออกมาได้

05 ข้อมูลถูกส่งไปเซิร์ฟเวอร์ไหม?

ไม่ UUID สร้างจาก crypto.randomUUID() ในเบราว์เซอร์ของคุณโดยตรง ไม่มีการส่งข้อมูลออกไป

06 UUID v4 เหมาะกับการเป็น primary key ในฐานข้อมูลไหม?

ใช้ได้แต่มีข้อเสีย UUID v4 เป็น random ทำให้ B-tree index กระจาย ส่ง INSERT ช้ากว่า sequential ID แนะนำ UUID v7 ที่ time-ordered สำหรับ high-write database

07 NanoID กับ UUID ต่างกันอย่างไร?

NanoID สั้นกว่า (21 ตัวอักษร vs 36 ตัว) และ URL-safe โดย default แต่ไม่ใช่มาตรฐาน RFC เหมาะสำหรับ short ID ส่วน UUID เป็นมาตรฐานสากลที่ทุกระบบรองรับ

08 สามารถใช้ UUID เป็น API key ได้ไหม?

ไม่แนะนำ UUID v4 มี 122 bit entropy ซึ่งเพียงพอด้าน randomness แต่ไม่มี prefix ทำให้ revoke ยาก ควรใช้ format เฉพาะที่มี prefix และ checksum แทน

อ้างอิง

  1. RFC 4122 — A Universally Unique IDentifier (UUID) URN Namespace
  2. RFC 9562 — Universally Unique IDentifiers (UUIDs) — UUID v7
  3. MDN Web Docs — crypto.randomUUID()

UUID ที่สร้างจากเครื่องมือนี้ใช้ crypto.randomUUID() ซึ่งเป็น cryptographically secure random number generator เหมาะสำหรับใช้งานทั่วไป

นักพัฒนา

เครื่องมือคำนวณฟรีอื่น ๆ ที่คุณอาจสนใจ

ดูทั้งหมดในหมวดนี้

ต้องการเครื่องมือคำนวณสำหรับธุรกิจของคุณ?

ReSuMeYaDev รับพัฒนาเว็บไซต์ เครื่องมือคำนวณ และระบบภายในตามความต้องการ — Laravel, Vue, Nuxt, Go, Rust