Doctype HTML là gì? Cách sử dụng chuẩn

Doctype là phần khai báo mở đầu của tài liệu HTML, thường được viết dưới dạng <!doctype html>. Trong HTML hiện đại, mục đích chính của khai báo này là yêu cầu trình duyệt sử dụng chế độ hiển thị theo chuẩn, còn gọi là no-quirks mode, thay vì chế độ tương thích với những website rất cũ.

Doctype không phải thẻ HTML, không tạo ra nội dung trên trang và không trực tiếp quyết định thứ hạng Google. Tuy nhiên, nếu tài liệu thiếu hoặc dùng khai báo cũ không phù hợp, trình duyệt có thể áp dụng quirks mode hoặc limited-quirks mode, làm một số quy tắc CSS được xử lý khác với dự kiến. Điều này có thể gây lỗi bố cục và trải nghiệm, đặc biệt khi website sử dụng giao diện cũ hoặc mã nguồn thiếu kiểm thử.

Bài viết dưới đây giải thích Doctype là gì, cú pháp nên dùng, cách trình duyệt chọn chế độ hiển thị, mối quan hệ thực tế với SEO và Core Web Vitals, cách kiểm tra bằng DevTools, JavaScript và công cụ xác thực HTML, đồng thời chỉ ra các nhận định sai thường gặp.

Doctype là gì?

Doctype là cách gọi ngắn của document type declaration, tức khai báo loại tài liệu. Trong cú pháp HTML hiện đại, đây là phần mở đầu bắt buộc về mặt chuẩn tài liệu:

<!doctype html>

HTML Living Standard của WHATWG mô tả Doctype là một preamble bắt buộc vì lý do tương thích lịch sử. Khi bị bỏ qua, trình duyệt có xu hướng chuyển sang một chế độ hiển thị khác, không tương thích với một số quy tắc web hiện đại.

Doctype có những đặc điểm cần nhớ:

  • Không phải phần tử HTML và không có thẻ đóng.
  • Không xuất hiện như nội dung trong phần <body>.
  • Được trình duyệt xử lý trước cấu trúc phần tử chính.
  • Không tải DTD từ Internet khi dùng cú pháp HTML hiện đại.
  • Không phải thẻ meta và không thay thế khai báo charset.
  • Không trực tiếp cung cấp tín hiệu SEO cho Google.
Câu trả lời nhanh

Đối với website HTML hiện đại, hãy đặt <!doctype html> ở đầu tài liệu. Khai báo này giúp trình duyệt chọn no-quirks mode và xử lý bố cục theo các quy tắc hiện đại.

Doctype trong HTML là gì?
Doctype trong HTML là gì

Cú pháp Doctype HTML hiện đại

Cú pháp nên dùng cho hầu hết website hiện nay là:

<!doctype html>

HTML Standard cho biết từ khóa DOCTYPE và tên html được so khớp không phân biệt chữ hoa, chữ thường. Vì vậy, những cách viết sau có thể được trình duyệt hiểu tương đương:

<!doctype html>
<!DOCTYPE html>
<!DOCTYPE HTML>

Dù vậy, nên chọn một kiểu thống nhất trong toàn bộ dự án. Cách viết chữ thường thường được dùng trong codebase hiện đại vì ngắn và đồng bộ với cách viết phần tử HTML.

Mẫu tài liệu HTML cơ bản

<!doctype html>
<html lang="vi">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Tiêu đề trang</title>
</head>
<body>
  <main>
    <p>Nội dung trang.</p>
  </main>
</body>
</html>

Trong cấu trúc này:

  • <!doctype html> giúp kích hoạt no-quirks mode.
  • lang="vi" khai báo ngôn ngữ chính của tài liệu.
  • <meta charset="utf-8"> khai báo mã hóa ký tự.
  • Viewport giúp bố cục thích ứng đúng với thiết bị di động.
  • <title> cung cấp tiêu đề tài liệu cho trình duyệt và công cụ tìm kiếm.

Doctype không đảm nhiệm chức năng của bất kỳ thành phần nào ở trên. Việc có Doctype đúng không thể bù cho thiếu charset, viewport, title hoặc cấu trúc semantic.

Doctype có phải khai báo phiên bản HTML không?

