ตัวเข้ารหัสและถอดรหัส Base64: แปลงข้อความเป็น Base64 และกลับกัน

เครื่องมือออนไลน์ฟรีสำหรับการเข้ารหัสข้อความเป็น Base64 หรือถอดรหัสสตริง Base64 กลับเป็นข้อความ รองรับการเข้ารหัส Base64 แบบมาตรฐานและแบบ URL-safe พร้อมการแปลงทันที

เครื่องมือเข้ารหัส/ถอดรหัส Base64

📚

เอกสารประกอบการใช้งาน

Base64 Encoder and Decoder

Introduction

Base64 เป็นโค้ดดิ้งแบบไบนารีเป็นข้อความที่แสดงข้อมูลไบนารีในรูปแบบสตริง ASCII มันถูกออกแบบมาเพื่อส่งข้อมูลที่เก็บในรูปแบบไบนารีผ่านช่องทางที่รองรับเนื้อหาข้อความได้อย่างเชื่อถือได้ โค้ดดิ้ง Base64 แปลงข้อมูลไบนารีให้เป็นชุดของ 64 ตัวอักษร (ตามชื่อ) ที่สามารถส่งผ่านโปรโตคอลที่ใช้ข้อความได้อย่างปลอดภัยโดยไม่ทำให้ข้อมูลเสียหาย

ชุดตัวอักษร Base64 ประกอบด้วย:

  • ตัวอักษรใหญ่ A-Z (26 ตัว)
  • ตัวอักษรเล็ก a-z (26 ตัว)
  • ตัวเลข 0-9 (10 ตัว)
  • ตัวอักษรเพิ่มเติมอีกสองตัว โดยปกติคือ "+" และ "/" (2 ตัว)

เครื่องมือนี้ช่วยให้คุณสามารถเข้ารหัสข้อความเป็นรูปแบบ Base64 หรือถอดรหัสสตริง Base64 กลับไปยังข้อความต้นฉบับได้อย่างง่ายดาย มันมีประโยชน์โดยเฉพาะสำหรับนักพัฒนา มืออาชีพด้าน IT และผู้ที่ทำงานกับข้อมูลที่ต้องส่งผ่านช่องทางที่ใช้ข้อความอย่างปลอดภัย ด้วยฟีเจอร์การแปลงแบบเรียลไทม์ของเรา คุณสามารถเห็นผลลัพธ์ทันทีที่คุณพิมพ์ ทำให้กระบวนการเข้ารหัสและถอดรหัสของคุณมีประสิทธิภาพมากขึ้น

How Base64 Encoding Works

Encoding Process

การเข้ารหัส Base64 ทำงานโดยการแปลงแต่ละกลุ่มของสามไบต์ (24 บิต) ของข้อมูลไบนารีเป็นสี่ตัวอักษร Base64 กระบวนการทำตามขั้นตอนดังนี้:

  1. แปลงข้อความที่ป้อนเป็นการแทนค่าไบนารี (โดยใช้ ASCII หรือ UTF-8)
  2. จัดกลุ่มข้อมูลไบนารีเป็นชิ้นส่วนขนาด 24 บิต (3 ไบต์)
  3. แบ่งแต่ละชิ้นส่วนขนาด 24 บิตออกเป็นสี่กลุ่มขนาด 6 บิต
  4. แปลงแต่ละกลุ่มขนาด 6 บิตเป็นตัวอักษร Base64 ที่สอดคล้องกัน

เมื่อความยาวของข้อมูลที่ป้อนไม่สามารถหารด้วย 3 ได้ จะมีการเพิ่มการเติมด้วยตัวอักษร "=" เพื่อรักษาสัดส่วน 4:3 ของความยาวเอาท์พุตต่อความยาวข้อมูล

Mathematical Representation

สำหรับลำดับของไบต์ b1,b2,b3b_1, b_2, b_3 ตัวอักษร Base64 ที่สอดคล้องกัน c1,c2,c3,c4c_1, c_2, c_3, c_4 จะถูกคำนวณดังนี้:

c1=Base64[(b1>>2)]c_1 = \text{Base64}[(b_1 >> 2)] c2=Base64[((b1&3)<<4)(b2>>4)]c_2 = \text{Base64}[((b_1 \& 3) << 4) | (b_2 >> 4)] c3=Base64[((b2&15)<<2)(b3>>6)]c_3 = \text{Base64}[((b_2 \& 15) << 2) | (b_3 >> 6)] c4=Base64[(b3&63)]c_4 = \text{Base64}[(b_3 \& 63)]

