การเข้ารหัส Base64 คืออะไร?
Base64 เป็นรูปแบบการเข้ารหัสจากไบนารีเป็นข้อความที่แสดงข้อมูลไบนารีโดยใช้ชุดอักขระ ASCII ที่พิมพ์ได้ 64 ตัว ออกแบบมาเพื่อส่งข้อมูลไบนารีอย่างปลอดภัยผ่านระบบที่จัดการเฉพาะข้อความ เช่น อีเมล (MIME), HTTP header และ XML ชื่อ "Base64" มาจากอักขระ 64 ตัวที่ใช้ในตัวอักษรการเข้ารหัส
การเข้ารหัสทำงานโดยนำอินพุต 3 ไบต์ (24 บิต) มาแบ่งเป็น 4 กลุ่มละ 6 บิต ค่า 6 บิตแต่ละค่าจะถูกแมปกับตัวอักษรหนึ่งตัวในตัวอักษร Base64 หากความยาวของอินพุตไม่เป็นจำนวนเต็มคูณของสาม จะมีการเพิ่มอักขระ padding (=) เพื่อให้ความยาวเอาต์พุตเป็นจำนวนเต็มคูณของสี่ ผลลัพธ์คือสตริงที่มีขนาดใหญ่กว่าข้อมูลต้นฉบับประมาณ 33% แต่ปลอดภัยสำหรับการส่งผ่านในรูปแบบข้อความธรรมดา
ทำไมต้องใช้เครื่องมือนี้?
ตัวเข้ารหัสนี้จัดการข้อความ Unicode ได้อย่างถูกต้อง รองรับทั้งตัวแปรมาตรฐานและ URL-safe และเข้ารหัสทั้งหมดในเบราว์เซอร์ของคุณ — ข้อมูลของคุณไม่เคยออกจากเครื่องของคุณ
⚡การเข้ารหัสทันที
ผลลัพธ์ปรากฏขณะที่คุณพิมพ์ ไม่มีปุ่มให้คลิก ไม่ต้องรอการตอบสนองจากเซิร์ฟเวอร์
🔗สลับ URL-safe
สลับระหว่างการเข้ารหัสมาตรฐาน (+/) และ URL-safe (-_) ด้วยการคลิกเพียงครั้งเดียว การเติมจะถูกลบออกโดยอัตโนมัติสำหรับตัวแปร URL-safe
🔒ทำงานฝั่งไคลเอนต์ทั้งหมด
การเข้ารหัสทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณในเครื่องโดยใช้ API btoa ดั้งเดิมและ TextEncoder ไม่มีอะไรถูกส่งไปยังเซิร์ฟเวอร์ใดๆ
🎛️รองรับ Unicode
จัดการ Unicode เต็มรูปแบบได้อย่างถูกต้อง รวมถึงอีโมจิ อักขระ CJK และข้อความ UTF-8 ใดๆ โดยใช้ encodeURIComponent ก่อนเข้ารหัส
วิธีใช้ตัวเข้ารหัส Base64 ออนไลน์นี้
ไม่ต้องมีบัญชี ไม่ต้องติดตั้ง ไม่ต้องอัปโหลด — วางข้อความแล้วผลลัพธ์ที่เข้ารหัสจะปรากฏทันที
- 1
วางหรือพิมพ์ข้อความของคุณ
คลิกที่ช่องอินพุตและวางข้อความใดก็ได้ — สตริงธรรมดา, JSON payload, API key, ที่อยู่อีเมล หรือเนื้อหา UTF-8 ใดก็ตาม การเข้ารหัสจะอัปเดตแบบสดขณะที่คุณพิมพ์
- 2
เลือกรูปแบบของคุณ
เลือก Standard (RFC 4648) สำหรับ MIME, HTTP Basic Auth และการใช้งานทั่วไป เลือก URL-safe สำหรับ JWT token, พารามิเตอร์ query string, ชื่อไฟล์ และบริบทใดก็ตามที่ + หรือ / จะทำให้การแยกวิเคราะห์ URL เสียหาย
- 3
คัดลอกผลลัพธ์
คลิก Copy เพื่อส่งสตริง Base64 ไปยังคลิปบอร์ดด้วยคลิกเดียว ผลลัพธ์พร้อมสำหรับการวางลงในโค้ด ไฟล์ config หรือ API request ของคุณโดยตรง
- 4
ใช้งานในแอปพลิเคชันของคุณ
วางสตริงที่เข้ารหัสไว้ที่ใดก็ตามที่ต้องการ — Authorization header, data URI, JSON field, ตัวแปรสภาพแวดล้อม หรือ Kubernetes secret สำหรับผลลัพธ์ URL-safe padding จะถูกลบออกแล้ว
ตัวอักษร Base64
Base64 ใช้อักขระ 64 ตัว ได้แก่ ตัวพิมพ์ใหญ่ A–Z (ค่า 0–25), ตัวพิมพ์เล็ก a–z (26–51), ตัวเลข 0–9 (52–61) และอักขระพิเศษ 2 ตัวสำหรับค่า 62 และ 63 ตัวแปรมาตรฐาน RFC 4648 ใช้ + และ /; ตัวแปร URL-safe แทนที่ด้วย - และ _ เพื่อหลีกเลี่ยงความขัดแย้งใน URL และชื่อไฟล์
| A–Z | 0–25 | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| a–z | 26–51 | abcdefghijklmnopqrstuvwxyz |
| 0–9 | 52–61 | 0123456789 |
| +, / | 62–63 | RFC 4648 มาตรฐาน — หลีกเลี่ยงใน URL และชื่อไฟล์ |
| -, _ | 62–63 | ตัวแปร URL-safe (RFC 4648 §5) — ปลอดภัยใน URL และชื่อไฟล์ |
Base64 มาตรฐาน เทียบกับ URL-safe
ตัวอักษร Base64 มาตรฐานใช้ + และ / ซึ่งเป็นอักขระพิเศษใน URL และเส้นทางไฟล์ ตัวแปร URL-safe แทนที่ด้วย - และ _ และมักละเว้นอักขระเติม = ใช้การเข้ารหัส URL-safe สำหรับ token JWT, ข้อมูลในสตริงคิวรี, ชื่อไฟล์ และบริบทใดๆ ที่ + หรือ / อาจถูกตีความผิด
| อินพุต | มาตรฐาน | URL-safe |
|---|
| Man | TWFu | TWFu |
| Hello | SGVsbG8= | SGVsbG8 |
| A | QQ== | QQ |
| 1+1=2 | MSsxPTI= | MSsxPTI |
กรณีการใช้งานทั่วไป
ไฟล์แนบอีเมล (MIME)
SMTP ถูกออกแบบมาสำหรับข้อความ ASCII 7 บิต การเข้ารหัส Base64 ถูกใช้โดยมาตรฐาน MIME เพื่อฝังไฟล์แนบไบนารี (รูปภาพ, PDF, ไฟล์ปฏิบัติการ) อย่างปลอดภัยในข้อความอีเมล
URI ข้อมูล
ฝังรูปภาพ ฟอนต์ และสินทรัพย์อื่นๆ ลงใน HTML หรือ CSS โดยตรงโดยใช้ URI ข้อมูล: data:image/png;base64,... — ขจัดคำขอ HTTP เพิ่มเติมสำหรับทรัพยากรขนาดเล็ก
เพย์โหลด API
API REST มักต้องการให้ฟิลด์ไบนารี (การอัปโหลดไฟล์ คีย์การเข้ารหัส ใบรับรอง) ถูกเข้ารหัส Base64 เมื่อฝังใน JSON เนื่องจาก JSON ไม่มีประเภทไบนารี
ไฟล์การตั้งค่า
ความลับ Kubernetes, ตัวแปรสภาพแวดล้อม และการตั้งค่า CI/CD มักเก็บความลับไบนารีและใบรับรองเป็นสตริง Base64 เพื่อหลีกเลี่ยงปัญหาการ escape
HTTP Basic Auth
HTTP header Authorization: Basic เข้ารหัสข้อมูลประจำตัวเป็น Base64(ชื่อผู้ใช้:รหัสผ่าน) นี่ไม่ใช่การเข้ารหัส — มันเพียงให้การเข้ารหัสสำหรับการส่งผ่านใน header
Token JWT
JSON Web Token ใช้ URL-safe Base64 (base64url) เพื่อเข้ารหัสส่วน header และ payload ทำให้ token ปลอดภัยที่จะใช้ใน URL และ HTTP header โดยไม่ต้อง escape
เมื่อใดที่ไม่ควรใช้ Base64
Base64 คือการเข้ารหัสสำหรับการส่งข้อมูล ไม่ใช่กลไกความปลอดภัย ต่อไปนี้คือการใช้งานผิดวัตถุประสงค์ที่พบบ่อยที่สุดซึ่งก่อให้เกิดปัญหาจริงในระบบ production:
✕ไม่ใช่สำหรับความปลอดภัยหรือการเข้ารหัส
Base64 สามารถย้อนกลับได้อย่างง่ายดาย — ไม่ต้องใช้กุญแจหรือรหัสผ่านในการถอดรหัส ทุกคนที่เห็นสตริง Base64 สามารถถอดรหัสได้ในไม่กี่วินาที อย่าใช้ Base64 เป็นตัวแทนของการเข้ารหัส, การแฮช หรือการควบคุมการเข้าถึง
✕ไม่ใช่สำหรับการบีบอัด
Base64 เพิ่มขนาดผลลัพธ์ประมาณ 33% ซึ่งตรงข้ามกับการบีบอัด อย่าใช้เพื่อลดขนาด payload — ใช้ gzip, Brotli หรือ zstd แทน
✕ไม่ใช่สำหรับการจัดเก็บไฟล์ไบนารี
การจัดเก็บไฟล์ไบนารีขนาดใหญ่เป็น Base64 ในฐานข้อมูลหรือ JSON API จะสิ้นเปลืองพื้นที่จัดเก็บและหน่วยความจำอย่างมาก ใช้ object storage (S3, R2, Cloudflare) และให้บริการไฟล์ไบนารีโดยตรง
ตัวอย่างโค้ด
วิธีเข้ารหัสสตริงเป็น Base64 ในภาษาและสภาพแวดล้อมยอดนิยม:
JavaScript (browser)
// Standard Base64
const encoded = btoa(unescape(encodeURIComponent(text)))
// URL-safe Base64 (no padding)
const urlSafe = btoa(unescape(encodeURIComponent(text)))
.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '')
Node.js
// Standard
const encoded = Buffer.from(text).toString('base64')
// URL-safe
const urlSafe = Buffer.from(text).toString('base64url')Python
import base64
# Standard
encoded = base64.b64encode(text.encode()).decode()
# URL-safe (no padding)
url_safe = base64.urlsafe_b64encode(text.encode()).decode().rstrip('=')CLI (bash)
# Standard
echo -n "Hello, World!" | base64
# URL-safe (requires sed)
echo -n "Hello, World!" | base64 | tr '+/' '-_' | tr -d '='
ตัวเข้ารหัส Base64 ออนไลน์ vs. เครื่องมืออื่น ๆ
มีตัวเข้ารหัส Base64 ออนไลน์หลายตัว จุดแตกต่างหลักสำหรับการใช้งานประจำวันของนักพัฒนาคือความเป็นส่วนตัว ความถูกต้อง และการรองรับรูปแบบต่าง ๆ
ส่วนตัวอย่างสมบูรณ์ — ไม่มีเซิร์ฟเวอร์
ตัวเข้ารหัสนี้ทำงานทั้งหมดในเบราว์เซอร์ของคุณโดยใช้ API btoa ในตัวและ TextEncoder ข้อความของคุณจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ใด ๆ — ปลอดภัยสำหรับ API key, token และข้อมูลลับ
การเข้ารหัส Unicode ที่ถูกต้อง
เครื่องมือ Base64 ออนไลน์หลายตัวทำให้อินพุตที่ไม่ใช่ ASCII เสียหายโดยไม่มีการแจ้งเตือน เครื่องมือนี้จัดการ Unicode ทั้งหมดได้อย่างถูกต้อง — emoji, CJK, อาหรับ และข้อความ UTF-8 ทั้งหมด — โดยเข้ารหัสเป็น UTF-8 byte ก่อน
ทั้งสองรูปแบบในที่เดียว
เครื่องมือส่วนใหญ่มีเฉพาะ Base64 มาตรฐาน ตัวเข้ารหัสนี้มีทั้งรูปแบบมาตรฐาน (+/) และ URL-safe (-_) พร้อมการจัดการ padding อัตโนมัติ — ไม่ต้องแทนที่อักขระด้วยตนเอง
คำถามที่พบบ่อย
Base64 เหมือนกับการเข้ารหัสหรือไม่?
ไม่ใช่ Base64 เป็นรูปแบบการเข้ารหัส ไม่ใช่การเข้ารหัสลับ ใครก็สามารถย้อนกลับได้อย่างง่ายดาย — ไม่ต้องใช้คีย์หรือรหัสผ่านในการถอดรหัส อย่าใช้ Base64 เพื่อปกป้องข้อมูลที่ละเอียดอ่อน ใช้การเข้ารหัสที่เหมาะสม (AES, RSA) สำหรับวัตถุประสงค์นั้น
ทำไมผลลัพธ์ Base64 ลงท้ายด้วย = หรือ ==?
Base64 ทำงานในกลุ่มละ 3 ไบต์ (24 บิต) สร้างอักขระ Base64 จำนวน 4 ตัว หากความยาวอินพุตไม่ใช่ผลคูณของ 3 จะเพิ่มอักขระเติม (=) เพื่อให้ความยาวผลลัพธ์เป็นผลคูณของ 4 = หนึ่งตัวหมายความว่ากลุ่มสุดท้ายมี 2 ไบต์ สองตัวหมายความว่ามี 1 ไบต์
URL-safe Base64 คืออะไร?
URL-safe Base64 (กำหนดไว้ใน RFC 4648 §5) แทนที่ + ด้วย - และ / ด้วย _ เพื่อให้สตริงที่เข้ารหัสสามารถใช้ใน URL ชื่อไฟล์ และ HTTP header โดยไม่ต้องเข้ารหัสเปอร์เซ็นต์ โดยปกติจะละเว้นอักขระเติม = ด้วย
Base64 เพิ่มขนาดไฟล์มากแค่ไหน?
การเข้ารหัส Base64 เพิ่มขนาดประมาณ 33% ทุกๆ 3 ไบต์อินพุตกลายเป็น 4 อักขระผลลัพธ์ สำหรับไฟล์ 1 MB ผลลัพธ์ Base64 จะมีขนาดประมาณ 1.37 MB
ฉันสามารถเข้ารหัสไฟล์ไบนารีด้วยเครื่องมือนี้ได้ไหม?
เครื่องมือนี้เข้ารหัสสตริงข้อความ (ซึ่งจะถูกปฏิบัติเป็นไบต์ UTF-8) เพื่อเข้ารหัสไฟล์ไบนารีตามอำเภอใจ (รูปภาพ PDF ไฟล์ปฏิบัติการ) ให้ใช้ไลบรารีภาษาหรือเครื่องมือ CLI ที่อ่านไบต์ดิบ
ความแตกต่างระหว่าง btoa() และ Buffer.from().toString('base64') คืออะไร?
btoa() เป็นฟังก์ชันในตัวเบราว์เซอร์ที่ทำงานกับสตริง Latin-1 มันจะ throw error สำหรับอักขระที่ไม่ใช่ ASCII เว้นแต่คุณจะเข้ารหัสเป็นไบต์ UTF-8 ก่อน (โดยใช้ encodeURIComponent) Buffer.from(text).toString('base64') ใน Node.js จัดการสตริง UTF-8 โดยตรงและเป็นวิธีที่แนะนำฝั่งเซิร์ฟเวอร์
Base64 ทำงานกับไฟล์ไบนารีได้หรือไม่?
เครื่องมือนี้เข้ารหัสสตริงข้อความเป็น UTF-8 byte ลงใน Base64 สำหรับไฟล์ไบนารี (รูปภาพ, PDF, ไฟล์ปฏิบัติการ) ให้ใช้เครื่องมือ CLI หรือไลบรารีภาษาที่อ่าน byte ดิบ ในเบราว์เซอร์ ให้ใช้ FileReader.readAsDataURL() ซึ่งจะคืน data URI ที่มีเนื้อหาไบนารีที่เข้ารหัสด้วย Base64
มีขีดจำกัดขนาดสำหรับการเข้ารหัสหรือไม่?
เครื่องมือนี้ทำงานทั้งหมดในเบราว์เซอร์โดยไม่มีขีดจำกัดฝั่งเซิร์ฟเวอร์ ขีดจำกัดในทางปฏิบัติขึ้นอยู่กับหน่วยความจำเบราว์เซอร์ของคุณ สำหรับอินพุตขนาดใหญ่มาก (เกินสองสามเมกะไบต์) เครื่องมือ CLI เช่น base64 (Linux/macOS) หรือ certutil -encode (Windows) มีประสิทธิภาพมากกว่า