Trong tài liệu cũ, Doctype thường gắn với một phiên bản như HTML 4.01 hoặc XHTML 1.0 và có thể chứa public identifier cùng đường dẫn DTD dài. Vì vậy, nhiều tài liệu hướng dẫn vẫn giải thích Doctype là dòng thông báo phiên bản HTML cho trình duyệt.

Cách diễn giải đó không còn đầy đủ đối với HTML hiện đại. WHATWG mô tả HTML hiện hành là một Living Standard, không phải chuỗi phiên bản tách biệt mà website phải khai báo bằng “HTML5”, “HTML6” hoặc một số hiệu mới.

Với <!doctype html>, mục đích thực tế là đưa tài liệu text/html vào no-quirks mode. Trình duyệt không đọc dòng này để bật riêng một bộ tính năng “HTML5”. Khả năng hỗ trợ phần tử và API phụ thuộc trình duyệt, phiên bản engine và tiêu chuẩn hiện hành.

Nhận địnhĐúng hay sai?Giải thích
Doctype là một thẻ HTMLSaiĐây là khai báo mở đầu, không phải phần tử
Doctype hiện đại kích hoạt no-quirks modeĐúngĐây là mục đích chính trong trình duyệt hiện đại
Doctype tải DTD của HTML5SaiCú pháp hiện đại không tham chiếu DTD
Doctype tự bật mọi tính năng HTML mớiSaiTính năng phụ thuộc khả năng của trình duyệt
Doctype là tín hiệu xếp hạng GoogleKhông có cơ sởGoogle không công bố Doctype là tín hiệu riêng

Standards mode, limited-quirks mode và quirks mode

Các engine trình duyệt hiện đại duy trì nhiều chế độ hiển thị để những website được xây từ thời kỳ đầu của web không bị hỏng hoàn toàn. MDN mô tả ba nhóm chế độ chính:

  • No-quirks mode: Trình duyệt áp dụng cách xử lý hiện đại theo tiêu chuẩn.
  • Limited-quirks mode: Phần lớn hoạt động như no-quirks nhưng giữ lại một số hành vi tương thích cũ.
  • Quirks mode: Mô phỏng một số cách trình duyệt cũ như Netscape Navigator 4 hoặc Internet Explorer 5 xử lý bố cục.

No-quirks mode

Đây là chế độ mong muốn cho website hiện đại. CSS box model, kích thước phần tử, chiều cao bảng, hình ảnh nội tuyến và nhiều quy tắc bố cục được xử lý theo hành vi hiện hành của engine.

Limited-quirks mode

Chế độ này thường liên quan một số Doctype chuyển tiếp hoặc frameset cũ. Phần lớn CSS hiện đại vẫn hoạt động, nhưng một số khác biệt lịch sử còn được giữ lại, đặc biệt quanh hình ảnh nội tuyến và chiều cao dòng.

Quirks mode

Quirks mode tồn tại để duy trì khả năng hiển thị các tài liệu rất cũ. Trong chế độ này, trình duyệt có thể áp dụng những hành vi không tương thích với cách tác giả hiện đại dự đoán, chẳng hạn cách tính kích thước hộp hoặc một số quy tắc về bảng.

Điều quan trọng là không nên mô tả quirks mode như trạng thái “toàn bộ Flexbox, Grid và responsive bị vô hiệu hóa”. Nhiều tính năng hiện đại vẫn có thể hoạt động, nhưng những khác biệt nền tảng của chế độ bố cục có khả năng tạo lỗi khó đoán trong một hệ thống CSS phức tạp.

Chế độNguyên nhân thường gặpRủi ro với website mới
No-quirksDùng <!doctype html> hợp lệThấp, đây là chế độ nên sử dụng
Limited-quirksMột số Doctype XHTML hoặc HTML 4 chuyển tiếpCó thể có khác biệt hiển thị nhỏ
QuirksThiếu Doctype, Doctype sai hoặc khai báo cũ đặc biệtCó thể làm CSS hiển thị khác dự kiến

Doctype có bắt buộc phải là ký tự đầu tiên không?

Thực hành tốt nhất là đặt Doctype ở đầu tài liệu, trước phần tử <html> và mọi nội dung ứng dụng. Điều này giúp code rõ ràng, tương thích rộng và dễ kiểm tra.

