เอกสาร Markdown (.md)

CommonMark มาตรฐาน

Markdown (MD) คือภาษามาร์กอัปแบบน้ำหนักเบาที่ได้รับความนิยมมากที่สุดในโลก ออกแบบโดย John Gruber ให้อ่านและเขียนเป็นข้อความธรรมดาได้ง่าย พร้อมแปลงเป็น HTML ที่มีโครงสร้างได้อย่างเรียบร้อย

ตรวจสอบไฟล์และข้อมูลเมตา

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ Markdown โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

เลือกหรือวางไฟล์ที่นี่

เป็นส่วนตัว - ไฟล์จะไม่ออกจากอุปกรณ์ของคุณ

หรือวาง Ctrl+V
รับประกันความเป็นส่วนตัวโดยไม่มีการส่งข้อมูลผ่านเครือข่าย: อัปโหลด 0 ไบต์ไปยังเซิร์ฟเวอร์ภายนอก การประมวลผลทั้งหมดเกิดขึ้นภายในแซนด์บ็อกซ์ของเบราว์เซอร์ของคุณ

ลายเซ็นส่วนหัวระดับไบต์

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ Markdown โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

ลายเซ็น HEX (OFFSET 0):

ไม่มีลายเซ็นตายตัว

การแสดงผลรูปแบบ ASCII: ไม่มีลายเซ็น ASCII ตายตัว

มาตรฐาน: CommonMark Specification / GitHub Flavored Markdown (GFM)

ข้อมูลจำเพาะทางเทคนิค

สถาปัตยกรรมคอนเทนเนอร์ไฟล์ข้อความ UTF-8 ล้วนที่ใช้เครื่องหมายวรรคตอนอย่างง่ายเพื่อจัดรูปแบบ (หัวข้อ, รายการ, ตัวหนา, ตัวเอียง, บล็อกโค้ด)
การบีบอัดข้อความแบบไม่บีบอัด (บีบอัดได้ง่ายด้วย Gzip หรือ Brotli)
การจัดลำดับไบต์สตรีมข้อความ UTF-8 / Unicode
พื้นที่สีไม่เกี่ยวข้อง (มาร์กอัปข้อความล้วน)
ช่องสัญญาณและโครงสร้างหัวข้อ, ข้อความอ้างอิงแบบบล็อก, รายการแบบไม่มีลำดับ/มีลำดับ, กรอบโค้ด, ไฮเปอร์ลิงก์, ภาพ และตาราง
ขนาดสูงสุดความยาวเอกสารข้อความไม่จำกัด
ความโปร่งใสไม่มี (ข้อความล้วน)
การสตรีมและแบบโปรเกรสซีฟแยกข้อความเป็นโทเค็นแบบบล็อกและแบบอินไลน์ผ่านสตรีมทีละบรรทัด

ตารางเปรียบเทียบทางเทคนิค: Markdown กับคู่แข่ง

คุณลักษณะทางเทคนิคMarkdown (ปัจจุบัน)HTMLTXTPDF
ความง่ายในการเขียนพิมพ์ข้อความธรรมดาได้เร็วมากไวยากรณ์แท็กที่ยืดยาว (<p>, <div>)พิมพ์เร็ว (ไม่มีการจัดรูปแบบ)ต้องใช้โปรแกรมแก้ไขเลย์เอาต์แบบกราฟิก
ความสามารถในการอ่านโดยมนุษย์ (แบบดิบ)อ่านข้อความดิบได้เป็นธรรมชาติและชัดเจนรกด้วยแท็กและวงเล็บอ่านข้อความดิบได้ชัดเจนไบต์ดิบแบบไบนารีที่อ่านไม่ออก
การแปลงเป็น HTMLผลลัพธ์ที่กำหนดแน่นอนและตรงกันแบบ 1:1ภาษาเว็บดั้งเดิมต้องจัดรูปแบบด้วยตนเองผลลัพธ์กราฟิกแบบตายตัว
เครื่องมือนักพัฒนาการรองรับแตกต่างกันไปตามซอฟต์แวร์การรองรับแตกต่างกันไปตามซอฟต์แวร์การรองรับแตกต่างกันไปตามซอฟต์แวร์การแจกจ่ายเอกสาร

รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex

บล็อกโค้ดแสดงผลเป็นย่อหน้าปกติ หรือหัวข้อไม่สามารถจัดรูปแบบได้

