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 | ขนาด |
|---|---|---|
| Hello | SGVsbG8= | 5 ไบต์ → 8 ตัวอักษร |
| สวัสดี | 4Liq4Lin4Lix4Liq4LiU4Li1 | 18 ไบต์ → 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 เมื่อไร
- เหมาะ: ไอคอน SVG เล็ก ๆ, รูปพื้นหลังไม่กี่กิโลไบต์, ฟอนต์ไอคอน — ประหยัดการเรียกไฟล์เพิ่มหนึ่งครั้ง
- ไม่เหมาะ: รูปถ่ายหรือไฟล์ใหญ่ เพราะนอกจากจะบวมขึ้น 33% แล้ว เบราว์เซอร์ยังแคชแยกไม่ได้ ทุกครั้งที่ CSS เปลี่ยน ผู้ใช้ต้องโหลดรูปใหม่ทั้งก้อน
คำถามที่พบบ่อย (FAQ)
ทำไมเข้ารหัสภาษาไทยในเว็บอื่นแล้วได้ตัวอักษรเพี้ยน
เพราะเว็บเหล่านั้นใช้ btoa() ซึ่งรับได้เฉพาะ Latin-1 เครื่องมือนี้แปลงเป็นไบต์ UTF-8 ก่อนเสมอ ภาษาไทยและอิโมจิจึงถอดกลับได้ตรงทุกตัว
Base64 เป็นการเข้ารหัสลับหรือไม่
ไม่ใช่ ใครก็ถอดกลับได้โดยไม่ต้องมีกุญแจ ห้ามใช้เก็บข้อมูลลับ
ข้อมูลที่ใส่ถูกส่งขึ้นเซิร์ฟเวอร์หรือไม่
ไม่ ทั้งข้อความ ไฟล์ และโทเค็น JWT ประมวลผลในเบราว์เซอร์ของคุณทั้งหมด (อ่านนโยบายความเป็นส่วนตัว)
ถอด JWT ที่นี่ปลอดภัยไหม
โทเค็นไม่ถูกส่งออกไปไหน แต่การถอดดูไม่ใช่การตรวจลายเซ็น — บอกได้แค่ว่าข้างในเขียนอะไร ไม่ได้ยืนยันว่าโทเค็นของจริง
ไฟล์ใหญ่แค่ไหนถึงจะไหว
ไฟล์ระดับไม่กี่เมกะไบต์ทำงานได้ปกติ แต่เพราะแปลงในเบราว์เซอร์ ไฟล์ใหญ่มากอาจทำให้หน้าค้างชั่วครู่ แนะนำไม่เกิน 5 MB
เครื่องมืออื่นที่อาจได้ใช้
- JSON Formatter — จัดรูปแบบ ตรวจสอบ และซ่อม JSON พร้อมบอกจุดผิดเป็นภาษาไทย
- สุ่มรหัสผ่าน — สร้างรหัสผ่านที่เดายากพร้อมบอกระดับความปลอดภัย
- สแกน & อ่าน QR Code — อ่าน QR จากกล้องหรือไฟล์ภาพ
- แปลงไฟล์รูปภาพ — แปลงและย่อรูปในเครื่อง ไม่ต้องอัปโหลด
- ดูเครื่องมือทั้งหมดของ Thai Toolbox