Tuy nhiên, cần phân biệt thực hành tốt với cách parser hiện đại thực sự hoạt động. Theo thuật toán phân tích HTML hiện hành, một số ký tự khoảng trắng ASCII và comment xuất hiện trước Doctype có thể được bỏ qua hoặc chèn vào Document mà không tự động làm tài liệu rơi vào quirks mode.

Vì vậy, tuyên bố “chỉ một dòng trống hoặc comment trước Doctype sẽ làm mọi trình duyệt hiện đại vào quirks mode” là không chính xác.

Dẫu vậy, vẫn nên tránh đặt nội dung trước Doctype vì:

  • Mã nguồn trở nên khó kiểm tra và thiếu nhất quán.
  • Một số trình duyệt cũ, đặc biệt các phiên bản Internet Explorer cũ, từng có hành vi khác.
  • Byte Order Mark, XML declaration hoặc dữ liệu do máy chủ xuất ngoài ý muốn có thể tạo vấn đề trong môi trường cũ hoặc bộ công cụ khác.
  • Output ngoài ý muốn có thể làm hỏng header, cookie hoặc quy trình tạo tài liệu phía máy chủ.
  • Validator có thể báo lỗi cấu trúc hoặc tài liệu không còn đúng mẫu dự kiến.
Khuyến nghị thực tế

Hãy để <!doctype html> là dòng nội dung đầu tiên trong template. Không cần dựa vào khả năng sửa lỗi của parser nếu có thể tạo tài liệu sạch ngay từ đầu.

Doctype được trình duyệt xử lý thế nào?

Khi tài nguyên được phục vụ với MIME type text/html, trình duyệt sử dụng HTML parser để tạo DOM. Ở giai đoạn đầu, parser đọc token Doctype, tạo một node DocumentType và xác định mode của tài liệu.

Với Doctype hiện đại hợp lệ, tài liệu tiếp tục ở no-quirks mode. Nếu thiếu Doctype hoặc token phù hợp với những mẫu lịch sử nhất định, parser có thể đặt Document vào quirks hoặc limited-quirks mode.

Doctype không phải một yêu cầu mạng riêng. Trình duyệt không gọi đến website W3C để xác minh cú pháp <!doctype html>. Việc chọn mode dựa trên thuật toán và danh sách nhận dạng được tích hợp trong engine.

DocumentType trong DOM

Sau khi tài liệu được phân tích, có thể kiểm tra node Doctype bằng JavaScript:

console.log(document.doctype);

Với tài liệu hiện đại, kết quả thường là một DocumentType có tên html. Nếu không có khai báo, document.doctype có thể trả về null.

Kiểm tra chế độ bằng document.compatMode

console.log(document.compatMode);

Giá trị thường gặp:

  • CSS1Compat: tài liệu không ở quirks mode; giá trị này bao gồm no-quirks và limited-quirks.
  • BackCompat: tài liệu đang ở quirks mode.

document.compatMode không phân biệt đầy đủ no-quirks với limited-quirks. Firefox có thể hiển thị cảnh báo trong Console nếu trang dùng quirks hoặc limited-quirks mode.

Doctype và HTML5: cách gọi nào chính xác?

<!doctype html> thường được gọi là “HTML5 Doctype” vì cú pháp này trở nên phổ biến cùng HTML5. Cách gọi đó dễ hiểu trong giao tiếp, nhưng khi viết tài liệu kỹ thuật cập nhật, có thể gọi là Doctype HTML hiện đại hoặc Doctype của HTML Living Standard.

HTML hiện nay được phát triển như Living Standard. Điều đó có nghĩa tiêu chuẩn được cập nhật liên tục thay vì chờ một phiên bản HTML lớn mới để thay đổi toàn bộ cú pháp Doctype.

Cú pháp hiện đại ngắn vì nó không cần public identifier hoặc system identifier dài như HTML 4 và XHTML. Mục đích tương thích vẫn được giữ, nhưng gánh nặng ghi nhớ DTD đã được loại bỏ.

Các Doctype lịch sử và khi nào còn gặp

Website cũ, template lưu trữ lâu năm hoặc ứng dụng doanh nghiệp chưa nâng cấp có thể vẫn chứa Doctype HTML 4.01 hoặc XHTML 1.0. Không nên thay đổi máy móc chỉ vì dòng khai báo dài; cần kiểm tra CSS, JavaScript, MIME type và các phụ thuộc cũ trước khi nâng cấp.

