ToolDeck

เครื่องมือเข้ารหัสไฟล์ Base64

เข้ารหัสไฟล์ใดก็ได้เป็น Base64: PDF, ZIP, รูปภาพ และอื่นๆ

วางไฟล์ใดก็ได้ที่นี่หรือคลิกเพื่ออัปโหลด

ทุกประเภทไฟล์: PDF, ZIP, รูปภาพ, ไฟล์ไบนารี

การเข้ารหัสไฟล์เป็น Base64 คืออะไร?

การเข้ารหัสไฟล์เป็น Base64 แปลงไฟล์ไบนารี — PDF, ZIP, รูปภาพ, ไฟล์ปฏิบัติการ, ฟอนต์, ไฟล์เสียง — ให้เป็นข้อความ ASCII ธรรมดาโดยใช้ชุดอักขระที่กำหนดในมาตรฐาน RFC 4648 ทุกสามไบต์ของข้อมูลไบนารีจะกลายเป็นอักขระ Base64 สี่ตัว สร้างการแสดงข้อมูลแบบข้อความที่ส่งผ่านช่องทางที่ออกแบบมาสำหรับข้อความเท่านั้น ได้แก่ เพย์โหลด JSON API, เอกสาร XML, เนื้อหาอีเมล, แอตทริบิวต์ HTML และตัวแปรสภาพแวดล้อม

ต่างจากการเข้ารหัสข้อความเป็น Base64 (ซึ่งทำงานกับสตริง) การเข้ารหัสไฟล์เป็น Base64 จะอ่านกระแสไบต์ดิบของไฟล์โดยไม่คำนึงถึงรูปแบบ ส่วนหัวไบนารีของ PDF, บล็อกบีบอัดของ ZIP และข้อมูลพิกเซลของ PNG ล้วนได้รับการจัดการเหมือนกัน: เป็นลำดับของออคเตตที่จะเข้ารหัสใหม่ ผลลัพธ์จะเป็น ASCII ที่ถูกต้องเสมอ ปลอดภัยสำหรับการฝังในที่ใดก็ตามที่รับอักขระที่พิมพ์ได้

ข้อแลกเปลี่ยนคือขนาด: ผลลัพธ์ Base64 มีขนาดใหญ่กว่าไฟล์ต้นฉบับประมาณ 33% สำหรับ PDF ขนาด 1 MB นั่นหมายความว่าข้อความ Base64 ประมาณ 1.33 MB ค่าใช้จ่ายนี้เป็นต้นทุนของการแทนไบต์ 8 บิตด้วยอักขระ 6 บิต และเป็นสิ่งที่หลีกเลี่ยงไม่ได้ในการเข้ารหัสนี้ — ไม่มีการนำไปใช้งานใดหลีกเลี่ยงได้ อย่างไรก็ตาม การเข้ารหัสไฟล์เป็น Base64 ยังคงเป็นวิธีมาตรฐานสำหรับการฝังข้อมูลไบนารีในรูปแบบข้อความเท่านั้น ตามที่ระบุใน MIME (RFC 2045), data URIs (RFC 2397) และ JSON Web Tokens (RFC 7519)

ทำไมต้องใช้เครื่องมือเข้ารหัสไฟล์เป็น Base64 นี้?

เครื่องมือนี้เข้ารหัสไฟล์เป็น Base64 โดยตรงในเบราว์เซอร์ของคุณโดยใช้ FileReader API ไม่มีไฟล์ใดถูกอัปโหลดไปยังเซิร์ฟเวอร์ — กระบวนการแปลงทั้งหมดเกิดขึ้นฝั่ง client ใน JavaScript

🛡
ประมวลผลโดยคำนึงถึงความเป็นส่วนตัว
ไฟล์ของคุณไม่ออกจากอุปกรณ์ FileReader API อ่านไฟล์เข้าสู่หน่วยความจำในเครื่อง และผลลัพธ์ Base64 ถูกสร้างขึ้นทั้งหมดในเบราว์เซอร์ ไม่มีการส่งคำขอทางเครือข่าย
ลากและวางได้ทันที
วางไฟล์ใดก็ได้ลงบนเครื่องมือแล้วดูผลลัพธ์ Base64 ทันที ไม่ต้องรออัปโหลด ไม่มีแถบความคืบหน้า ไม่มีขีดจำกัดขนาดไฟล์จากเซิร์ฟเวอร์
📁
รองรับทุกรูปแบบไฟล์
เข้ารหัส PDF, ZIP, รูปภาพ, ฟอนต์, ไฟล์เสียง, โมดูล WebAssembly หรือรูปแบบไบนารีอื่นใด เครื่องมือนี้จัดการทุกไฟล์เป็นกระแสไบต์ดิบ — รูปแบบไม่สำคัญ
🔒
ไม่ต้องสมัครบัญชี
ใช้เครื่องมือได้ทันทีโดยไม่ต้องลงทะเบียน เข้าสู่ระบบ หรือยอมรับคุกกี้ ผลลัพธ์พร้อมสำหรับการคัดลอกหรือดาวน์โหลดเป็นไฟล์ .b64.txt ด้วยคลิกเดียว