โดยที่ Base64[i]\text{Base64}[i] แทนตัวอักษรที่ ii ในอักษร Base64

Decoding Process

การถอดรหัส Base64 จะย้อนกลับกระบวนการเข้ารหัส:

  1. แปลงแต่ละตัวอักษร Base64 เป็นค่าขนาด 6 บิต
  2. เชื่อมต่อค่าขนาด 6 บิตเหล่านี้
  3. จัดกลุ่มบิตเป็นชิ้นส่วนขนาด 8 บิต (ไบต์)
  4. แปลงแต่ละไบต์เป็นตัวอักษรที่สอดคล้องกัน

Padding

เมื่อจำนวนไบต์ที่ต้องการเข้ารหัสไม่สามารถหารด้วย 3 ได้ จะมีการเติมดังนี้:

  • หากเหลือไบต์หนึ่ง จะถูกแปลงเป็นตัวอักษร Base64 สองตัวตามด้วย "=="
  • หากเหลือไบต์สอง จะถูกแปลงเป็นตัวอักษร Base64 สามตัวตามด้วย "="

Example

มาลองเข้ารหัสข้อความ "Hello" เป็น Base64 กัน:

  1. การแทนค่า ASCII ของ "Hello": 72 101 108 108 111
  2. การแทนค่าไบนารี: 01001000 01100101 01101100 01101100 01101111
  3. การจัดกลุ่มเป็นชิ้นส่วนขนาด 6 บิต: 010010 000110 010101 101100 011011 000110 1111
  4. ชิ้นส่วนสุดท้ายมีเพียง 4 บิต ดังนั้นเราจึงเติมด้วยศูนย์: 010010 000110 010101 101100 011011 000110 111100
  5. แปลงเป็นเลขฐานสิบ: 18, 6, 21, 44, 27, 6, 60
  6. ตรวจสอบในอักษร Base64: S, G, V, s, b, G, 8
  7. ผลลัพธ์คือ "SGVsbG8="

โปรดสังเกตการเติม "=" ที่ท้ายเพราะความยาวข้อมูล (5 ไบต์) ไม่สามารถหารด้วย 3 ได้

Formula

สูตรทั่วไปสำหรับการคำนวณความยาวของสตริงที่เข้ารหัส Base64 คือ:

encoded_length=4×input_length3\text{encoded\_length} = 4 \times \lceil \frac{\text{input\_length}}{3} \rceil

โดยที่ x\lceil x \rceil แทนฟังก์ชันเพดาน (การปัดขึ้นไปยังจำนวนเต็มที่ใกล้ที่สุด)

Using the Base64 Encoder/Decoder Tool

เครื่องมือ Base64 ของเราให้วิธีการที่ง่ายและมีประสิทธิภาพในการเข้ารหัสข้อความเป็น Base64 หรือถอดรหัส Base64 กลับไปยังข้อความ นี่คือวิธีการใช้งาน:

Basic Usage

  1. เลือกโหมดการทำงาน: เลือก "Encode" เพื่อแปลงข้อความเป็น Base64 หรือ "Decode" เพื่อแปลง Base64 กลับไปยังข้อความ
  2. ป้อนข้อมูลของคุณ: พิมพ์หรือวางข้อความหรือลำดับ Base64 ของคุณในช่องป้อนข้อมูล
  3. แปลง: คลิกที่ปุ่ม "Encode to Base64" หรือ "Decode from Base64" เพื่อทำการแปลง
  4. คัดลอกผลลัพธ์: ใช้ปุ่ม "Copy" เพื่อคัดลอกผลลัพธ์ไปยังคลิปบอร์ดของคุณ

Live Conversion Feature

เครื่องมือของเรามีฟีเจอร์การแปลงแบบเรียลไทม์ที่อัปเดตเอาท์พุตขณะที่คุณพิมพ์:

  1. เปิดใช้งาน Live Conversion: ทำเครื่องหมายที่ช่อง "Live Conversion" ที่ด้านบนของเครื่องมือ
  2. ดูผลลัพธ์ทันที: ขณะที่คุณพิมพ์ในช่องป้อนข้อมูล ผลลัพธ์จะอัปเดตโดยอัตโนมัติโดยไม่ต้องคลิกปุ่มการแปลง
  3. สลับตามต้องการ: คุณสามารถเปิดหรือปิดการแปลงแบบเรียลไทม์ได้ทุกเมื่อขึ้นอยู่กับความชอบของคุณ