Chuẩn lịch sửDạng khai báoKhuyến nghị hiện nay
HTML 4.01 StrictPublic identifier và DTD StrictChỉ giữ khi bảo trì hệ thống cũ có kiểm thử
HTML 4.01 TransitionalCho phép nhiều thành phần trình bày cũKhông dùng cho dự án mới
HTML 4.01 FramesetDành cho cấu trúc frameset cũKhông phù hợp website hiện đại
XHTML 1.0 StrictDùng DTD XHTML StrictChỉ áp dụng khi dự án thực sự theo mô hình cũ
HTML hiện đại<!doctype html>Dùng cho hầu hết website mới
Những trình duyệt hỗ trợ DOCTYPE html
Những trình duyệt hỗ trợ DOCTYPE html

HTML và XHTML khác nhau ở đâu?

HTML có thể được biểu diễn bằng cú pháp HTML hoặc cú pháp XML. Khi tài liệu được phục vụ bằng text/html, trình duyệt dùng HTML parser với cơ chế sửa lỗi được định nghĩa rõ. Khi tài liệu được phục vụ bằng MIME type XML như application/xhtml+xml, trình duyệt dùng XML parser.

Khác biệt quan trọng:

  • Cú pháp XML phân biệt chữ hoa, chữ thường.
  • Tất cả phần tử XML phải được đóng đúng.
  • Thuộc tính phải có giá trị được đặt trong dấu nháy.
  • Tài liệu phải được lồng đúng và chỉ có một phần tử gốc.
  • Lỗi cú pháp XML có thể khiến tài liệu không được hiển thị đầy đủ.
  • HTML parser có cơ chế xử lý nhiều lỗi thay vì dừng ngay.

Nếu tài liệu được phục vụ thực sự bằng application/xhtml+xml, Doctype không cần thiết để bật no-quirks mode vì tài liệu XML luôn được xử lý theo mode tương ứng. Nếu mã XHTML-like được gửi dưới text/html, trình duyệt vẫn xử lý nó như HTML và cần Doctype HTML để tránh quirks mode.

Do đó, việc chỉ thêm Doctype XHTML và thuộc tính xmlns không tự động biến một trang text/html thành tài liệu XML. MIME type từ máy chủ mới quyết định parser được sử dụng.

Khác nhau giữa HTML và XHTML là gì?
Khác nhau giữa HTML và XHTML là gì

Doctype ảnh hưởng đến SEO như thế nào?

Google không công bố Doctype là một tín hiệu xếp hạng riêng. Một trang thiếu Doctype vẫn có thể được Googlebot thu thập, render và lập chỉ mục nếu nội dung có thể truy cập.

Ảnh hưởng SEO, nếu có, thường là gián tiếp thông qua trải nghiệm và khả năng hiển thị:

  • Quirks mode có thể làm bố cục khác dự kiến.
  • Nút, biểu mẫu hoặc nội dung có thể hiển thị sai trong một số trường hợp.
  • Lỗi CSS có thể ảnh hưởng khả năng sử dụng trên mobile.
  • Trang khó dùng có thể làm giảm hiệu quả chuyển đổi và quảng cáo.
  • Markup thiếu chuẩn có thể làm việc bảo trì và kiểm thử khó hơn.

Không nên biến các tác động gián tiếp thành khẳng định rằng “thiếu Doctype làm từ khóa rơi tự do”. Thứ hạng phụ thuộc nội dung, mức độ liên quan, liên kết, trải nghiệm, khả năng thu thập, cạnh tranh và nhiều hệ thống khác.

Doctype và Googlebot rendering

Google Search xử lý website JavaScript qua ba giai đoạn chính: crawling, rendering và indexing. Googlebot dùng phiên bản Chromium thường xuyên được cập nhật để render trang.

Nếu tài liệu ở quirks mode, Chromium dùng mode đó khi dựng layout. Tuy nhiên, không có tài liệu chính thức nào cho thấy Googlebot sẽ bỏ qua liên kết chỉ vì Doctype thiếu. Googlebot phân tích các liên kết <a href> trong HTML ban đầu và HTML đã render theo quy trình của Search.