กรณีการใช้งานการเข้ารหัสไฟล์เป็น Base64

นักพัฒนา Frontend
ฝังไอคอนขนาดเล็ก ฟอนต์ หรือ SVG โดยตรงใน CSS หรือ HTML เป็น data URIs เพื่อลดคำขอ HTTP เพิ่มเติม ไอคอนขนาด 2 KB ที่ฝังเป็น Base64 ช่วยประหยัดการส่งข้อมูลไปกลับทางเครือข่ายที่จะเพิ่มความหน่วง 50-200 มิลลิวินาที
วิศวกร Backend
รวมไฟล์แนบในเพย์โหลด JSON API เมื่อโปรโตคอลการส่งข้อมูลไม่รองรับการอัปโหลดแบบ multipart เข้ารหัส PDF, รายงาน หรือเอกสารที่ลงนามก่อนส่งเป็นฟิลด์สตริงใน REST หรือ GraphQL responses
DevOps / โครงสร้างพื้นฐาน
จัดเก็บไฟล์การกำหนดค่าไบนารี (ใบรับรอง TLS, คีย์ SSH, ไฟล์ลิขสิทธิ์) เป็นสตริง Base64 ในตัวแปรสภาพแวดล้อม, Kubernetes Secrets หรือ Terraform tfvars ที่ไม่อนุญาตค่าไบนารีดิบ
วิศวกร QA / ทดสอบ
สร้างไฟล์ fixture Base64 สำหรับการทดสอบอัตโนมัติที่ตรวจสอบ endpoints การอัปโหลด การจัดการไฟล์แนบในอีเมล หรือ pipeline ประมวลผลเอกสาร โดยไม่ต้องจัดการไฟล์ไบนารีทดสอบใน version control
วิศวกรข้อมูล
จัดลำดับ binary blobs (Parquet metadata, Protobuf schemas, สินทรัพย์ไบนารีขนาดเล็ก) เป็น Base64 สำหรับจัดเก็บใน data catalogs ที่ใช้ JSON, ที่เก็บการกำหนดค่า หรือสคริปต์การย้ายข้อมูล
นักศึกษา / ผู้เรียน
สังเกตว่าไฟล์ไบนารีกลายเป็นข้อความได้อย่างไรโดยเข้ารหัสไฟล์ขนาดเล็กและตรวจสอบผลลัพธ์ เปรียบเทียบความยาว Base64 กับขนาดไฟล์ต้นฉบับเพื่อยืนยันค่าใช้จ่าย 33% ที่ระบุใน RFC 4648

ค่าใช้จ่ายด้านขนาดไฟล์ของ Base64

การเข้ารหัส Base64 เพิ่มขนาดข้อมูลหนึ่งในสาม ทุก 3 ไบต์ของข้อมูลขาเข้าจะสร้างอักขระขาออก 4 ตัว (แต่ละตัวแทน 6 บิต) อักขระเติม (=) จะถูกเพิ่มเมื่อความยาวข้อมูลขาเข้าไม่ใช่ทวีคูณของ 3 ตารางด้านล่างแสดงความสัมพันธ์ระหว่างขนาดไฟล์ต้นฉบับและขนาดผลลัพธ์หลังเข้ารหัส

ขนาดไฟล์ไบต์ดิบไบต์ Base64ค่าใช้จ่ายเพิ่มเติม
1 KB1,024 B1,368 B+33.3%
10 KB10,240 B13,656 B+33.4%
100 KB102,400 B136,536 B+33.3%
1 MB1,048,576 B1,398,104 B+33.3%
5 MB5,242,880 B6,990,508 B+33.3%
10 MB10,485,760 B13,981,016 B+33.3%

ข้อมูลอ้างอิง Data URI และ MIME Type

