Lỗi render JavaScript làm một trang trông đầy đủ trên trình duyệt nhưng thiếu chữ trong bản Google dùng để lập chỉ mục. Mười lỗi bên dưới đi từ giao diện (accordion, nút bấm, lazy-load) tới kiến trúc (CSR, page builder, Shadow DOM). Mỗi lỗi có dấu hiệu, cách kiểm và cách sửa, đối chiếu với tài liệu của Google, MDN và Chrome đọc ngày 03/10/2026. Khái niệm render có ở bài JavaScript SEO và Rendering.
Tài liệu trả phí
Bản đầy đủ: Lỗi Render JavaScript: 10 Lỗi Khiến Google Và AI Không Đọc Được
Phần đọc miễn phí là trọn bài. Bản đầy đủ có thêm bộ tài nguyên làm theo viết riêng cho bản bán: checklist, quy trình từng bước, bảng lỗi, mẫu và nghiệm thu, kèm tệp PDF và Excel.
- Đọc trên trang học: trọn 8.629 chữ
- Bộ tài nguyên làm theo: checklist, quy trình 17 bước, bảng lỗi, mẫu, nghiệm thu (6 bảng)
- PDF: 21 trang, tải về
- Excel: 18 bảng và 44 dòng checklist có cột đánh dấu
- Quyền dùng: mua một lần, sở hữu vĩnh viễn
399.000đ thanh toán 16 USD qua PayPal hoặc thẻ Visa, Mastercard
Xem trước bản đầy đủ: ba ảnh chụp từ chính tệp PDF và Excel bạn nhận sau khi mua.