Vấn đề thực tế cần kiểm tra là liên kết có tồn tại trong HTML hoặc DOM, có thể crawl, có bị che do script lỗi hay không, chứ không nên suy luận rằng cây DOM “bị sai lệch” chỉ vì quirks mode.

Doctype và crawl budget

Google định nghĩa crawl budget là số URL Googlebot có thể và muốn crawl. Những yếu tố quan trọng gồm sức khỏe máy chủ, tốc độ phản hồi, lỗi 5xx, nhu cầu crawl, nội dung trùng lặp và nhiều URL ít giá trị.

Không có bằng chứng chính thức cho thấy một Doctype thiếu trực tiếp làm thời gian render tăng “gấp nhiều lần” hoặc làm cạn crawl budget. Một website lỗi nặng có thể gián tiếp ảnh hưởng vận hành, nhưng Doctype không nên được liệt kê như nguyên nhân crawl budget mặc định.

Không chẩn đoán SEO theo một dòng mã

Nếu trang chậm index hoặc giảm traffic, cần kiểm tra robots.txt, noindex, canonical, sitemap, trạng thái HTTP, server, nội dung, internal link và log crawl. Không nên kết luận nguyên nhân là Doctype nếu chưa có dữ liệu.

Doctype có ảnh hưởng Core Web Vitals không?

Core Web Vitals đo trải nghiệm thực tế về tải nội dung, khả năng phản hồi và độ ổn định bố cục. Các ngưỡng “tốt” Google khuyến nghị gồm:

  • LCP trong 2,5 giây.
  • INP dưới 200 mili giây.
  • CLS dưới 0,1.

Doctype không phải một chỉ số Core Web Vitals và không tự động làm các chỉ số này tốt hoặc xấu. Trong một số giao diện, quirks mode có thể làm kích thước hoặc bố cục khác dự kiến, từ đó gián tiếp tạo trải nghiệm kém. Nhưng LCP, INP và CLS còn chịu ảnh hưởng lớn từ:

  • Máy chủ và thời gian phản hồi.
  • Ảnh, video, font và tài nguyên chặn render.
  • JavaScript nặng hoặc tác vụ dài.
  • Kích thước phần tử không được khai báo.
  • Quảng cáo và nội dung chèn động.
  • CSS, animation và cách tải dữ liệu.

Google cũng nhấn mạnh không có một “page experience signal” duy nhất. Core Web Vitals là một phần của bức tranh trải nghiệm; đạt điểm tốt không bảo đảm trang đứng Top nếu nội dung không phù hợp.

Doctype có làm website responsive không?

Không. Responsive design phụ thuộc CSS, viewport, hình ảnh linh hoạt, breakpoint và cách xây component. Doctype chỉ giúp tài liệu sử dụng mode hiện đại.

Một trang có Doctype đúng vẫn có thể vỡ mobile nếu:

  • Thiếu thẻ viewport.
  • Container bị đặt chiều rộng cố định.
  • Ảnh hoặc iframe vượt khung.
  • Bảng có min-width quá lớn.
  • CSS media query sai.
  • Plugin chèn style xung đột.
  • JavaScript đo kích thước không chính xác.

Ngược lại, một trang thiếu Doctype có thể trông “tạm đúng” trên một thiết bị nhưng vẫn đang dựa vào quirks mode và có nguy cơ lỗi ở môi trường khác.

Cách kiểm tra Doctype trên website

Xem mã nguồn phản hồi ban đầu

Mở trang, chọn View Page Source hoặc dùng tổ hợp phím phù hợp. Kiểm tra phần đầu tài liệu có <!doctype html> hay không.

Nên dùng View Source thay vì chỉ nhìn tab Elements vì DevTools hiển thị DOM sau khi trình duyệt đã sửa và chèn một số phần tử.

Kiểm tra document.compatMode

Mở Console và chạy document.compatMode. Kết quả BackCompat cho biết trang đang ở quirks mode; CSS1Compat cho biết trang không ở quirks mode.

Kiểm tra document.doctype

Chạy document.doctype để xem node Doctype. Nếu trả về null, tài liệu không có node Doctype trong DOM hiện tại.

Xem cảnh báo trong Console