ฟีเจอร์ Live Conversion มีประโยชน์โดยเฉพาะเมื่อ:

  • ทำงานกับข้อความหรือสตริง Base64 ขนาดสั้นถึงขนาดกลาง
  • ทำการเปลี่ยนแปลงทีละน้อยและต้องการข้อเสนอแนะแบบทันที
  • สำรวจว่าตัวอักษรต่างๆ ถูกเข้ารหัส/ถอดรหัสอย่างไร
  • เรียนรู้เกี่ยวกับรูปแบบการเข้ารหัส Base64

สำหรับข้อมูลขนาดใหญ่ เครื่องมือจะใช้การดีบาวซ์เพื่อรักษาประสิทธิภาพ ทำให้การแปลงเกิดขึ้นหลังจากที่คุณหยุดพิมพ์ชั่วขณะ แทนที่จะเกิดขึ้นในทุกการกดปุ่ม

Use Cases

การเข้ารหัส Base64 ถูกใช้ในหลายแอปพลิเคชัน:

  1. ไฟล์แนบอีเมล: MIME (Multipurpose Internet Mail Extensions) ใช้ Base64 เพื่อเข้ารหัสไฟล์แนบไบนารีในอีเมล

  2. Data URLs: ฝังภาพเล็กๆ ฟอนต์ หรือทรัพยากรอื่นๆ โดยตรงใน HTML, CSS หรือ JavaScript โดยใช้สคีม URL data:

  3. การสื่อสาร API: ส่งข้อมูลไบนารีอย่างปลอดภัยใน JSON payload หรือรูปแบบ API อื่นๆ ที่ใช้ข้อความ

  4. การจัดเก็บข้อมูลไบนารีในรูปแบบข้อความ: เมื่อข้อมูลไบนารีต้องการถูกจัดเก็บใน XML, JSON หรือรูปแบบข้อความอื่นๆ

  5. ระบบการรับรองความถูกต้อง: การรับรองความถูกต้องพื้นฐานใน HTTP ใช้การเข้ารหัส Base64 (แม้ว่าจะไม่ใช่เพื่อความปลอดภัย แต่เพื่อการเข้ารหัส)

  6. การเข้ารหัสลับ: เป็นส่วนหนึ่งของโปรโตคอลและระบบการเข้ารหัสลับต่างๆ มักใช้สำหรับการเข้ารหัสคีย์หรือใบรับรอง

  7. ค่า Cookie: การเข้ารหัสโครงสร้างข้อมูลที่ซับซ้อนเพื่อจัดเก็บในคุกกี้

Alternatives

แม้ว่า Base64 จะถูกใช้อย่างกว้างขวาง แต่ก็มีทางเลือกที่อาจเหมาะสมกว่าในบางสถานการณ์:

  1. Base64 ที่ปลอดภัยสำหรับ URL: ตัวแปรที่ใช้ "-" และ "_" แทน "+" และ "/" เพื่อหลีกเลี่ยงปัญหาการเข้ารหัส URL เหมาะสำหรับข้อมูลที่จะรวมอยู่ใน URL

  2. Base32: ใช้ชุดตัวอักษร 32 ตัว ส่งผลให้เอาท์พุตยาวขึ้นแต่มีความอ่านง่ายและไม่ไวต่อกรณี

  3. การเข้ารหัส Hex: การแปลงเป็นเลขฐานสิบหกซึ่งง่ายกว่า (เพิ่มขนาดเป็นสองเท่า) แต่เรียบง่ายและรองรับอย่างกว้างขวาง

  4. การถ่ายโอนไบน์: สำหรับไฟล์ขนาดใหญ่หรือเมื่อประสิทธิภาพสำคัญ การใช้โปรโตคอลการถ่ายโอนไบน์โดยตรง เช่น HTTP พร้อมกับส่วนหัว Content-Type ที่เหมาะสมจะดีกว่า

  5. การบีบอัด + Base64: สำหรับข้อมูลข้อความขนาดใหญ่ การบีบอัดก่อนเข้ารหัสสามารถลดการเพิ่มขนาดได้

  6. การทำให้เป็น JSON/XML: สำหรับข้อมูลที่มีโครงสร้าง การใช้การทำให้เป็น JSON หรือ XML ตามธรรมชาติอาจเหมาะสมกว่าการเข้ารหัส Base64