data URI ฝังเนื้อหาไฟล์โดยตรงใน HTML, CSS หรือ JavaScript โดยใช้รูปแบบ data:[MIME type];base64,[encoded data] MIME type บอกเบราว์เซอร์ว่าจะแปลไบต์ที่ถอดรหัสอย่างไร ด้านล่างคือนามสกุลไฟล์ทั่วไป MIME types ของพวกมัน และ data URI prefix ที่สอดคล้องกัน

นามสกุลMIME TypeData URI Prefix
.pdfapplication/pdfdata:application/pdf;base64,...
.zipapplication/zipdata:application/zip;base64,...
.pngimage/pngdata:image/png;base64,...
.jpgimage/jpegdata:image/jpeg;base64,...
.gifimage/gifdata:image/gif;base64,...
.svgimage/svg+xmldata:image/svg+xml;base64,...
.woff2font/woff2data:font/woff2;base64,...
.mp3audio/mpegdata:audio/mpeg;base64,...
.wasmapplication/wasmdata:application/wasm;base64,...
.binapplication/octet-streamdata:application/octet-stream;base64,...

ตัวอย่างโค้ด

ตัวอย่างโค้ดที่รันได้เหล่านี้แสดงวิธีอ่านไฟล์ไบนารีและเข้ารหัสเป็น Base64 ใน JavaScript, Python, Node.js, bash และ Go แต่ละตัวอย่างสร้าง Base64 มาตรฐาน (RFC 4648 Section 4) พร้อมการเติม

JavaScript (browser)
// Read a file from an <input> element and encode to Base64
const input = document.querySelector('input[type="file"]')
input.addEventListener('change', (e) => {
  const file = e.target.files[0]
  const reader = new FileReader()
  reader.onload = () => {
    const base64 = reader.result.split(',')[1]
    console.log(base64) // → "JVBERi0xLjQK..." (raw Base64, no data URI prefix)
  }
  reader.readAsDataURL(file)
})

// Convert a Blob to Base64 with async/await
async function blobToBase64(blob) {
  const buffer = await blob.arrayBuffer()
  const bytes = new Uint8Array(buffer)
  let binary = ''
  bytes.forEach(b => binary += String.fromCharCode(b))
  return btoa(binary) // → standard Base64 string
}
Python
import base64
from pathlib import Path

# Encode a file to Base64
file_bytes = Path('document.pdf').read_bytes()
encoded = base64.b64encode(file_bytes).decode('ascii')
print(encoded[:40])  # → "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PA..."

# Write encoded output to a text file
Path('document.b64.txt').write_text(encoded)

# Build a data URI from a file
mime_type = 'application/pdf'
data_uri = f'data:{mime_type};base64,{encoded}'
print(data_uri[:60])  # → "data:application/pdf;base64,JVBERi0xLj..."
Node.js
import { readFileSync, writeFileSync } from 'fs'

// Encode a file to Base64
const buffer = readFileSync('archive.zip')
const base64 = buffer.toString('base64')
console.log(base64.length) // → 1398104 (for a ~1 MB file)

// Save Base64 output to a file
writeFileSync('archive.b64.txt', base64)

// Build a data URI
const mime = 'application/zip'
const dataUri = `data:${mime};base64,${base64}`
CLI (bash)
# Encode a file to Base64 (macOS / Linux)
base64 < document.pdf > document.b64.txt

# Encode with no line wrapping (GNU coreutils)
base64 -w 0 < document.pdf > document.b64.txt

# Encode and copy to clipboard (macOS)
base64 < image.png | pbcopy

# Encode with OpenSSL (available everywhere)
openssl base64 -in archive.zip -out archive.b64.txt

# Pipe directly into curl for API upload
base64 -w 0 < photo.jpg | curl -X POST -d @- https://api.example.com/upload
Go
package main

import (
	"encoding/base64"
	"fmt"
	"os"
)

func main() {
	data, err := os.ReadFile("document.pdf")
	if err != nil {
		panic(err)
	}
	encoded := base64.StdEncoding.EncodeToString(data)
	fmt.Println(len(encoded)) // → 1398104 (for a ~1 MB file)

	// Write to file
	os.WriteFile("document.b64.txt", []byte(encoded), 0644)
}

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