Firefox có thể cảnh báo khi trang dùng quirks hoặc limited-quirks mode. Chrome DevTools cũng có thể giúp phát hiện các lỗi HTML, CSS và tài nguyên liên quan.

Dùng HTML Checker

Kiểm tra URL hoặc mã nguồn bằng W3C Markup Validation Service hoặc Nu HTML Checker. Validator giúp phát hiện Doctype thiếu, cấu trúc sai và nhiều lỗi markup khác.

Kiểm tra nhiều template

Không chỉ xem trang chủ. Hãy kiểm tra bài viết, sản phẩm, danh mục, landing page, trang tìm kiếm và template do plugin tạo vì mỗi loại có thể dùng luồng xuất HTML khác nhau.

Kiểm tra phản hồi máy chủ

Dùng công cụ dòng lệnh hoặc tab Network để xem HTML gốc. Điều này giúp phát hiện whitespace, cảnh báo PHP, BOM hoặc dữ liệu ngoài ý muốn xuất trước tài liệu.

Đoạn kiểm tra nhanh trong Console

console.table({
  compatMode: document.compatMode,
  doctypeName: document.doctype?.name ?? null,
  publicId: document.doctype?.publicId ?? null,
  systemId: document.doctype?.systemId ?? null
});

Kết quả mong đợi cho tài liệu hiện đại thường là:

  • compatMode: "CSS1Compat"
  • doctypeName: "html"
  • publicId: ""
  • systemId: ""

Cách kiểm tra Doctype trên WordPress

Trong WordPress, Doctype thường nằm trong file template header của theme, trước phần tử <html>. Với theme block hoặc hệ thống builder, cấu trúc có thể được theme hoặc framework tạo tự động.

Không nên sửa trực tiếp theme cha nếu thay đổi sẽ bị ghi đè khi cập nhật. Trước khi can thiệp:

  • Xác định theme cha, theme con và builder đang hoạt động.
  • Sao lưu file cùng cơ sở dữ liệu.
  • Kiểm tra có cảnh báo PHP xuất trước HTML hay không.
  • Kiểm tra plugin cache và CDN sau khi sửa.
  • Test trang chủ, bài viết, trang WooCommerce và landing page.
  • Kiểm tra cả source khi đăng xuất để tránh toolbar quản trị.

Nếu website có nhiều lỗi template, một dịch vụ Audit Website nên kiểm tra đồng thời Doctype, charset, viewport, canonical, schema, HTTP status, JavaScript và khả năng hiển thị mobile thay vì chỉ sửa một dòng.

Cách sửa lỗi thiếu hoặc sai Doctype

Website HTML tĩnh

Thêm dòng sau ở đầu mỗi tài liệu đầy đủ:

<!doctype html>

Sau đó kiểm tra HTML Checker và test bố cục. Nếu trang trước đó được thiết kế dựa trên quirks mode, chuyển sang no-quirks có thể làm giao diện thay đổi. Khi đó cần sửa CSS chứ không nên xóa Doctype để giữ hành vi cũ.

Ứng dụng dùng template

Chỉ thêm Doctype tại layout gốc, không chèn trong partial, component hoặc nội dung AJAX. Một response HTML đầy đủ chỉ cần một Doctype ở phần đầu.

WordPress hoặc CMS

Sửa ở template đúng của theme con hoặc cơ chế override được hệ thống hỗ trợ. Nếu Doctype đã có nhưng source xuất thêm cảnh báo trước nó, cần sửa nguyên nhân cảnh báo, plugin hoặc output buffer.

Landing page do nền tảng bên thứ ba tạo

Kiểm tra source thực tế sau khi publish, không chỉ preview trong builder. Nếu nền tảng không cho can thiệp template, hãy gửi yêu cầu hỗ trợ hoặc chuyển sang môi trường có quyền kiểm soát phù hợp.

Trong dự án thiết kế website, Doctype nên được kiểm tra trong bộ tiêu chí nghiệm thu cùng responsive, accessibility, hiệu suất, tracking và tính tương thích trình duyệt.

