Markdown
Ngôn ngữ đánh dấu nhẹ thêm định dạng vào văn bản thuần bằng cú pháp đơn giản, có thể chuyển đổi sang HTML.
Markdown là ngôn ngữ đánh dấu nhẹ thêm định dạng như tiêu đề, danh sách, liên kết và khối mã vào văn bản thuần bằng cú pháp đơn giản. Nó được tạo bởi John Gruber và Aaron Swartz năm 2004, được thiết kế để "dễ viết, dễ đọc và dễ chuyển đổi sang HTML". Tên gọi là cách chơi chữ từ "markup" của HTML (HyperText Markup Language).
Cú pháp cơ bản của Markdown rất đơn giản: # cho tiêu đề, * hoặc - cho danh sách, [text](URL) cho liên kết, backtick cho mã nội tuyến và ba backtick cho khối mã. Sự đơn giản này là thế mạnh lớn nhất, cho phép tạo tài liệu nhanh hơn nhiều so với viết thẻ HTML trực tiếp. Hướng dẫn viết kỹ thuật bao gồm cách sử dụng Markdown rộng rãi.
Markdown được áp dụng rộng rãi trong các công cụ hướng nhà phát triển bao gồm GitHub README, blog kỹ thuật, trang tài liệu (MkDocs, Docusaurus, VitePress), công cụ chat (Slack, Discord) và ứng dụng ghi chú (Notion, Obsidian). Các đặc tả chuẩn hóa chính là CommonMark và GitHub Flavored Markdown (GFM), với GFM thêm cú pháp mở rộng cho bảng, danh sách tác vụ và văn bản gạch ngang.
Ưu điểm của Markdown là vẫn dễ đọc dưới dạng văn bản thuần và có thể chỉnh sửa mà không cần trình soạn thảo đặc biệt. Nó cũng hoạt động tốt với quản lý phiên bản Git, giúp diff dễ xem xét. Tuy nhiên, định dạng phức tạp như bảng, chú thích cuối trang và biểu thức toán học có hỗ trợ khác nhau giữa các phương ngữ, có thể gây vấn đề tương thích. Vì HTML có thể được viết trực tiếp trong Markdown, các bố cục mà Markdown đơn thuần không thể biểu đạt vẫn có thể đạt được.
Một quan niệm sai lầm phổ biến là Markdown là một đặc tả duy nhất. Thực tế, nhiều phương ngữ (flavor) tồn tại: Markdown gốc, CommonMark, GFM, MultiMarkdown và Pandoc Markdown, mỗi cái có cú pháp mở rộng khác nhau. Khi sử dụng Markdown trong dự án, điều quan trọng là làm rõ đặc tả nào cần tuân theo.
Từ góc độ đếm ký tự, ký tự cú pháp Markdown (#, *, [], (), v.v.) không được hiển thị trong đầu ra, tạo sự khác biệt giữa số ký tự nguồn và số ký tự hiển thị. Ví dụ, **bold** là 8 ký tự trong nguồn nhưng hiển thị là "bold" với 4 ký tự. Khi soạn thảo trong Markdown cho các nền tảng có giới hạn ký tự, bạn nên dựa trên đầu ra hiển thị. Sách phương pháp tốt nhất về tài liệu cung cấp thêm hiểu biết.