ขนาดไฟล์สูงสุดที่เข้ารหัสเป็น Base64 ได้คือเท่าใด?
เครื่องมือนี้ทำงานทั้งหมดในเบราว์เซอร์ของคุณ ดังนั้นขีดจำกัดขึ้นอยู่กับหน่วยความจำที่มี เบราว์เซอร์สมัยใหม่จัดการไฟล์ขนาดสูงสุด 50-100 MB ได้โดยไม่มีปัญหา สำหรับไฟล์ที่ใหญ่กว่านั้น ให้ใช้เครื่องมือบรรทัดคำสั่งเช่น base64 (macOS/Linux) หรือโมดูล base64 ของ Python ซึ่งประมวลผลไฟล์เป็นส่วนๆ และไม่โหลดผลลัพธ์ทั้งหมดลงในหน่วยความจำทีเดียว
ผลลัพธ์ Base64 ใหญ่กว่าไฟล์ต้นฉบับมากแค่ไหน?
ผลลัพธ์ Base64 จะมีขนาดใหญ่กว่าข้อมูลขาเข้าประมาณ 33.3% เสมอ สูตรที่แม่นยำคือ ceil(n / 3) * 4 โดย n คือจำนวนไบต์ขาเข้า ไฟล์ขนาด 1 MB จะสร้างข้อความ Base64 ประมาณ 1.33 MB ค่าใช้จ่ายนี้เป็นสิ่งที่หลีกเลี่ยงไม่ได้ในการเข้ารหัสและไม่สามารถลดได้
ฉันสามารถเข้ารหัสไฟล์เป็น Base64 แล้วใช้เป็น data URI ได้หรือไม่?
ได้ เพิ่ม MIME type prefix ต่อหน้าสตริง Base64: data:application/pdf;base64, ตามด้วยเนื้อหาที่เข้ารหัส เบราว์เซอร์จะถอดรหัสและแสดง data URI เหมือนเป็นไฟล์ปกติ Data URIs ใช้งานได้ใน img src, link href, CSS url() และ anchor download attributes
การเข้ารหัสไฟล์เป็น Base64 เหมือนกับการเข้ารหัสลับหรือไม่?
ไม่ใช่ Base64 เป็นการเข้ารหัส ไม่ใช่การเข้ารหัสลับ มันแปลงข้อมูลไบนารีเป็นการแสดงแบบข้อความที่สามารถย้อนกลับได้ง่าย — ใครก็ตามที่มีตัวถอดรหัส Base64 สามารถกู้คืนไฟล์ต้นฉบับได้ Base64 ไม่มีการรักษาความลับ ความสมบูรณ์ หรือการยืนยันตัวตน หากคุณต้องการปกป้องเนื้อหาไฟล์ ให้เข้ารหัสลับไฟล์ก่อน (เช่น ด้วย AES-256-GCM) แล้วจึงเข้ารหัส Base64 ข้อความเข้ารหัสเพื่อการส่งผ่าน
ทำไมสตริง Base64 ของฉันจึงลงท้ายด้วยอักขระ = หนึ่งหรือสองตัว?
อักขระ = คืออักขระเติม Base64 ประมวลผลข้อมูลขาเข้าเป็นกลุ่ม 3 ไบต์ สร้างอักขระขาออก 4 ตัวต่อกลุ่ม เมื่อขนาดไฟล์ไม่ใช่ทวีคูณของ 3 จะเพิ่มอักขระเติมหนึ่งหรือสองตัวเพื่อให้ความยาวผลลัพธ์เป็นทวีคูณของ 4 เสมอ = หนึ่งตัวหมายความว่ากลุ่มสุดท้ายมี 2 ไบต์ == หมายความว่ากลุ่มสุดท้ายมี 1 ไบต์
ฉันจะเข้ารหัสไฟล์เป็น Base64 จาก command line ได้อย่างไร?
บน macOS และ Linux ใช้คำสั่ง base64: base64 < file.pdf > file.b64.txt บน GNU/Linux เพิ่ม -w 0 เพื่อยับยั้งการตัดบรรทัด คุณยังใช้ OpenSSL ได้: openssl base64 -in file.pdf -out file.b64.txt บน Windows PowerShell: [Convert]::ToBase64String([IO.File]::ReadAllBytes('file.pdf'))
ควรใช้การเข้ารหัสไฟล์เป็น Base64 แทน multipart/form-data เมื่อใด?
ใช้ Base64 เมื่อการส่งข้อมูลต้องการรูปแบบข้อความเท่านั้น — JSON API, XML-RPC, ตัวแปรสภาพแวดล้อม หรือ Kubernetes Secrets ใช้ multipart/form-data เมื่ออัปโหลดไฟล์ผ่านฟอร์ม HTML หรือ REST endpoints ที่รองรับ binary streams Multipart มีประสิทธิภาพมากกว่าเพราะหลีกเลี่ยงค่าใช้จ่ายเพิ่มเติม 33% แต่ต้องการให้เซิร์ฟเวอร์แยกวิเคราะห์ขอบเขต multipart