Những lỗi Doctype thường gặp

  • Bỏ hẳn Doctype: Tài liệu text/html có thể vào quirks mode.
  • Gõ sai tên: Ví dụ <!doctyp html> không phải cú pháp hợp lệ.
  • Đặt Doctype trong body: Parser bỏ qua hoặc báo lỗi vì khai báo không ở vị trí preamble.
  • Dùng nhiều Doctype: Chỉ khai báo đầu tiên đúng vị trí mới có ý nghĩa chọn mode.
  • Chèn Doctype trong fragment: Nội dung AJAX, component hoặc block không cần Doctype riêng.
  • Sao chép Doctype cũ: Có thể kích hoạt limited-quirks hoặc tạo phụ thuộc không cần thiết.
  • Cho rằng Doctype sửa mọi lỗi CSS: Layout vẫn cần CSS và viewport đúng.
  • Cho rằng khoảng trắng luôn gây quirks: Không đúng với thuật toán parser hiện đại, dù vẫn nên giữ source sạch.
  • Chỉ kiểm tra trang chủ: Template phụ có thể xuất HTML khác.
  • Sửa trực tiếp theme cha: Thay đổi dễ mất sau cập nhật.

Trường hợp nào không cần Doctype?

Không phải mọi đoạn HTML đều là tài liệu đầy đủ:

  • HTML fragment được chèn vào một tài liệu có sẵn không cần Doctype.
  • Template component chỉ chứa một phần giao diện không cần Doctype.
  • Nội dung trong trình soạn thảo WordPress không nên chèn Doctype.
  • Email HTML có thể được nền tảng đóng gói theo cấu trúc riêng, nhưng tài liệu đầy đủ vẫn nên tuân theo yêu cầu của hệ thống gửi.
  • Tài liệu XML thực sự được phục vụ bằng MIME type XML không cần Doctype để bật no-quirks mode.

Doctype thuộc cấp tài liệu, không thuộc cấp bài viết hoặc component. Vì vậy, khi tối ưu nội dung trong WordPress, không được chèn <!doctype html> vào phần article.

Doctype và bảo trì website doanh nghiệp

Doctype chỉ là một kiểm tra nhỏ trong chất lượng mã nguồn, nhưng có giá trị vì dễ tự động hóa. Đội kỹ thuật có thể thêm kiểm tra vào CI/CD để ngăn template thiếu khai báo được đưa lên production.

Checklist kiểm soát nên gồm:

  • Response trả đúng Content-Type.
  • Doctype hợp lệ ở cấp tài liệu.
  • Charset khai báo sớm trong head.
  • Viewport phù hợp mobile.
  • Title, canonical và meta robots đúng.
  • HTML không có lỗi cấu trúc nghiêm trọng.
  • JavaScript không làm mất nội dung chính.
  • Biểu mẫu và CTA hoạt động trên thiết bị thật.
  • Monitoring phát hiện lỗi 5xx và thay đổi template.

Một gói quản trị website nên quy định rõ ai chịu trách nhiệm theme, plugin, code, backup, staging, kiểm thử và thời gian phản hồi khi giao diện bị lỗi.

“Doctype là một dòng mã nhỏ nhưng cho thấy cách đội ngũ quản trị đối xử với chất lượng nền tảng. Giá trị của nó không nằm ở việc tạo ra thứ hạng, mà ở việc giúp trình duyệt bắt đầu từ đúng chế độ và giảm một nhóm lỗi tương thích hoàn toàn có thể phòng tránh.”

Anh Thắng Giấu Tên – CEO Xuyên Việt Media

Checklist kiểm tra Doctype trước khi xuất bản

  • Source có đúng một <!doctype html> ở phần đầu.
  • document.doctype.name trả về html.
  • document.compatMode không trả về BackCompat.
  • Không có cảnh báo PHP hoặc nội dung lạ xuất trước template.
  • HTML Checker không báo lỗi Doctype.
  • Trang chủ và template phụ đều dùng cùng mode.
  • Viewport và charset được khai báo đúng.
  • Giao diện được test trên Chrome, Safari và Firefox.
  • Responsive được kiểm tra trên thiết bị thật.
  • Không chèn Doctype vào nội dung bài viết hoặc fragment.

Câu hỏi thường gặp về Doctype HTML

Doctype có phải thẻ HTML không?

Không. Doctype là khai báo mở đầu của tài liệu, không phải phần tử và không có thẻ đóng.

Cú pháp Doctype nào nên dùng hiện nay?