Google render JavaScript và lập chỉ mục ra sao?
Google xử lý trang JavaScript qua ba giai đoạn: thu thập, render và lập chỉ mục. Googlebot tải HTML, xếp trang vào hàng đợi render, rồi một Chromium không giao diện chạy JavaScript. Google dùng HTML đã render để lập chỉ mục, nên chữ nào không có trong HTML đó thì không vào chỉ mục, dù người dùng vẫn thấy.
| Giai đoạn | Google làm gì | Lỗi render hay gắn với giai đoạn này |
|---|---|---|
| Thu thập (crawling) | Đọc robots.txt, tải HTML, lấy URL từ thẻ a có href | robots.txt chặn tệp JavaScript, link dựng bằng sự kiện onclick, URL dạng #/ |
| Render | Chromium không giao diện chạy JavaScript khi tài nguyên của Google cho phép | Nội dung cần bấm, cần cuộn, cần quyền camera, cần WebSocket |
| Lập chỉ mục (indexing) | Dùng HTML đã render để lập chỉ mục và tìm thêm link | Chữ không hiện trong HTML đã render, trang lỗi trả mã 200 |
| Nguồn: Google Search Central, JavaScript SEO basics và Fix Search-related JavaScript problems, đọc ngày 03/10/2026. | ||
Trang Understand the JavaScript SEO basics của Google ghi: "Google Search runs JavaScript with an evergreen version of Chromium". Trang đó cũng ghi trang có thể nằm trong hàng đợi render "a few seconds, but it can take longer than that", và khuyên render phía máy chủ hoặc pre-render vì "not all bots can run JavaScript".
Một giới hạn ít người để ý: theo tài liệu Googlebot, khi thu thập cho Google Search, Googlebot chỉ đọc 2MB đầu của mỗi tệp được hỗ trợ, tính trên dữ liệu chưa nén. Mỗi tệp CSS, JavaScript được tải riêng và chịu cùng giới hạn. Phần vượt giới hạn không được gửi đi xét lập chỉ mục.
| Công cụ | Xem được gì | Dùng khi |
|---|---|---|
| Kiểm tra URL trong Search Console | HTML đã render, tài nguyên đã tải, đầu ra JavaScript. Ảnh chụp trang chỉ có ở kiểm tra trực tiếp | Trang thuộc site bạn đã xác minh |
| Rich Results Test | HTML đã render, tài nguyên, lỗi JavaScript | Trang chưa xác minh, trang mẫu, trang của bên khác |
| Xem mã nguồn và tắt JavaScript trên trình duyệt | HTML gốc máy chủ trả về, phần chữ còn lại khi script không chạy | So nhanh HTML gốc với trang đầy đủ trước khi mở công cụ của Google |
| Nguồn: Google Search Console Help (URL Inspection), Google Search Central. Dòng thứ ba là cách làm của Danh Nolan. | ||
Cách dùng công cụ Kiểm tra URL có ở bài Indexing và Rendering. Bảng tóm tắt mười lỗi, để bạn đối chiếu nhanh trước khi đọc từng mục:
| Lỗi | Dấu hiệu khi kiểm | Hướng sửa |
|---|---|---|
| Accordion tải chữ khi bấm | Chữ trong accordion không có trong HTML đã render | Đưa chữ vào HTML, dùng details hoặc hidden=until-found |
| Nội dung chỉ tải sau khi bấm | Nút Xem thêm, tab gọi API, HTML đã render thiếu phần đó | Render sẵn phần chữ, link phân trang bằng thẻ a có href |
| Lazy-load cho chữ | Đoạn chữ cuối trang thiếu trong HTML đã render | Nạp khi vào khung nhìn, không lazy-load chữ chính |
| Chỉ render phía máy khách | Mã nguồn gần như trống, chỉ có thẻ div gốc | Server-side rendering, static rendering hoặc hydration |
| Ẩn đoạn trả lời trên di động | Bản di động ít chữ hơn bản máy tính | Giữ đủ nội dung trên di động, thu gọn bằng accordion |
| Nhảy cấp tiêu đề | H1 dựng bằng div, H2 lẫn H4 không theo cấp | Một H1 thật, H2 và H3 theo đúng ý |
| Chặn JS, CSS trong robots.txt | Tài nguyên bị chặn trong mục More info | Mở quyền thu thập cho tệp cần để dựng trang |
| Schema lệch chữ trên trang | JSON-LD có giá, câu hỏi, đánh giá không thấy trên trang | Dựng schema từ cùng dữ liệu với phần hiển thị |
| Page builder nặng | Lỗi JavaScript trong console, tệp lớn, khối chữ trống | Bỏ script thừa, chữ chính nằm trong HTML |
| Shadow DOM thiếu slot | Chữ của component không hiện trong HTML đã render | Dùng slot hoặc Declarative Shadow DOM |
| Tổng hợp của Danh Nolan từ tài liệu Google Search Central, MDN và Chrome for Developers, đọc ngày 03/10/2026. | ||
Google lập chỉ mục HTML đã render, không lập chỉ mục cái bạn thấy trên màn hình. Mọi lỗi bên dưới đều kiểm bằng cách so hai thứ đó.
Nội dung trong accordion có bị Google bỏ qua không?
Nội dung trong accordion không bị Google bỏ qua nếu chữ đã có sẵn trong HTML lúc tải trang. Google khuyên trang di động gom nội dung vào accordion hoặc tab để tiết kiệm chỗ, và xếp phần nằm sau tab vào nội dung chính. Lỗi chỉ xảy ra khi accordion gọi JavaScript để tải chữ lúc người dùng bấm mở.
| Cách làm | Chữ có trong HTML lúc tải? | Google đọc được? |
|---|---|---|
| Thẻ details và summary của HTML | Có | Có, chữ nằm sẵn trong HTML |
| Ẩn bằng CSS hoặc thuộc tính hidden=until-found | Có | Có. Chrome ghi hidden=until-found cho công cụ tìm kiếm truy cập phần bị ẩn |
| Gọi API khi người dùng bấm mở | Không | Không, Google không bấm khi render |
| Nguồn: MDN (details), Chrome for Developers (hidden=until-found), Google Search Central, đọc ngày 03/10/2026. | ||
Bản nháp gốc ghi AI Overviews xem accordion là thông tin phụ và bỏ qua. Tôi không tìm thấy câu nào như vậy trong tài liệu của Google. Ngược lại, trang mobile-first indexing ghi: "Instead of removing content, consider moving content into accordions or tabs to save space." Trang Creating helpful, reliable, people-first content xếp "Tabbed or expanded sections" vào nội dung chính của trang.
Chính sách spam của Google cũng ghi accordion không vi phạm: trong mục hidden text, Google liệt kê "Accordion or tabbed content that toggle between hiding and showing additional content" vào nhóm thiết kế hợp lệ. Còn điều kiện để được dẫn link trong AI Overviews vẫn là trang được index và đủ điều kiện hiện snippet.
Cách làm an toàn là dùng thẻ details của HTML, hoặc thuộc tính hidden=until-found cho accordion tự viết. Chrome ghi thuộc tính này cho phép công cụ tìm kiếm truy cập phần bị ẩn, và Google Search còn tạo được link cuộn tới đúng đoạn đó.
<details>
<summary>Học phí gồm những gì?</summary>
<p>Chữ trả lời nằm sẵn trong HTML, Google đọc được dù người dùng chưa mở.</p>
</details>
Accordion không làm mất chữ. Accordion tải chữ bằng JavaScript khi bấm mới làm mất chữ.
Vì sao nội dung chỉ tải sau khi bấm bị Google bỏ sót?
Nội dung chỉ tải sau khi bấm bị bỏ sót vì Google không bấm, không vuốt và không gõ phím khi render. Tài liệu lập chỉ mục ưu tiên thiết bị di động ghi rõ Google không tải nội dung cần người dùng tương tác. Nút Xem thêm, tab gọi API, ô chọn tỉnh thành rồi mới hiện bảng giá đều rơi vào lỗi này.
Bốn dạng nội dung chỉ tải sau khi bấm
- Nút Xem thêm gọi API: phần bình luận, đánh giá, sản phẩm tiếp theo chỉ có sau khi bấm. Google chỉ thấy phần đầu.
- Tab nạp dữ liệu khi chọn: thông số kỹ thuật, bảng giá theo gói chỉ tải khi người dùng chọn tab. Tab đầu được đọc, các tab sau thì không.
- Bộ lọc, ô chọn bắt buộc: trang yêu cầu chọn tỉnh thành hoặc ngành rồi mới hiện nội dung. Google thấy một trang gần như trống.
- Nội dung dựa vào dữ liệu lưu lần trước: trang đọc cookie hoặc Local Storage để quyết định hiện gì. Google không giữ các dữ liệu đó giữa hai lần tải.
Câu gốc trong trang mobile-first indexing: "Google won't load content that requires user interactions (for example, swiping, clicking, or typing) to load." Trang về lazy-load nói ngắn hơn: "Google Search does not interact with your page."
Trang Fix Search-related JavaScript problems thêm hai giới hạn. Dịch vụ render của Google không giữ Local Storage, Session Storage và cookie giữa các lần tải trang. Googlebot cũng từ chối mọi yêu cầu cấp quyền, ví dụ quyền camera hay vị trí.
Cách sửa: render sẵn phần chữ trong HTML rồi ẩn hiện bằng CSS. Với danh sách dài, mỗi trang phân trang có URL riêng và được trỏ tới bằng thẻ a có href. Google ghi trong trang link thu thập được rằng thường chỉ thu thập được link là thẻ a có thuộc tính href.
Nếu một người phải bấm mới thấy chữ, thì Google không thấy chữ đó. Đưa chữ vào HTML, để nút bấm chỉ lo việc ẩn hiện.
Lazy-load cho phần chữ gây lỗi render ra sao?
Lazy-load gây lỗi render khi chữ chỉ được nạp lúc người dùng cuộn tới, vì Google không cuộn trang. Google chấp nhận lazy-load nếu nội dung nạp ngay khi nằm trong khung nhìn, bằng thuộc tính loading của trình duyệt hoặc IntersectionObserver. Phần chữ chính và nội dung đầu trang thì không nên lazy-load.
| Cách làm | Google thấy nội dung? | Ghi chú |
|---|---|---|
| Thuộc tính loading=lazy cho ảnh, iframe | Có | Cách có sẵn của trình duyệt, không cần thư viện |
| IntersectionObserver hoặc thư viện nạp khi vào khung nhìn | Có | Không phụ thuộc thao tác cuộn hay bấm |
| Nạp chữ khi bắt sự kiện cuộn | Không chắc | Google ghi các cách hợp lệ không dựa vào thao tác cuộn hay bấm |
| Cuộn vô tận không có URL riêng cho từng phần | Không thấy các phần sau | Mỗi phần cần một URL cố định, ví dụ ?page=12 |
| Nguồn: Google Search Central, Fix lazy-loaded content, đọc ngày 03/10/2026. | ||
Trang Fix lazy-loaded content của Google ghi ba cách hợp lệ và một lời dặn: "Don't add lazy-loading to content that is likely to be immediately visible when a user opens a page." Với cuộn vô tận, Google khuyên: "Give each chunk its own persistent, unique URL."
Lazy-load sinh ra cho ảnh và video, những thứ tốn băng thông. Một đoạn văn chỉ nặng vài KB, lazy-load nó gần như không làm trang nhanh hơn, nhưng lại thêm rủi ro mất chữ. Cách dùng thuộc tính loading cho ảnh có ở bài Lazy Loading là gì.
Cách kiểm: mở Kiểm tra URL, xem HTML đã render, tìm câu cuối của bài. Google ghi nếu URL ảnh, video có trong thuộc tính src của thẻ img, video trong HTML đã render thì cách cài lazy-load đang chạy đúng.
Lazy-load cho ảnh, không cho chữ. Phần chữ chính nên có mặt trong HTML ngay lần tải đầu.
Trang chỉ render phía máy khách (CSR) rủi ro gì?
Trang chỉ render phía máy khách gửi về HTML gần như trống, nội dung chỉ có sau khi JavaScript chạy xong. Google vẫn render được, nhưng trang phải chờ trong hàng đợi, một lỗi script làm mất cả trang, và bot không chạy JavaScript chỉ thấy khung rỗng. Google khuyên dùng server-side rendering, static rendering hoặc hydration.
| Cách render | Định nghĩa của web.dev | HTML gốc đã có chữ? |
|---|---|---|
| Server-side rendering (SSR) | Render ứng dụng trên máy chủ để gửi HTML, không gửi JavaScript, về máy khách | Có |
| Prerendering, static rendering | Chạy ứng dụng lúc build để lưu trạng thái đầu thành HTML tĩnh | Có |
| Hydration | Chạy script phía máy khách để thêm trạng thái và tương tác cho HTML đã render từ máy chủ | Có |
| Client-side rendering (CSR) | Render ứng dụng trong trình duyệt, dùng JavaScript để sửa DOM | Không, chữ chỉ có sau khi script chạy |
| Nguồn: web.dev, Rendering on the Web, đọc ngày 03/10/2026. | ||
Trang Dynamic rendering as a workaround của Google ghi: "Dynamic rendering is a workaround and not a recommended solution", và khuyên dùng server-side rendering, static rendering hoặc hydration. Định nghĩa từng cách nằm ở bài Rendering on the Web của web.dev.
Ba lỗi đi kèm trang CSR và một ứng dụng một trang (SPA)
- Soft 404: trang lỗi vẫn trả mã 200 nên có thể bị lập chỉ mục. Google khuyên chuyển hướng bằng JavaScript tới URL máy chủ trả 404, hoặc thêm noindex.
- URL dạng #/: Google ghi cơ chế AJAX-crawling đã ngừng từ 2015, nên không dựa vào phần sau dấu # để tải nội dung khác nhau. Dùng History API.
- noindex trong HTML gốc: Google có thể bỏ qua bước render khi gặp noindex, nên dùng JavaScript để gỡ noindex sau đó có thể không chạy.
Nếu khung của bạn hỗ trợ, cách ít rủi ro nhất là để máy chủ trả HTML có sẵn tiêu đề, đoạn trả lời và phần thân, rồi JavaScript chỉ thêm tương tác. Chi tiết kỹ thuật có ở bài JavaScript SEO và Rendering.
CSR không làm Google mù, nhưng đặt mọi chữ vào một lần chạy script. Có HTML gốc đủ chữ thì lỗi script không còn làm mất cả trang.
Ẩn đoạn trả lời trên di động ảnh hưởng gì?
Ẩn hay cắt đoạn trả lời trên bản di động làm Google mất đoạn đó, vì Google lập chỉ mục chủ yếu bằng bản di động. Google ghi việc lập chỉ mục của site lấy từ bản di động và khuyên bản di động có cùng nội dung với bản máy tính. Thu gọn bằng accordion thì được, xóa khỏi bản di động thì không.
| Thứ cần giống | Google ghi gì | Lỗi render hay gặp |
|---|---|---|
| Nội dung chính | Bản di động nên có cùng nội dung với bản máy tính | Theme di động bỏ đoạn mở đầu, bảng, hỏi đáp để trang gọn |
| Tiêu đề | Dùng cùng tiêu đề rõ nghĩa trên cả hai bản | Bản di động đổi H2 thành chữ in đậm thường |
| Dữ liệu có cấu trúc | Bản di động và máy tính có cùng structured data | Plugin chỉ chèn schema trên giao diện máy tính |
| Thẻ meta robots | Dùng cùng thẻ meta robots trên hai bản | Bản di động có noindex sót lại |
| Tài nguyên | Không chặn URL tài nguyên của bản di động | Ảnh, CSS của bản di động nằm ở thư mục bị chặn |
| Nguồn: Google Search Central, Mobile-first indexing best practices, đọc ngày 03/10/2026. | ||
Câu gốc trong trang Mobile-first indexing best practices: "just make sure that the content is equivalent to the desktop site, since indexing on your site comes from the mobile site." Tức là thứ bản di động thiếu thì chỉ mục cũng thiếu.
Đoạn bị cắt nhiều nhất là đoạn trả lời ngay dưới tiêu đề, vì nó chiếm chỗ đầu màn hình. Đó lại là đoạn viết theo Answer-First, tức đoạn để người đọc và AI (SI - Super Intelligence) lấy câu trả lời ngay. Trang AI features and your website của Google cũng khuyên nội dung quan trọng nên có ở dạng chữ.
Cách kiểm: chạy Kiểm tra URL, xem HTML đã render và tìm đoạn trả lời. Theo Google, phần lớn lượt thu thập của Googlebot dùng trình thu thập cho điện thoại. Nếu không thấy, sửa template di động trước khi viết thêm nội dung.
Bản di động là bản Google đọc. Đoạn trả lời nào không có trên di động thì xem như không có.
Nhảy cấp tiêu đề có làm Google đọc sai trang không?
Theo Google, nhảy cấp tiêu đề không làm Google Search đọc sai trang. Hướng dẫn SEO cơ bản của Google ghi tiêu đề đúng thứ tự rất có ích cho trình đọc màn hình, còn với Google Search thì dùng sai thứ tự không sao. Lỗi đáng sửa là tiêu đề chính không phải thẻ h1 thật, hoặc tiêu đề do JavaScript dựng muộn.
| Việc | Google ghi gì | Cách làm của Danh Nolan |
|---|---|---|
| Thứ tự H1, H2, H3 | Với Google Search, dùng sai thứ tự không sao | Vẫn giữ đúng cấp vì người đọc lướt và trình đọc màn hình |
| Số lượng tiêu đề | Không có số tiêu đề lý tưởng cho một trang | Mỗi H2 là một câu hỏi, mỗi mục tự trả lời được |
| Tiêu đề chính | Nên nổi bật nhất, ví dụ đặt trong thẻ h1 hiển thị đầu tiên | Một H1 thật trong HTML gốc, không dựng bằng div |
| Tiêu đề trên di động | Dùng cùng tiêu đề rõ nghĩa với bản máy tính | Không đổi H2 thành chữ in đậm trên theme di động |
| Nguồn: Google Search Central, SEO Starter Guide, Title links, Mobile-first indexing, đọc ngày 03/10/2026. | ||
Câu gốc trong SEO Starter Guide: "Having your headings in semantic order is fantastic for screen readers, but from Google Search perspective, it doesn't matter if you're using them out of order." Bản nháp gốc xếp nhảy cấp tiêu đề vào lỗi render. Theo tài liệu trên, đó là lỗi trình bày, ảnh hưởng người đọc hơn là Google.
Phần liên quan tới render nằm ở tiêu đề chính. Trang Influencing your title links ghi Google xét cả thẻ title, tiêu đề hiển thị chính và các heading như h1 khi tạo tiêu đề kết quả tìm kiếm. Tiêu đề chính là một khối div do page builder dựng, hoặc chỉ có sau khi script chạy, làm tín hiệu đó yếu đi.
Quy tắc phân cấp chi tiết có ở bài Heading Structure.
Nhảy cấp H3 lên H4 không làm Google đọc sai. Một H1 dựng bằng div và chỉ hiện sau khi script chạy thì đáng sửa hơn.
Chặn JS, CSS trong robots.txt gây lỗi render gì?
Chặn tệp JavaScript hoặc CSS trong robots.txt làm Google render trang thiếu phần do các tệp đó dựng. Google ghi Search không render JavaScript từ tệp bị chặn, và khuyên đừng chặn tài nguyên nếu thiếu chúng thì trang khó hiểu hơn. Quy tắc dễ gây lỗi này là Disallow cho thư mục chứa theme, plugin hoặc thư viện JavaScript.
# Dễ gây lỗi render: chặn thư mục chứa JavaScript và CSS
User-agent: *
Disallow: /wp-content/plugins/
Disallow: /assets/js/
# Chặn đúng thứ không cần thu thập, để tài nguyên dựng trang mở
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Trang JavaScript SEO basics ghi: "Google Search won't render JavaScript from blocked files or on blocked pages." Trang Introduction to robots.txt cho phép chặn tệp ảnh, script, CSS không quan trọng, nhưng nếu thiếu chúng thì trang khó hiểu hơn thì "don't block them, or else Google won't do a good job of analyzing pages that depend on those resources."
Ba bước kiểm tài nguyên bị chặn
- Xem tài nguyên trang: trong Kiểm tra URL, mở Xem trang đã kiểm tra, rồi More info, tìm tài nguyên không tải được và lý do bị chặn bởi robots.txt.
- Đọc robots.txt: tìm mọi dòng Disallow trỏ vào thư mục chứa tệp .js, .css, ảnh dùng trong phần nội dung.
- Kiểm tầng CDN và tường lửa: Google khuyên cho phép thu thập ở cả robots.txt lẫn CDN, hạ tầng hosting. Tường lửa chặn bot cũng làm thiếu tài nguyên.
Cách viết robots.txt và cách thử từng quy tắc có ở bài Robots.txt là gì.
Tệp nào cần để dựng phần chữ thì để Google tải được. Chặn tài nguyên là chặn luôn phần trang mà tài nguyên đó vẽ ra.
Schema lệch với chữ trên trang bị xử lý ra sao?
Schema lệch với chữ hiển thị vi phạm hướng dẫn về dữ liệu có cấu trúc của Google và có thể bị tác vụ thủ công. Theo Google, tác vụ này làm trang mất kết quả nhiều định dạng, không đổi thứ hạng trên web search. Lỗi render hay gặp là JSON-LD do JavaScript dựng từ dữ liệu khác phần hiển thị.
| Dạng lệch | Ví dụ | Cách sửa |
|---|---|---|
| Giá lệch | Schema Product ghi giá cũ, trang hiện giá mới | Dựng schema và phần hiển thị từ cùng một nguồn dữ liệu |
| Hỏi đáp không hiện | Schema FAQPage có câu hỏi không thấy trên trang | Chỉ đánh dấu câu hỏi người đọc thấy được |
| Đánh giá không có trên trang | Schema có điểm đánh giá, trang không hiện đánh giá nào | Bỏ phần đánh giá khỏi schema hoặc hiện đánh giá thật |
| Schema dựng lúc tải từ API | API trả dữ liệu khác bản đang hiện, hoặc lỗi nên schema rỗng | Kiểm JSON-LD trong HTML đã render bằng Rich Results Test |
| Nguồn: Google Search Central, General structured data guidelines, đọc ngày 03/10/2026. | ||
Trang General structured data guidelines ghi: "Don't mark up content that is not visible to readers of the page." Cùng trang đó ghi tác vụ thủ công về structured data "doesn't affect how the page ranks in Google web search". Bản nháp gốc gọi đây là tín hiệu spam. Tài liệu không ghi vậy, hậu quả được ghi là mất kết quả nhiều định dạng.
Google cho phép dựng JSON-LD bằng JavaScript và chèn vào trang, kèm lời dặn "Make sure to test your implementation". Với AI features, Google khuyên structured data khớp với chữ hiển thị trên trang. Các loại schema và cách gắn có ở bài Schema Markup.
Schema là bản mô tả của trang, không thêm được điều trang không nói. Dựng schema và chữ hiển thị từ cùng một dữ liệu thì không lệch.
Page builder nặng làm hỏng render trang thế nào?
Page builder nặng làm hỏng render khi chữ nằm trong khối do JavaScript dựng, khi tệp vượt giới hạn tải của Googlebot hoặc khi script lỗi giữa chừng. Tài liệu JavaScript của Google không nêu mốc giây nào để hủy render. Việc cần kiểm là HTML đã render có đủ chữ không và console có lỗi JavaScript không.
| Rủi ro | Tài liệu Google ghi gì | Cách kiểm |
|---|---|---|
| Tệp quá lớn | Googlebot đọc 2MB đầu của mỗi tệp, tính trên dữ liệu chưa nén, CSS và JavaScript tính riêng từng tệp | Đo dung lượng HTML và tệp JavaScript chính chưa nén |
| Script bị bỏ qua | Dịch vụ render có thể không tải tài nguyên không góp vào nội dung chính | Chữ chính không phụ thuộc script theo dõi, quảng cáo, chat |
| Bản JavaScript cũ | Dịch vụ render có thể bỏ qua header cache và dùng bản JavaScript, CSS cũ | Tên tệp có dấu vân tay nội dung, ví dụ main.2bb85551.js |
| Tính năng không hỗ trợ | Googlebot không hỗ trợ WebGL, WebSocket, WebRTC | Có đường tải nội dung qua HTTP thường |
| Lỗi JavaScript | Kiểm tra URL cho xem đầu ra console và lỗi | Mở More info, đọc JavaScript console messages |
| Nguồn: Google Search Central, Googlebot và Fix Search-related JavaScript problems, đọc ngày 03/10/2026. | ||
Bản nháp gốc ghi DOM Ready quá 4 giây hoặc 5 giây thì Google hủy render. Tôi không tìm thấy mốc đó trong Fix Search-related JavaScript problems hay trong JavaScript SEO basics, nên bỏ con số. Điều tài liệu ghi là trang chờ trong hàng đợi vài giây hoặc lâu hơn, và giới hạn dung lượng 2MB mỗi tệp.
Năm việc với site dựng bằng page builder
- Chữ chính trong HTML gốc: đoạn trả lời, H2 và thân bài nằm trong mã nguồn, không trong khối do script dựng sau.
- Gỡ widget không dùng: mỗi slider, popup, hiệu ứng thêm một tệp JavaScript. Bỏ khối không mang nội dung.
- Tắt nạp script toàn site: chỉ nạp script của form, bản đồ, slider ở trang có dùng chúng.
- Kiểm sau mỗi lần cập nhật plugin: một bản cập nhật có thể đổi cách khối nội dung được dựng.
- Đo trải nghiệm thật: theo dõi Core Web Vitals để biết script nặng có làm người dùng chờ hay không.
Cách gỡ CSS và JavaScript không dùng có ở bài Unused CSS, JavaScript là gì.
Page builder không có lỗi tự thân. Lỗi nằm ở chỗ chữ chính bị gói vào script, và bạn chỉ biết bằng cách xem HTML đã render.
Shadow DOM có làm Google mất nội dung không?
Shadow DOM không làm Google mất nội dung nếu nội dung hiện ra trong HTML đã render. Google ghi hỗ trợ web components và khi render sẽ làm phẳng shadow DOM cùng light DOM. Lỗi xảy ra khi component không dùng thẻ slot cho nội dung light DOM, hoặc chỉ dựng nội dung khi người dùng tương tác.
Shadow DOM là cây DOM ẩn gắn vào một phần tử. Theo MDN: "Shadow DOM allows hidden DOM trees to be attached to elements in the regular DOM tree". Nó giữ CSS và JavaScript của component tách khỏi phần còn lại của trang, nên hay gặp trong thư viện giao diện và widget nhúng.
Trang JavaScript SEO basics ghi: "When Google renders a page, it flattens the shadow DOM and light DOM content." Câu tiếp theo là điều kiện: "If the content isn't visible in the rendered HTML, Google won't be able to index it."
| Cách viết | Chữ có trong HTML đã render? | Ghi chú |
|---|---|---|
| Dùng thẻ slot để chiếu light DOM vào shadow DOM | Có | Cách Google đưa làm ví dụ trong tài liệu |
| Declarative Shadow DOM, render từ máy chủ | Có | Chrome ghi DSD đưa Shadow DOM lên máy chủ |
| Component bỏ qua light DOM, không có slot | Có thể không | Google khuyên đọc tài liệu của component hoặc đổi component |
| Nguồn: Google Search Central, MDN, Chrome for Developers, đọc ngày 03/10/2026. | ||
<my-component>
<p>Chữ light DOM, được chiếu vào shadow DOM qua thẻ slot.</p>
</my-component>
Với component cần render phía máy chủ, Declarative Shadow DOM cho phép viết shadow root ngay trong HTML. Chrome ghi: "Declarative Shadow DOM (DSD) removes this limitation, bringing Shadow DOM to the server." Kiểm bằng Rich Results Test hoặc Kiểm tra URL, tìm chữ của component trong HTML đã render.
Shadow DOM không giấu chữ khỏi Google. Component không chiếu chữ ra HTML đã render thì mới giấu.
Người làm SEO hay hỏi gì về lỗi render JavaScript?
Người làm SEO hay hỏi bốn câu về lỗi render JavaScript: bot AI có chạy JavaScript không, dynamic rendering còn dùng được không, nội dung ẩn có bị xem là gian lận không, và sửa xong bao lâu Google cập nhật. Câu trả lời ngắn cho từng câu nằm ngay bên dưới.
GPTBot, PerplexityBot có chạy JavaScript không?
Chưa có câu trả lời chính thức. Trang tài liệu bot của OpenAI và Perplexity, đọc ngày 03/10/2026, không có chữ nào về JavaScript hay render. Google thì ghi không phải bot nào cũng chạy được JavaScript. Vì vậy tôi giữ phần chữ chính trong HTML gốc để bot nào đọc cũng thấy.
Dynamic rendering còn dùng được không?
Dùng được nhưng Google không khuyến nghị. Google ghi dynamic rendering là cách tạm thời, chưa phải giải pháp được khuyến nghị, vì nó thêm độ phức tạp và tài nguyên. Google khuyên chuyển sang server-side rendering, static rendering hoặc hydration. Site đang chạy dynamic rendering nên lên kế hoạch bỏ dần.
Nội dung ẩn trong accordion có bị xem là gian lận không?
Không. Chính sách spam của Google liệt kê accordion, tab, slider và tooltip vào nhóm thiết kế không vi phạm. Thứ bị xem là gian lận là chữ ẩn chỉ để thao túng công cụ tìm kiếm, ví dụ chữ trắng trên nền trắng, chữ cỡ 0 hoặc chữ đẩy ra ngoài màn hình.
Sửa lỗi render xong bao lâu Google cập nhật?
Google không nêu mốc thời gian cố định. Tôi chạy kiểm tra trực tiếp trong Kiểm tra URL để xác nhận HTML đã render đủ chữ, rồi yêu cầu lập chỉ mục. Với lỗi trên nhiều URL, Google khuyên chạy kiểm tra trực tiếp vài trang rồi bấm Validate fix trong báo cáo.
Học kiểm và sửa lỗi render JavaScript ở đâu?
Bạn học kiểm và sửa lỗi render JavaScript ở buổi Technical của Khóa Học SEO Cơ Bản, 4.900.000đ cho 6 buổi học online. Muốn làm trên chính website của bạn thì Mentor SEO 1 kèm 1 có 12 buổi trong 4 tuần. Muốn biết site đang lỗi ở đâu trước thì bắt đầu từ công cụ tự chấm miễn phí.
| Lựa chọn | Chi phí | Hình thức | Hợp khi |
|---|---|---|---|
| chẩn đoán SQA-200™ (công cụ tự chấm) | Miễn phí | 15 câu theo sáu trụ cột, thang 200 điểm, ra danh sách chỗ nên sửa trước | Bạn muốn biết nên sửa gì trước |
| Phân tích SEO và GEO | 5.000.000đ, đăng ký Mentor 1 kèm 1 sau đó được trừ đủ vào học phí | Bản phân tích sâu một website do Danh Nolan làm | Bạn cần người soi lỗi trên site thật |
| Khóa Học SEO Cơ Bản | 4.900.000đ | 6 buổi online: ba buổi nền tảng Technical, On-page, Off-page và buổi thực hành | Bạn mới bắt đầu, cần nền kỹ thuật |
| Mentor SEO 1 kèm 1 | 15.000.000đ | 12 buổi trong 4 tuần trên 1 website thật, online chia sẻ màn hình | Bạn cần sửa lỗi ngay trên website đang chạy |
| Khóa học SEO Master | 18.000.000đ | 24 buổi trong 2 tháng, offline ở Quận 7, lớp dưới 5 học viên | Bạn muốn đi trọn quy trình SEO |
| Giá và số buổi lấy từ trang khóa học trên danhnolan.com, đọc ngày 03/10/2026. | |||
Trong SQA-200™, kiểm render nằm ở trụ Technical và trụ AI-Ready. Bảng chấm có trọng số cho từng lỗi, mẫu ghi lỗi và quy trình nghiệm thu sau khi sửa là phần tôi dùng khi phân tích và khi kèm học viên, không chép trọn ở đây. Mentor SEO 1 kèm 1 có thêm 30 ngày rà bài, 3 buổi xem dữ liệu và 6 tháng hỏi đáp sau khóa.
Bạn chọn lịch ở trang Đăng ký học SEO, hoặc nhắn Zalo 03 9999 5885, Zalo cá nhân của Danh Nolan, để hỏi khóa nào hợp với website của bạn.
Biết lỗi nằm ở đâu trước, rồi mới chọn khóa. Công cụ tự chấm miễn phí là bước đầu không tốn tiền.
Nguồn chính thức nào nói về lỗi render JavaScript?
Các dữ kiện về lỗi render JavaScript ở đây lấy từ tài liệu của chính Google Search Central, Search Console Help, web.dev, MDN và Chrome for Developers, cùng trang tài liệu bot của OpenAI và Perplexity. Tôi đọc lại toàn bộ ngày 03/10/2026, vì các trang này được cập nhật thường xuyên.
Mười hai nguồn gốc nên đọc khi sửa lỗi render
- Google Search Central: Understand the JavaScript SEO basics
- Google Search Central: Fix Search-related JavaScript problems
- Google Search Central: Fix lazy-loaded content
- Google Search Central: Dynamic rendering as a workaround
- Google Search Central: Mobile-first indexing best practices
- Google Search Central: Googlebot
- Google Search Central: General structured data guidelines
- Google Search Central: Spam policies for Google web search
- Search Console Help: URL Inspection tool
- web.dev: Rendering on the Web
- MDN: Using shadow DOM
- Chrome for Developers: Making collapsed content accessible with hidden=until-found
Tài liệu JavaScript của Google được sửa vài lần mỗi năm. Đọc lại nguồn gốc trước khi tin một con số về render.
Bước tiếp theo
Muốn tự làm được việc này trên website của bạn?
SEO Master hướng dẫn làm SEO trong 24 buổi, từ tư duy nền tảng tới triển khai và đo lường trên website thật.
Tài liệu trả phí
Bản đầy đủ: Lỗi Render JavaScript: 10 Lỗi Khiến Google Và AI Không Đọc Được
Phần đọc miễn phí là trọn bài. Bản đầy đủ có thêm bộ tài nguyên làm theo viết riêng cho bản bán: checklist, quy trình từng bước, bảng lỗi, mẫu và nghiệm thu, kèm tệp PDF và Excel.
- Đọc trên trang học: trọn 8.629 chữ
- Bộ tài nguyên làm theo: checklist, quy trình 17 bước, bảng lỗi, mẫu, nghiệm thu (6 bảng)
- PDF: 21 trang, tải về
- Excel: 18 bảng và 44 dòng checklist có cột đánh dấu
- Quyền dùng: mua một lần, sở hữu vĩnh viễn
399.000đ thanh toán 16 USD qua PayPal hoặc thẻ Visa, Mastercard
Cách kiểm và sửa lỗi render JavaScript
Các bước giúp bạn so HTML đã render với chữ trên màn hình, tìm đúng lỗi khiến Google bỏ sót nội dung và sửa để phần chữ chính có mặt ngay trong HTML gốc.
- Xem mã nguồn HTML gốcXem mã nguồn và tắt JavaScript trên trình duyệt để thấy HTML gốc máy chủ trả về và phần chữ còn lại khi script không chạy.
- Kiểm HTML đã renderChạy Kiểm tra URL trong Search Console cho trang đã xác minh, hoặc Rich Results Test cho trang chưa xác minh, rồi tìm câu cuối bài trong HTML đã render.
- Đọc tài nguyên và lỗi consoleMở More info để tìm tài nguyên không tải được vì robots.txt, đọc JavaScript console messages, rồi kiểm thêm CDN và tường lửa có chặn bot không.
- Đưa chữ chính vào HTMLRender sẵn đoạn trả lời, tiêu đề và thân bài trong HTML gốc, dùng thẻ details hoặc hidden=until-found cho accordion, để nút bấm chỉ lo việc ẩn hiện.
- Chọn cách render có HTML đủ chữVới trang chỉ render phía máy khách, chuyển sang server-side rendering, static rendering hoặc hydration, và với web component thì dùng thẻ slot hoặc Declarative Shadow DOM.
- Kiểm lại, yêu cầu lập chỉ mụcChạy kiểm tra trực tiếp trong Kiểm tra URL để xác nhận HTML đã render đủ chữ, rồi yêu cầu lập chỉ mục hoặc bấm Validate fix trong báo cáo.
Câu hỏi thường gặp về Lỗi render JavaScript
Giải đáp trực tiếp các câu hỏi thường gặp về Lỗi render JavaScript dựa trên dữ liệu triển khai thực tế, quy trình kiểm thử kỹ thuật và kinh nghiệm thực chiến trên website thật để tối ưu hiệu quả tìm kiếm.
Vì sao trang hiện đủ chữ trên trình duyệt mà Google vẫn bỏ sót nội dung?
Google lập chỉ mục HTML đã render, không lập chỉ mục cái bạn thấy trên màn hình. Chữ nào chỉ hiện sau khi bấm, cuộn, hoặc do script dựng mà không có trong HTML đó thì không vào chỉ mục, dù người dùng vẫn thấy đủ trên trình duyệt.
Vì sao trang lỗi trên ứng dụng một trang vẫn bị Google lập chỉ mục?
Trang lỗi trên ứng dụng một trang thường vẫn trả mã 200, nên Google xem đó là trang bình thường và có thể lập chỉ mục, gọi là soft 404. Google khuyên dùng JavaScript chuyển hướng tới URL mà máy chủ trả 404, hoặc thêm noindex cho trang lỗi.
Dùng JavaScript gỡ thẻ noindex sau khi tải trang có an toàn không?
Không an toàn. Khi HTML gốc có noindex, Google có thể bỏ qua bước render, nên đoạn JavaScript gỡ noindex sau đó có thể không chạy. Muốn trang được lập chỉ mục thì bỏ noindex ngay trong HTML gốc máy chủ trả về, rồi kiểm lại bằng Kiểm tra URL.
Vì sao Google vẫn dùng bản JavaScript cũ sau khi tôi đã cập nhật trang?
Dịch vụ render của Google có thể bỏ qua header cache và dùng bản JavaScript, CSS cũ. Cách xử lý là đặt tên tệp có dấu vân tay nội dung, ví dụ main.2bb85551.js, để tên tệp đổi theo nội dung và dịch vụ render không dùng nhầm bản cũ.
Googlebot đọc tối đa bao nhiêu dung lượng của mỗi tệp HTML, CSS, JavaScript?
Khi thu thập cho Google Search, Googlebot chỉ đọc 2MB đầu của mỗi tệp được hỗ trợ, tính trên dữ liệu chưa nén. Mỗi tệp CSS, JavaScript được tải riêng và chịu cùng giới hạn. Phần vượt giới hạn không được gửi đi xét lập chỉ mục, nên đo dung lượng HTML và tệp JavaScript chính chưa nén.
Kiểm tra URL trong Search Console và Rich Results Test khác nhau thế nào?
Kiểm tra URL dùng cho trang thuộc site bạn đã xác minh, cho xem HTML đã render, tài nguyên đã tải và đầu ra JavaScript. Ảnh chụp trang chỉ có ở kiểm tra trực tiếp. Rich Results Test dùng được cho trang chưa xác minh, trang mẫu hoặc trang của bên khác, cũng cho xem HTML đã render, tài nguyên và lỗi JavaScript.
Thuộc tính hidden=until-found khác thẻ details ở điểm nào khi làm accordion?
Thẻ details và summary là accordion có sẵn của HTML, chữ nằm sẵn trong mã. Thuộc tính hidden=until-found dùng cho accordion tự viết, ẩn chữ nhưng vẫn để công cụ tìm kiếm truy cập phần bị ẩn. Cả hai đều giữ chữ trong HTML lúc tải, nên Google đọc được.
Những tính năng trình duyệt nào Googlebot không hỗ trợ khi render trang?
Googlebot không hỗ trợ WebGL, WebSocket và WebRTC, từ chối mọi yêu cầu cấp quyền như camera hay vị trí, và không giữ Local Storage, Session Storage, cookie giữa các lần tải trang. Nội dung dựa vào các tính năng đó cần một đường tải qua HTTP thường hoặc nằm sẵn trong HTML.
Lỗi render JavaScript là gì và vì sao ảnh hưởng tới SEO?
Lỗi render JavaScript là lỗi khiến chữ không có trong HTML đã render mà Google dùng để lập chỉ mục. Trang vẫn trông đầy đủ trên trình duyệt, nhưng phần chữ thiếu trong HTML đó không vào chỉ mục. Lỗi render JavaScript thường đến từ accordion, nút bấm, lazy-load, CSR, page builder hoặc Shadow DOM.
Server-side rendering khác client-side rendering thế nào với SEO?
Server-side rendering render ứng dụng trên máy chủ và gửi HTML có sẵn chữ về máy khách. Client-side rendering render trong trình duyệt bằng JavaScript, nên HTML gốc gần như trống và chữ chỉ có sau khi script chạy. Với SEO, server-side rendering an toàn hơn vì bot không chạy JavaScript vẫn đọc được chữ.
Nên bắt đầu kiểm lỗi render JavaScript từ đâu?
Nên bắt đầu kiểm lỗi render JavaScript bằng cách so HTML gốc với HTML đã render. Xem mã nguồn và tắt JavaScript trên trình duyệt để thấy phần chữ còn lại, rồi mở Kiểm tra URL trong Search Console hoặc Rich Results Test, tìm đoạn trả lời và câu cuối bài trong HTML đã render.
Dữ liệu có cấu trúc dựng bằng JavaScript có được Google chấp nhận không?
Có. Google cho phép dựng JSON-LD bằng JavaScript và chèn vào trang, kèm lời dặn kiểm tra cách cài. Dữ liệu có cấu trúc dựng bằng JavaScript cần khớp với chữ hiển thị, nên dựng schema và phần hiển thị từ cùng một nguồn dữ liệu, rồi kiểm JSON-LD trong HTML đã render bằng Rich Results Test.
Làm tiếp trên chính website của bạn
Chọn theo điều bạn đang cần: người soi website, nền tảng để tự làm, hay người kèm tới nơi.
Phân tích SEO và GEO Online
Tìm đúng chỗ website đang nghẽn, bàn giao thứ tự sửa và bản đồ nội dung theo DLN™. Học tiếp Mentor thì phí này được trừ vào học phí.
Xem phạm vi phân tíchKhóa học SEO cơ bản Online
6 buổi online về Technical và On-page, đủ nền tảng để tự rà và sửa website của bạn.
Xem lộ trình họcMentor SEO 1 kèm 1 Online
12 buổi trong 4 tuần, làm trực tiếp trên website của bạn cùng Danh Nolan.
Xem cách kèm