Chuyển đến nội dung

Nén HTML

Xóa chú thích và khoảng trắng, thu gọn CSS và JavaScript bên trong trang — mà không làm xáo trộn khoảng cách thực sự hiển thị. Mã nguồn của bạn không bao giờ rời khỏi trình duyệt.

  • Không bao giờ lưu trữ
  • Không xếp hàng, không phải chờ
  • Không cần đăng ký, không watermark
Đã nén

HTML đã nén sẽ hiện ở đây.

Cách hoạt động

1

Dán mã HTML

Hoặc thả file vào. Không lưu trữ gì cả — điều này với mã nguồn còn quan trọng hơn hầu hết mọi thứ khác.

2

Chọn mức độ nén

Chú thích, khoảng trắng, CSS nội tuyến và JavaScript nội tuyến đều có công tắc riêng.

3

Sao chép hoặc tải xuống

Bạn sẽ thấy file đã nhỏ đi bao nhiêu, trước và sau.

Khoảng trắng quan trọng, và khoảng trắng không quan trọng

Trong HTML, khoảng trắng giữa hai phần tử inline là một dấu cách thật, và đây chính là điều phân biệt một công cụ nén cẩn thận với một công cụ làm hỏng trang. Gộp mất dấu xuống dòng giữa hai liên kết thì các từ dính liền vào nhau trên màn hình; gộp phần thụt lề bên trong khối pre hoặc textarea thì chính nội dung bị thay đổi, vì khoảng trắng ở đó là nội dung. Vì vậy, khoảng trắng chỉ bị xóa ở những chỗ chắc chắn không hiển thị, và được giữ nguyên ở những chỗ có hiển thị. Một công cụ xóa mọi khoảng trắng như nhau sẽ cho ra file nhỏ hơn và một trang sai thấy rõ.

Chú thích bị xóa, vì chúng dành cho người bảo trì mã nguồn chứ không phải cho người đọc — ngoại trừ chú thích điều kiện, vốn là chỉ thị chứ không phải ghi chú. Các thuộc tính thừa bị bỏ đi: type="text/javascript" trên thẻ script đã là mặc định suốt một thập kỷ, còn method="get" trên form chỉ nói lại điều form vốn làm.

Bỏ dấu nháy của thuộc tính là HTML hợp lệ và mặc định tắt, một cách có chủ ý. Đặc tả cho phép giá trị thuộc tính không có dấu nháy, miễn là nó không chứa dấu cách hay ký tự khó xử lý, và trình duyệt xử lý hoàn hảo. Template engine thì thường không: một biểu thức Blade, Twig, Handlebars hay JSX bên trong thuộc tính không có dấu nháy sẽ không còn được phân tích đúng, và lỗi xuất hiện lúc build trong một file chẳng ai muốn đọc. Phần tiết kiệm được thì nhỏ còn rủi ro thì không, nên bạn phải tự bật nếu muốn.

Thước đo trung thực cho những gì bạn được lợi là sau khi nén gzip, không phải trước. Máy chủ gửi HTML đã nén bằng gzip hoặc brotli, và các thuật toán này cực kỳ giỏi xử lý khoảng trắng lặp lại — nên một tài liệu nén từ 100 KB xuống 70 KB có thể chỉ giảm từ 12 KB xuống 11 KB khi truyền đi. Nén HTML đáng làm, và đó là phần nhỏ nhất trong ba phần; stylesheet và script mới là nơi chiếm nhiều dung lượng thật sự.

Khi bạn cần công cụ khác

Với cả một website chứ không phải một file, việc này nên nằm trong quy trình build thay vì trong một tab trình duyệt. Mọi framework và trình tạo trang tĩnh hiện nay đều nén HTML khi build, còn làm thủ công thì việc đó sẽ dừng ngay khi có người quên. Các thư viện đứng sau chúng cho phép cấu hình đến từng phép biến đổi riêng lẻ, rất đáng dùng khi một quy tắc cụ thể gây rắc rối.

Trước khi tối ưu mã HTML, hãy kiểm tra xem trang thực sự nặng bao nhiêu. Ở gần như mọi website thực tế, HTML chỉ là số lẻ so với ảnh, phông chữ và JavaScript — Lighthouse hoặc bảng Network của chính trình duyệt sẽ cho bạn biết trong vài giây, và câu trả lời thường là một ảnh banner chưa tối ưu tốn nhiều hơn toàn bộ mã HTML trên trang.