Hầu hết website nên dùng <!doctype html>. Đây là cú pháp đơn giản được HTML Standard hiện hành khuyến nghị để kích hoạt no-quirks mode.

Thiếu Doctype có làm website không chạy không?

Website vẫn có thể hiển thị, nhưng tài liệu text/html thường vào quirks mode. CSS có thể hoạt động khác dự kiến, đặc biệt với code cũ hoặc bố cục phức tạp.

Khoảng trắng trước Doctype có luôn gây quirks mode không?

Không. HTML parser hiện đại bỏ qua một số khoảng trắng ASCII ở giai đoạn đầu. Dù vậy, vẫn nên đặt Doctype trước nội dung khác để source rõ ràng và tương thích rộng.

Comment trước Doctype có làm hỏng website không?

Không nhất thiết trong trình duyệt hiện đại. Parser có thể xử lý comment trước Doctype mà vẫn chọn no-quirks mode. Tuy nhiên, nên đặt comment sau Doctype để tránh vấn đề với công cụ hoặc trình duyệt cũ.

Doctype có giúp tăng thứ hạng SEO không?

Google không công bố Doctype là tín hiệu xếp hạng trực tiếp. Doctype đúng hỗ trợ chế độ hiển thị ổn định, từ đó có thể gián tiếp giúp trải nghiệm và việc bảo trì website.

Doctype có ảnh hưởng tốc độ tải trang không?

Bản thân dòng khai báo có kích thước rất nhỏ và không phải tài nguyên tải ngoài. Ảnh hưởng chính là mode hiển thị, không phải giảm thời gian tải. Hiệu suất phụ thuộc máy chủ, ảnh, CSS, JavaScript, font và nhiều yếu tố khác.

Kiểm tra quirks mode bằng cách nào?

Mở Console và chạy document.compatMode. BackCompat là quirks mode; CSS1Compat cho biết tài liệu không ở quirks mode.

Có cần đổi Doctype HTML 4 sang Doctype mới ngay không?

Không nên thay trên production mà chưa kiểm thử. Website cũ có thể phụ thuộc CSS hoặc markup lịch sử. Hãy thử trên staging, validate và sửa lỗi bố cục trước khi triển khai.

Doctype có cần thêm vào từng bài WordPress không?

Không. Doctype nằm trong template tài liệu do theme tạo. Nội dung bài viết chỉ là một phần trong body và không được chèn Doctype riêng.

Kết luận

Doctype là khai báo mở đầu giúp tài liệu HTML hiện đại sử dụng no-quirks mode. Cú pháp nên dùng là <!doctype html>. Dòng này không phải thẻ HTML, không tải DTD, không tự tạo responsive và không phải tín hiệu xếp hạng Google.

Thiếu hoặc dùng sai Doctype có thể khiến tài liệu text/html rơi vào quirks mode hoặc limited-quirks mode, làm một số quy tắc bố cục hoạt động khác dự kiến. Tuy nhiên, không nên phóng đại rằng Doctype sai chắc chắn làm Core Web Vitals tăng vọt, cạn crawl budget hoặc khiến Googlebot không nhìn thấy liên kết.

Cách kiểm tra đáng tin cậy là xem source, đọc document.doctype, kiểm tra document.compatMode và chạy HTML Checker. Nếu website đang dùng Doctype lịch sử, hãy thử nghiệm trên staging trước khi chuyển đổi. Một dòng khai báo đúng là nền tảng cần có, nhưng chất lượng website vẫn phụ thuộc toàn bộ hệ thống HTML, CSS, JavaScript, máy chủ, nội dung và quy trình quản trị.

Tài liệu tham khảo

  • Google Search Central. (2017). What crawl budget means for Googlebot.
  • Google Search Central. (2025). Understanding Core Web Vitals and Google Search results.
  • Google Search Central. (2025). Understanding page experience in Google Search results.
  • Google Search Central. (n.d.). Understand JavaScript SEO basics.
  • MDN Web Docs. (2025). Document: compatMode property.
  • MDN Web Docs. (2025). Understanding quirks and standards modes.
  • WHATWG. (2026). HTML Living Standard: The DOCTYPE.
  • WHATWG. (2026). HTML Living Standard: Parsing HTML documents.
  • World Wide Web Consortium. (n.d.). The W3C Markup Validation Service.