เข้ารหัสและถอดรหัส Base64 ทันทีด้วย Base64 Encoder
แปลงข้อความเป็น Base64 และถอดกลับได้ทันที รองรับ UTF-8, โหมด URL-safe, แปลงแบบ live และจัดการ padding อัตโนมัติ — ทำงานในเบราว์เซอร์ทั้งหมด ไม่ต้องสมัครสมาชิก
Table of Contents
API, JWT, data URI และอีเมลแบบ MIME ล้วนพูดภาษา Base64 คุณวางสตริงแล้วต้องการค่าที่เข้ารหัสสำหรับ header หรือได้รับก้อนข้อความที่ดูเหมือนสัญญาณรบกวนจนกว่าจะถอดรหัส Base64 Encoder ทำให้รอบนั้นเป็นการแปลงแบบ live ในเบราว์เซอร์: พิมพ์หรือวางด้านหนึ่ง อีกด้านอัปเดตทันที
คู่มือนี้สรุปว่า Base64 คืออะไร ทำไม btoa() ในเบราว์เซอร์ไม่พอสำหรับภาษาไทยหรืออิโมจิ เมื่อไหร่ควรเปิดโหมด URL-safe และตัวถอดรหัสซ่อม padding กับช่องว่างอย่างไรให้สตริงจากโลกจริงยังถอดได้ ไม่มีการอัปโหลด Token, API key และโน้ตส่วนตัวอยู่บนเครื่องคุณ
ไม่ว่าจะยัดค่าลง JSON field, ใส่ token ใน query string หรือตรวจว่า data: URI เก็บอะไรไว้ สองโหมดเดียวกันครอบคลุมทั้ง encode และ decode
ทำไมต้องใช้ Base64 Encoder?
- UTF-8 เป็นค่าเริ่มต้น ไม่ใช่ส่วนเสริม TextEncoder และ TextDecoder รองรับภาษาไทย, CJK, อิโมจิ และ combining marks คำสั่งคลาสสิก btoa('สวัสดี') จะ throw แต่เครื่องมือนี้ไม่
- โหมด URL-safe สำหรับลิงก์และชื่อไฟล์ สลับ +// เป็น -/_ และตัด padding เพื่อให้ผลลัพธ์อยู่ใน query parameter โดยไม่ต้อง escape เพิ่ม
- แปลงแบบ live ไม่มีปุ่ม Encode ที่ต้องกด ผลลัพธ์อัปเดตตามที่พิมพ์ พร้อมนับจำนวนตัวอักษรทั้งสองช่อง
- ถอดรหัสแบบยืดหยุ่น ช่องว่างและ = ที่หายไปถูกปรับให้ครบ สตริงแบบ URL-safe ถอดได้แม้ลืมสลับโหมด
- Swap เพื่อกลับทิศทาง คลิกครั้งเดียวย้ายผลลัพธ์ไปเป็นอินพุตและสลับ encode/decode เพื่อตรวจ round trip
- เป็นส่วนตัวโดยออกแบบ การเข้ารหัสรันในแท็บ ตัวอย่างที่เป็นความลับไม่ถูกส่งไปเซิร์ฟเวอร์
คุณสมบัติหลัก
| คุณสมบัติ | ทำอะไร |
|---|---|
| Encode | แปลงข้อความ UTF-8 ใดก็ได้เป็น Base64 มาตรฐาน (A–Z a–z 0–9 + / บวก padding =) |
| Decode | แปลงสตริง Base64 กลับเป็นข้อความ รวมถึงชุดตัวอักษรแบบ URL-safe |
| สวิตช์ URL-safe | แทน + ด้วย -, / ด้วย _ และตัด = ท้ายสตริง ใช้ได้เฉพาะโหมด Encode |
| ตัวอย่างแบบ live | เอาต์พุตอัปเดตทุกครั้งที่พิมพ์ ทั้งสองช่องแสดงจำนวนตัวอักษร |
| Swap | ส่งผลลัพธ์กลับเป็นอินพุตและสลับโหมดเพื่อตรวจ round trip |
| Copy / Clear | คัดลอกผลลัพธ์หรือล้างอินพุตโดยไม่ต้องรีโหลดหน้า |
- Encode ใช้ TextEncoder แล้วค่อย btoa กับไบต์ดิบ ดังนั้นสตริงที่มีอักขระนอก Latin-1 ยังได้ Base64 ที่ถูกต้อง
- Decode รับทั้งชุดตัวอักษรมาตรฐานและ URL-safe ตัดช่องว่างภายใน และเติม padding ให้ความยาวเป็นพหุคูณของ 4 ก่อน atob
- ความยาวไม่ถูกต้อง (เศษ 1 หลังกฎ padding) หรืออักขระนอกชุดจะแสดงเป็นข้อผิดพลาดชัดเจน แทนกล่องว่างเงียบ ๆ
วิธีใช้งาน
- เปิด Base64 Encoder แล้วปล่อย Mode เป็น Encode (ค่าเริ่มต้น)
- วางหรือพิมพ์ข้อความธรรมดา ผลลัพธ์ Base64 ปรากฏด้านขวาตามที่พิมพ์ คัดลอกเมื่อต้องใส่ในไฟล์คอนฟิกหรือ request body
- ต้องการสตริงที่อยู่ใน URL ได้ไหม เปิด URL-safe Base64 ชุดตัวอักษรเปลี่ยนเป็น - และ _ และตัด padding
- เมื่อจะถอดรหัส สลับ Mode เป็น Decode วาง Base64 (มาตรฐานหรือ URL-safe มีหรือไม่มี padding) แล้วอ่านข้อความที่คืนมา ใช้ Swap ถ้าเพิ่ง encode แล้วอยากยืนยันทิศทางกลับ
- กด Copy เพื่อคัดลอก หรือ Clear เพื่อเริ่มใหม่ จำนวนตัวอักษรช่วยจับการวางที่ขาดตอน
ทำความเข้าใจ Base64
Base64 แมปทุก 3 ไบต์ของอินพุต (24 บิต) เป็น 4 ตัวอักษรจากชุด 64 สัญลักษณ์ แต่ละตัวแทน 6 บิต ถ้าความยาวอินพุตไม่เป็นพหุคูณของ 3 ตัวเข้ารหัสจะเติม = เพื่อให้ความยาวเอาต์พุตเป็นพหุคูณของ 4 นั่นคือเหตุผลที่สตริงสั้นอย่าง Hi กลายเป็น SGk= — เครื่องหมายเท่ากับคือ padding ไม่ใช่ข้อมูล
Base64 มาตรฐานใช้ A–Z, a–z, 0–9, + และ / สองตัวท้ายถูกสงวนใน URL: + อาจถูกมองเป็นช่องว่างใน query string และ / คือตัวแบ่ง path URL-safe Base64 (RFC 4648 §5) แทนที่ด้วย - และ _ และมักตัด padding JWT payload, OAuth token บางแบบ และบลอบที่ต้องใช้เป็นชื่อไฟล์ใช้ชุดนี้ พาธถอดรหัสของเครื่องมือนี้รับทั้งสองชุด คุณจึงไม่ต้องจำว่าได้มาแบบไหน
การเข้ารหัสไม่ใช่การเข้ารหัสลับ (encryption) ใครก็ถอด Base64 ได้ ใช้เพื่อทำให้ไบนารีกลายเป็นข้อความที่ปลอดภัย ไม่ใช่เพื่อซ่อนรหัสผ่าน ถ้าต้องการแฮชจริง ๆ ให้ใช้เครื่องมือแฮชโดยเฉพาะ ส่วนความลับที่ต้องถอดกลับได้ยังต้องใช้ cipher จริงและคีย์ที่คุณไม่ควรวางในฟอร์มสาธารณะ
กับดัก JavaScript ที่พบบ่อย: btoa() และ atob() ทำงานกับไบต์ Latin-1 ไม่ใช่ code point ของ Unicode ส่งสตริงที่มีอักขระสูงกว่า U+00FF จะ throw แพทเทิร์นที่ถูกคือเข้ารหัสเป็นไบต์ UTF-8 ก่อน แล้วค่อย Base64 ไบต์เหล่านั้น — ซึ่งคือสิ่งที่ encoder นี้ทำ การถอดรหัสกลับด้วย TextDecoder ประโยคภาษาไทยจึง round-trip โดยไม่เพี้ยน (mojibake)
ช่องว่างภายในก้อน Base64 ตามสเปกถือว่าไม่ถูกต้อง แต่อีเมลและล็อกมักตัดบรรทัดที่ 76 ตัวอักษร (MIME) ตัวถอดรหัสตัดช่องว่างก่อน parse ดังนั้นการวางข้อความที่ถูกห่อบรรทัดยังใช้ได้
กรณีใช้งานจริง
JSON และ HTTP payload
API มักคาดหวังฟิลด์ไบนารีเล็ก ๆ เป็นสตริง Base64 ใน JSON เข้ารหัสค่าดิบในเครื่อง วางลง body แล้วส่ง เมื่อ webhook คืนฟิลด์ Base64 ให้ถอดที่นี่ก่อนเขียน parser เพราะการแปลงเป็นแบบ live คุณปรับต้นทางแล้วดูความยาวที่เข้ารหัสเปลี่ยนได้ — มีประโยชน์เมื่อเกตเวย์จำกัดขนาด
Token ใน query string
สตริง Base64 มาตรฐานในพารามิเตอร์ ?token= จะพังที่ + และ / เปิดโหมด URL-safe คัดลอกผลลัพธ์ แล้ววางใน URL ตอนรับกลับ วางสิ่งที่เซิร์ฟเวอร์ส่งมาได้เลย ตัวถอดรหัสแมป -/_ กลับเป็น +// และคืน padding
ตรวจ data URI และชิ้นคอนฟิก
data:text/plain;base64,... คือ media type บวก payload Base64 คัดลอกส่วนหลังเครื่องหมายจุลภาค สลับเป็น Decode แล้วอ่านข้อความต้นทาง เวิร์กโฟลว์เดียวกันใช้กับตัวอย่าง .env, Kubernetes secret ที่เป็น Base64 (ไม่ได้เข้ารหัสลับ) และตัวแปร CI ที่อยากดูโดยไม่ต้องติดตั้งคำสั่ง base64 บนแล็ปท็อป
เนื้อหา Unicode และ fixture งาน i18n
ทีม QA มักต้องการค่า Base64 ที่รู้แน่นอนของประโยคไทยหรือสคริปต์ผสม เพื่อยืนยันว่า API คง UTF-8 เข้ารหัส fixture ที่นี่ แล้วเก็บสตริงที่คาดหวังไว้ จะได้เลี่ยงกับดัก btoa ที่โผล่เฉพาะชุดเทสต์ Latin-1
แนวทางปฏิบัติที่ดี
- อย่ามอง Base64 เป็นความลับ มันคือ encoding สมมติว่าใครเห็นสตริงก็กู้ต้นฉบับได้
- เลือก URL-safe เมื่อสตริงออกจาก JSON body Query string, path และชื่อไฟล์คือจุดที่ + กับ / พังบ่อยที่สุด
- เก็บ padding ตอนจัดเก็บ ตัดตอนใส่ URL ฐานข้อมูลและ MIME คาดหวัง = ส่วนสคีมา URL จำนวนมากไม่ต้องการ ถอดที่นี่ได้ทั้งสองแบบ
- Round-trip สักครั้ง Encode แล้ว Swap ยืนยันว่าข้อความตรงกัน จะจับการคัดลอกขาดหรือ newline ปน
- ดูจำนวนตัวอักษร Decode ที่สั้นกว่าที่คิดมาก มักแปลว่าวางไม่ครบหรือยังมีเครื่องหมายคำพูดหุ้มอยู่
- เข้ารหัสความลับในเบราว์เซอร์ เครื่องมือนี้ไม่ส่งบัฟเฟอร์ออกไป นั่นคือจุดของ encoder ฝั่งไคลเอนต์
ต้องการเข้ารหัสสตริงตอนนี้ไหม เปิด Base64 Encoder วางข้อความ แล้วคัดลอกผลลัพธ์ โหมด URL-safe อยู่แค่สวิตช์เดียวเมื่อปลายทางเป็นลิงก์ ไม่ใช่ JSON field
Related Tools You Might Like:
- URL Encoder — percent-encode อักขระสงวนสำหรับ query string และ path
- Hash Generator — แฮช SHA และ MD5 เมื่อต้องการความสมบูรณ์ของข้อมูล ไม่ใช่ encoding ที่ถอดกลับได้
- Image to Base64 Converter — แปลงไฟล์รูปเป็น data URI หรือสตริง Base64
เข้ารหัสให้สนุก!