Câu hỏi thường gặp

Mã của tôi có bị lưu ở đâu không?

Không, và với mã nguồn thì đó chính là điều cốt yếu. Không lưu trữ gì cả và không máy chủ nào nhìn thấy nó. Dán mã nguồn độc quyền vào một công cụ nén online có gửi nó đi đâu đó chính là làm lộ mã, bất kể trang đó nói gì về việc lưu giữ — và đó đúng là loại việc người ta làm vội vàng mà không suy nghĩ.

Nén có làm thay đổi giao diện trang không?

Không, với cách thiết lập ở đây. Khoảng trắng chỉ được gộp ở những chỗ không hiển thị: giữa các phần tử khối như div và mục danh sách. Khoảng trắng GIỮA CÁC PHẦN TỬ INLINE được giữ lại, vì xóa nó sẽ làm hai từ dính liền vào nhau thấy rõ — "</span> <span>" là một dấu cách thật trên màn hình còn "</span><span>" thì không. Nội dung của <pre> và <textarea> được giữ nguyên từng byte. Và việc bỏ các thẻ đóng không bắt buộc được cố ý tắt: đó là HTML hợp lệ, nhưng khá nhiều template engine và ứng dụng email phân tích kết quả sai.

Công cụ thực sự xóa những gì?

Chú thích, khoảng trắng vốn không bao giờ hiển thị, và phần thừa bên trong các khối <style> và <script>. Cấu trúc mã, thuộc tính và văn bản của bạn được giữ nguyên — công cụ được kiểm tra bằng cách phân tích trang trước và sau, rồi xác nhận số phần tử, các mục danh sách và văn bản hiển thị giống hệt nhau.

Tôi có nên bỏ dấu nháy của thuộc tính không?

Chỉ khi kết quả được gửi thẳng đến trình duyệt. Đó là HTML hợp lệ và giúp tiết kiệm một chút, nhưng thuộc tính không có dấu nháy làm hỏng một số template engine, một số ứng dụng email và hầu hết các trình phân tích đơn giản. Tùy chọn này mặc định tắt và trang sẽ cảnh báo bạn khi bật lên.

Công cụ có nén CSS và JavaScript bên trong trang không?

Có, cả hai, theo cùng cách như công cụ nén CSS và JavaScript của chúng tôi. Một ngoại lệ: nếu CSS nội tuyến của bạn dùng nesting gốc hoặc media query hiện đại, bước nén CSS sẽ bị tắt cho lần chạy đó — công cụ nén CSS ra đời trước các tính năng này và sẽ lặng lẽ xóa mất quy tắc. HTML vẫn được nén, và trang sẽ báo cho bạn biết điều đó thay vì trả lại một trang thiếu style.

File sẽ nhỏ đi bao nhiêu?

Với HTML viết tay có thụt lề và chú thích, thường là 10–30%. Sau đó gzip trên máy chủ của bạn sẽ làm phần lớn việc còn lại — nén trước vẫn có ích vì hai cách cộng dồn hiệu quả, nhưng đừng mong chỉ riêng việc nén mã sẽ giảm file đi một nửa.

Tôi có thể nén cả website một lần không?

Ở đây chỉ từng trang một. Với website nhiều trang, hãy nén trong bước build hoặc deploy để mọi trang đều được xử lý giống nhau ở mỗi lần phát hành — và lưu mã nguồn dễ đọc trong hệ thống quản lý phiên bản, đừng bao giờ lưu bản đã nén.

Nên biết: Khoảng trắng chỉ được gộp ở những chỗ không hiển thị, nên chữ bên trong pre và textarea được giữ nguyên hoàn toàn, còn khoảng trắng giữa các phần tử inline vẫn được giữ lại. Bỏ dấu nháy của thuộc tính là HTML hợp lệ nhưng làm hỏng một số template engine, vì vậy tùy chọn này mặc định tắt.

Đặt công cụ này lên website của bạn

Miễn phí cho mọi blog, trang lớp học hay bài viết hướng dẫn. Chỉ cần dán một đoạn mã là khách truy cập có thể dùng ngay trên trang của bạn.