สาเหตุหลัก: เว้นวรรคหลังสัญลักษณ์หัวข้อ '#' ไม่ถูกต้อง หรือลืมปิดเครื่องหมายแบ็กทิกสามตัว (```) ของบล็อกโค้ด

การกู้คืน: ตรวจสอบความถูกต้องและจัดรูปแบบไวยากรณ์ Markdown ใหม่โดยใช้ File2File.app Markdown Linter

การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์

ตัวแปลง Markdown มักอนุญาตให้ใช้ HTML แบบอินไลน์ดิบได้โดยค่าเริ่มต้น ซึ่งอาจนำไปสู่ช่องโหว่ Cross-Site Scripting (XSS) หากไม่ผ่านการทำความสะอาดข้อมูล

เวกเตอร์การโจมตีที่ทราบ

  • การฉีดสคริปต์ XSS ผ่านองค์ประกอบ HTML โดยตรง (เช่น '<script>' หรือ '<img onerror=...>') ที่ฝังอยู่ภายในข้อความ Markdown
  • การปฏิเสธการให้บริการ (Denial of Service) ผ่านโครงสร้างบล็อกอ้างอิงหรือรายการที่ซ้อนกันลึกเกินไปในตัวแยกวิเคราะห์ที่ไม่เป็นไปตามมาตรฐาน
  • ชุดรูปแบบไฮเปอร์ลิงก์อันตราย ('javascript:') ภายในไวยากรณ์ลิงก์ของ Markdown

แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: ทำความสะอาดเอาต์พุต HTML ที่สร้างขึ้นด้วย DOMPurify เสมอและไม่อนุญาตโปรโตคอล URL ที่ไม่ปลอดภัย

ประวัติความเป็นมาและเหตุการณ์สำคัญ

2017GitHub Flavored Markdown (GFM) ได้รับการกำหนดมาตรฐานตามข้อกำหนด CommonMark อย่างเป็นทางการ
2014ริเริ่มโครงการ CommonMark โดย Jeff Atwood และ John MacFarlane เพื่อสร้างมาตรฐานให้กับกรณีการใช้งาน Markdown ที่มีความคลุมเครือ
2004John Gruber และ Aaron Swartz เผยแพร่ข้อกำหนด Markdown 1.0 ดั้งเดิมและสคริปต์การแปลงภาษา Perl

ข้อได้เปรียบและจุดเด่นสำคัญ

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

ข้อจำกัดทางเทคนิคและข้อควรพิจารณา

  • ข้อกำหนดฉบับดั้งเดิมปี 2004 มีกฎการแยกวิเคราะห์ที่กำกวม จนนำไปสู่การแตกแขนงของรูปแบบย่อยที่แตกต่างกัน (CommonMark, GFM และ Kramdown)
  • ไม่มีการรองรับฟีเจอร์การจัดหน้าเอกสารที่ซับซ้อนโดยตรง เช่น หน้านิตยสารหลายคอลัมน์ การตัดข้อความโอบรอบวัตถุ หรือหมายเลขหน้า
  • รูปภาพที่ฝังอยู่จะใช้วิธีลิงก์จากภายนอกแทนที่จะถูกจัดเก็บไว้ภายในไฟล์เอกสาร

เกร็ดความรู้ทางเทคนิคที่น่าสนใจ

  • Aaron Swartz ผู้ร่วมพัฒนา Markdown กับ John Gruber ตอนอายุ 17 ปี ยังเป็นผู้ร่วมก่อตั้ง Reddit และสร้าง RSS 1.0 อีกด้วย
  • ที่เก็บโค้ด GitHub ทุกแห่งในโลกต่างใช้ไฟล์ 'README.md' เพื่อแนะนำชุดโค้ดของตนเองให้กับนักพัฒนา
  • ปรัชญาการออกแบบ Markdown ระบุไว้ว่า: 'เป้าหมายการออกแบบหลักสำหรับไวยากรณ์การจัดรูปแบบของ Markdown คือการทำให้อ่านง่ายที่สุดเท่าที่จะเป็นไปได้'

คำถามทางเทคนิคที่พบบ่อย

Markdown ใช้สำหรับทำอะไร?

Markdown ใช้เขียนเอกสารและไฟล์ README บน GitHub เขียนบล็อกโพสต์ จดบันทึกในแอปอย่าง Obsidian และ Notion รวมถึงเขียนข้อความบนแพลตฟอร์มอย่าง Discord และ Slack

ฉันสามารถแปลง Markdown เป็น PDF หรือ HTML ได้อย่างไร?

คุณสามารถแปลงไฟล์ Markdown (.md) เป็นเอกสาร PDF ที่จัดรูปแบบแล้วหรือโค้ด HTML ที่สะอาดตาได้ด้วยคลิกเดียวโดยใช้ File2File.app บนเว็บเบราว์เซอร์ของคุณโดยตรง

GitHub Flavored Markdown (GFM) คืออะไร?

GFM คือเวอร์ชันขยายของ Markdown จาก GitHub ซึ่งเพิ่มการรองรับตาราง, รายการงานที่มีช่องทำเครื่องหมาย ([x]), ข้อความขีดฆ่า (~~text~~) และบล็อกโค้ดที่ไฮไลต์ไวยากรณ์