🔐 ข้อความ · ไฟล์ · JWT

Base64 Encode / Decode

เข้ารหัสและถอดรหัส Base64 ที่ภาษาไทยและอิโมจิไม่พัง แปลงไฟล์เป็น Data URI และถอดดูเนื้อในของ JWT ได้ในหน้าเดียว — ทุกอย่างทำในเครื่องคุณเอง

ข้อความธรรมดา 0 B
Base64 0 B
พิมพ์ข้อความด้านซ้าย หรือวาง Base64 ด้านขวา แล้วอีกฝั่งจะแปลงให้ทันที

Base64 คืออะไร

Base64 คือวิธีแปลงข้อมูลไบนารีให้กลายเป็นตัวอักษรธรรมดา 64 ตัว (A–Z, a–z, 0–9, + และ /) เพื่อให้ส่งผ่านช่องทางที่รับได้แค่ข้อความอย่างอีเมล, URL, JSON หรือไฟล์ CSS ได้โดยข้อมูลไม่เพี้ยน

ทุก 3 ไบต์ของข้อมูลต้นฉบับจะกลายเป็นตัวอักษร Base64 4 ตัว ข้อมูลจึงใหญ่ขึ้นราว 33% เสมอ ถ้าไบต์สุดท้ายไม่ครบ 3 จะเติมเครื่องหมาย = ท้ายเพื่อบอกว่าขาดไปกี่ไบต์

ทำไมภาษาไทยถึงพังในเว็บอื่น

เว็บเข้ารหัส Base64 ส่วนใหญ่เรียกฟังก์ชัน btoa() ของเบราว์เซอร์ตรง ๆ ซึ่งรับได้เฉพาะอักขระ Latin-1 (รหัส 0–255) พอเจอภาษาไทยที่มีรหัสเกิน 255 จึงเกิดข้อผิดพลาดหรือได้ผลลัพธ์เพี้ยน

เครื่องมือนี้แปลงข้อความเป็นไบต์ UTF-8 ด้วยตัวเองก่อนเข้ารหัสเสมอ ภาษาไทย ภาษาญี่ปุ่น และอิโมจิจึงถอดกลับได้ครบทุกตัว ผลลัพธ์ที่ได้ตรงกับที่ภาษาโปรแกรมมาตรฐานให้ (ตรวจสอบเทียบกับ Buffer.from(text).toString("base64") ของ Node.js แล้ว)

ข้อความผลลัพธ์ Base64ขนาด
HelloSGVsbG8=5 ไบต์ → 8 ตัวอักษร
สวัสดี4Liq4Lin4Lix4Liq4LiU4Li118 ไบต์ → 24 ตัวอักษร
😀8J+YgA==4 ไบต์ → 8 ตัวอักษร

สังเกตว่าภาษาไทย 1 ตัวอักษรกิน 3 ไบต์ใน UTF-8 คำว่า “สวัสดี” 6 ตัวอักษรจึงเป็น 18 ไบต์ ไม่ใช่ 6

Base64 ไม่ใช่การเข้ารหัสลับ

เรื่องนี้สำคัญมาก: Base64 คือ “การแปลงรูปแบบ” ไม่ใช่ “การเข้ารหัสลับ” — ใครก็ถอดกลับได้ในไม่กี่วินาทีโดยไม่ต้องมีกุญแจอะไรเลย

อย่าใช้ Base64 ซ่อนรหัสผ่าน เลขบัตรประชาชน หรือข้อมูลลับ ถ้าต้องการความลับจริงต้องใช้การเข้ารหัสอย่าง AES พร้อมกุญแจที่เก็บแยกต่างหาก

URL-safe ต่างกันตรงไหน

ในชุดตัวอักษรมาตรฐานมี + / และ = ซึ่งทั้งสามตัวมีความหมายพิเศษใน URL (+ หมายถึงช่องว่าง, / คั่นเส้นทาง, = คั่นค่าพารามิเตอร์) มาตรฐาน RFC 4648 §5 จึงกำหนดชุดสำรองที่ใช้ - แทน + และ _ แทน / พร้อมตัด = ทิ้ง

รูปแบบนี้คือสิ่งที่ JWT ใช้ นั่นคือเหตุผลที่โทเค็น JWT วางใน URL ได้โดยไม่ต้อง escape อะไรเพิ่ม

ควรใช้ Data URI เมื่อไร

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

ทำไมเข้ารหัสภาษาไทยในเว็บอื่นแล้วได้ตัวอักษรเพี้ยน

เพราะเว็บเหล่านั้นใช้ btoa() ซึ่งรับได้เฉพาะ Latin-1 เครื่องมือนี้แปลงเป็นไบต์ UTF-8 ก่อนเสมอ ภาษาไทยและอิโมจิจึงถอดกลับได้ตรงทุกตัว

Base64 เป็นการเข้ารหัสลับหรือไม่

ไม่ใช่ ใครก็ถอดกลับได้โดยไม่ต้องมีกุญแจ ห้ามใช้เก็บข้อมูลลับ

ข้อมูลที่ใส่ถูกส่งขึ้นเซิร์ฟเวอร์หรือไม่

ไม่ ทั้งข้อความ ไฟล์ และโทเค็น JWT ประมวลผลในเบราว์เซอร์ของคุณทั้งหมด (อ่านนโยบายความเป็นส่วนตัว)

ถอด JWT ที่นี่ปลอดภัยไหม

โทเค็นไม่ถูกส่งออกไปไหน แต่การถอดดูไม่ใช่การตรวจลายเซ็น — บอกได้แค่ว่าข้างในเขียนอะไร ไม่ได้ยืนยันว่าโทเค็นของจริง

ไฟล์ใหญ่แค่ไหนถึงจะไหว

ไฟล์ระดับไม่กี่เมกะไบต์ทำงานได้ปกติ แต่เพราะแปลงในเบราว์เซอร์ ไฟล์ใหญ่มากอาจทำให้หน้าค้างชั่วครู่ แนะนำไม่เกิน 5 MB

เครื่องมืออื่นที่อาจได้ใช้