History

การเข้ารหัส Base64 มีรากฐานมาจากการคอมพิวเตอร์และระบบโทรคมนาคมในยุคแรกๆ ซึ่งข้อมูลไบนารีต้องถูกส่งผ่านช่องทางที่ออกแบบมาสำหรับข้อความ

ข้อกำหนดทางการของ Base64 ถูกเผยแพร่ครั้งแรกในปี 1987 เป็นส่วนหนึ่งของ RFC 989 ซึ่งกำหนด Privacy Enhanced Mail (PEM) ซึ่งต่อมาได้รับการปรับปรุงใน RFC 1421 (1993) และ RFC 2045 (1996, เป็นส่วนหนึ่งของ MIME)

คำว่า "Base64" มาจากการที่การเข้ารหัสใช้ตัวอักษร ASCII 64 ตัวในการแสดงข้อมูลไบนารี การเลือกใช้ตัวอักษร 64 ตัวนี้เป็นการตัดสินใจที่ตั้งใจ เนื่องจาก 64 เป็นเลขยกกำลังของ 2 (2^6) ซึ่งทำให้การแปลงระหว่างไบนารีและ Base64 มีประสิทธิภาพ

เมื่อเวลาผ่านไป ตัวแปรหลายรูปแบบของ Base64 ได้เกิดขึ้น:

  • Base64 มาตรฐาน: ตามที่กำหนดใน RFC 4648 ใช้ A-Z, a-z, 0-9, +, / และ = สำหรับการเติม
  • Base64 ที่ปลอดภัยสำหรับ URL: ใช้ - และ _ แทน + และ / เพื่อหลีกเลี่ยงปัญหาการเข้ารหัส URL
  • Base64 ที่ปลอดภัยสำหรับชื่อไฟล์: คล้ายกับ Base64 ที่ปลอดภัยสำหรับ URL ออกแบบมาเพื่อใช้ในชื่อไฟล์
  • Base64 ที่ปรับเปลี่ยนสำหรับ IMAP: ใช้ในโปรโตคอล IMAP โดยมีชุดตัวอักษรพิเศษที่แตกต่างกัน

แม้ว่าจะมีอายุเกินสามทศวรรษ Base64 ยังคงเป็นเครื่องมือพื้นฐานในคอมพิวเตอร์สมัยใหม่ โดยเฉพาะอย่างยิ่งกับการเพิ่มขึ้นของแอปพลิเคชันเว็บและ API ที่พึ่งพาฟอร์แมตข้อมูลที่ใช้ข้อความอย่างหนัก เช่น JSON

Code Examples

นี่คือตัวอย่างการเข้ารหัสและถอดรหัส Base64 ในหลายภาษาโปรแกรม:

1// JavaScript Base64 Encoding/Decoding
2function encodeToBase64(text) {
3  return btoa(text);
4}
5
6function decodeFromBase64(base64String) {
7  try {
8    return atob(base64String);
9  } catch (e) {
10    throw new Error("Invalid Base64 string");
11  }
12}
13
14// Example usage
15const originalText = "Hello, World!";
16const encoded = encodeToBase64(originalText);
17console.log("Encoded:", encoded);  // SGVsbG8sIFdvcmxkIQ==
18
19try {
20  const decoded = decodeFromBase64(encoded);
21  console.log("Decoded:", decoded);  // Hello, World!
22} catch (error) {
23  console.error(error.message);
24}
25

JavaScript Implementation with Live Conversion

นี่คือตัวอย่างการนำเสนอฟีเจอร์การแปลงแบบเรียลไทม์ใน JavaScript:

1// JavaScript implementation with live conversion
2const textInput = document.getElementById('text-input');
3const base64Output = document.getElementById('base64-output');
4const liveConversionCheckbox = document.getElementById('live-conversion');
5let debounceTimeout = null;
6
7// Function to encode with debouncing for performance
8function liveEncode() {
9  // Clear any existing timeout
10  if (debounceTimeout) {
11    clearTimeout(debounceTimeout);
12  }
13  
14  // Set a new timeout to prevent excessive processing during rapid typing
15  debounceTimeout = setTimeout(() => {
16    try {
17      const text = textInput.value;
18      if (text.trim()) {
19        base64Output.value = btoa(text);
20      } else {
21        base64Output.value = '';
22      }
23    } catch (e) {
24      console.error('Encoding error:', e);
25      // Handle error appropriately in the UI
26    }
27  }, 300); // 300ms debounce delay
28}
29
30// Event listeners
31liveConversionCheckbox.addEventListener('change', function() {
32  if (this.checked) {
33    // Enable live conversion
34    textInput.addEventListener('input', liveEncode);
35    // Initial encode
36    liveEncode();
37  } else {
38    // Disable live conversion
39    textInput.removeEventListener('input', liveEncode);
40  }
41});
42

Edge Cases and Considerations

เมื่อทำงานกับการเข้ารหัสและถอดรหัส Base64 โปรดทราบถึงข้อพิจารณาที่สำคัญเหล่านี้:

  1. อักขระ Unicode และ Non-ASCII: เมื่อเข้ารหัสข้อความที่มีอักขระที่ไม่ใช่ ASCII ให้แน่ใจว่ามีการเข้ารหัสอักขระที่เหมาะสม (โดยปกติคือ UTF-8) ก่อนการเข้ารหัส Base64

  2. การเติม: Base64 มาตรฐานใช้การเติมด้วยตัวอักษร "=" เพื่อให้แน่ใจว่าความยาวเอาท์พุตเป็นตัวคูณของ 4 บางการใช้งานอนุญาตให้ละเว้นการเติม ซึ่งอาจทำให้เกิดปัญหาในการเข้ากันได้

  3. การตัดบรรทัด: การดำเนินการ Base64 แบบดั้งเดิมจะเพิ่มการตัดบรรทัด (โดยปกติทุกๆ 76 ตัวอักษร) เพื่อความอ่านง่าย แต่แอปพลิเคชันสมัยใหม่มักจะละเว้นสิ่งเหล่านี้

  4. Base64 ที่ปลอดภัยสำหรับ URL: Base64 มาตรฐานใช้ตัวอักษร "+" และ "/" ซึ่งมีความหมายพิเศษใน URL สำหรับบริบทของ URL ให้ใช้ Base64 ที่ปลอดภัยสำหรับ URL ซึ่งแทนที่ด้วย "-" และ "_"

  5. Whitespace: เมื่อถอดรหัส บางการใช้งานจะอนุญาตให้ละเลย whitespace ในขณะที่บางการใช้งานต้องการข้อมูลที่แน่นอน

  6. การเพิ่มขนาด: การเข้ารหัส Base64 เพิ่มขนาดข้อมูลประมาณ 33% (4 ไบต์เอาท์พุตสำหรับทุก 3 ไบต์ข้อมูล)

  7. ประสิทธิภาพ: การเข้ารหัส/ถอดรหัส Base64 อาจใช้ทรัพยากรคอมพิวเตอร์มากสำหรับข้อมูลขนาดใหญ่ เครื่องมือของเราใช้การดีบาวซ์เพื่อรักษาความเร็วแม้กับข้อมูลขนาดใหญ่

  8. การพิจารณาการแปลงแบบเรียลไทม์: เมื่อใช้ฟีเจอร์การแปลงแบบเรียลไทม์กับข้อมูลขนาดใหญ่ คุณอาจสังเกตเห็นความล่าช้าเล็กน้อยขณะที่เครื่องมือประมวลผลข้อมูล สิ่งนี้เป็นเรื่องปกติและช่วยรักษาประสิทธิภาพของเบราว์เซอร์

Frequently Asked Questions

What is the Live Conversion feature?

ฟีเจอร์ Live Conversion จะอัปเดตเอาท์พุตโดยอัตโนมัติขณะที่คุณพิมพ์ โดยไม่ต้องคลิกปุ่มเข้ารหัสหรือถอดรหัส ทำให้มีข้อเสนอแนะแบบทันทีและทำให้เครื่องมือมีความโต้ตอบและมีประสิทธิภาพมากขึ้น

Will Live Conversion slow down my browser with large inputs?

การนำเสนอของเรามีการดีบาวซ์เพื่อให้ประสิทธิภาพดีแม้กับข้อมูลขนาดใหญ่ การแปลงจะเกิดขึ้นหลังจากที่คุณหยุดพิมพ์ชั่วขณะ แทนที่จะเกิดขึ้นในทุกการกดปุ่ม ซึ่งป้องกันการประมวลผลที่มากเกินไปในระหว่างการพิมพ์อย่างรวดเร็ว

When should I use Live Conversion vs. manual conversion?

Live Conversion เหมาะสำหรับการทำงานแบบโต้ตอบที่คุณต้องการข้อเสนอแนะแบบทันที สำหรับชุดข้อมูลขนาดใหญ่หรือเมื่อคุณต้องการตรวจสอบข้อมูลก่อนการแปลง คุณอาจต้องการตัวเลือกการแปลงแบบแมนนวล

Does Live Conversion work for both encoding and decoding?

ใช่ ฟีเจอร์ Live Conversion ใช้งานได้ในทั้งสองทิศทาง - จากข้อความเป็น Base64 และจาก Base64 เป็นข้อความ

What happens if I input invalid Base64 with Live Conversion enabled?

หากคุณป้อนอักขระ Base64 ที่ไม่ถูกต้องในขณะที่อยู่ในโหมดถอดรหัสด้วย Live Conversion ที่เปิดใช้งาน เครื่องมือจะแสดงข้อความแสดงข้อผิดพลาดแบบเรียลไทม์ ช่วยให้คุณระบุและแก้ไขปัญหาได้ทันที

References

  1. RFC 4648 - The Base16, Base32, and Base64 Data Encodings
  2. RFC 2045 - MIME Part One: Format of Internet Message Bodies
  3. MDN Web Docs: Base64 encoding and decoding
  4. Base64 - Wikipedia
  5. MIME - Wikipedia

ลองใช้เครื่องมือ Base64 Encoder/Decoder ของเราวันนี้เพื่อแปลงระหว่างข้อความและรูปแบบ Base64 ได้อย่างรวดเร็วด้วยความสะดวกสบายของการแปลงแบบเรียลไทม์ ไม่ว่าคุณจะเป็นนักพัฒนาที่ทำงานกับ API, จัดการไฟล์แนบอีเมล หรือฝังข้อมูลไบนารีในรูปแบบข้อความ เครื่องมือของเราช่วยทำให้กระบวนการนี้ง่ายและมีประสิทธิภาพ

🔗

เครื่องมือที่เกี่ยวข้อง

ค้นพบเครื่องมือเพิ่มเติมที่อาจมีประโยชน์สำหรับการทำงานของคุณ

ตัวแปลงและดูภาพจาก Base64 | แปลง Base64 เป็นภาพ

ลองใช้เครื่องมือนี้

ตัวแปลงเลขฐานสอง-ฐานสิบ: แปลงระหว่างระบบเลข

ลองใช้เครื่องมือนี้

ตัวแปลงฐานตัวเลข: แปลงเลขฐานสอง, ฐานสิบหก, ฐานสิบ & อื่นๆ

ลองใช้เครื่องมือนี้

เครื่องมือสร้างและตรวจสอบ IBAN สำหรับการทดสอบและการตรวจสอบ

ลองใช้เครื่องมือนี้

เครื่องมือกลับข้อความ: กลับลำดับตัวอักษรในข้อความใด ๆ

ลองใช้เครื่องมือนี้

ตัวทดสอบและตรวจสอบรูปแบบ Regex: ทดสอบ, ไฮไลท์ & บันทึกรูปแบบ

ลองใช้เครื่องมือนี้

เครื่องแปลงหน่วยเวลา: ปี, วัน, ชั่วโมง, นาที, วินาที

ลองใช้เครื่องมือนี้

เครื่องสร้างคีย์ API แบบสุ่ม: สร้างสตริงที่ปลอดภัยยาว 32 ตัวอักษร

ลองใช้เครื่องมือนี้

เครื่องมือจัดรูปแบบ JSON & ทำให้สวยงาม: พิมพ์ JSON ให้สวยงามด้วยการเยื้อง

ลองใช้เครื่องมือนี้

เครื่องมือการย่อ CSS: ปรับแต่งและบีบอัดโค้ด CSS ออนไลน์

ลองใช้เครื่องมือนี้