Скрипт у head може блокувати рендеринг

У звітіSynchronous external script declared in the document head

render_blocking_head_script · Потребує перегляду

Коротка відповідь

Це з’являється, коли <head> сторінки оголошує зовнішній скрипт без async, defer чи type="module". Браузер припиняє будувати сторінку, доки такий скрипт не завантажиться й не виконається. Додайте defer або async там, де скрипт це дозволяє.

Серйозність: Середня. На перегляд: сама затримка не вимірюється, а деякі скрипти мають виконуватися першими.

Чому це важливо

Посібник web.dev про Largest Contentful Paint каже, що рендеринг усієї сторінки блокується, поки таблиці стилів чи синхронні скрипти в <head> ще завантажуються, і що додавати скрипти без async чи defer у head майже ніколи не потрібно.

Що зробити

  1. Перегляньте знахідку: у ній показано кожен скрипт, його адресу, місце в head і те, чи походить він із власного джерела сторінки, чи з іншого.
  2. Додайте defer до скриптів, що працюють зі сторінкою, або async до незалежних, як-от аналітика.
  3. Якщо скрипт має виконатися до показу сторінки, тримайте його малим або помістіть його код безпосередньо в сторінку.

Коли залишити як є: якщо скрипт має виконатися до того, як щось буде показано, наприклад скрипт згоди чи тестування, що змінює сторінку, його можна залишити, тримаючи якомога меншим.

Що ми читаємо

Ми читаємо <head> кожної просканованої сторінки в тому вигляді, в якому його віддав сервер, не виконуючи JavaScript, і шукаємо теги <script src> без async чи defer, які є класичними скриптами, а не type="module". Вбудовані скрипти, скрипти в body та скрипти, додані через JavaScript, не перевіряються.

Сторінка фіксується, коли аудит завантажив такий скрипт і він відповів кодом 200. У знахідці показано, чи походить він із власного джерела сторінки, чи з іншого.

Сторінка позначається як неперевірена, коли її HTML не вдалося прочитати повністю, наприклад тому, що він містить непідтримувану розмітку SVG, <select> чи <math>, коли вона не має тега <head> або її head містить <noscript> чи елемент, якому місце в body, коли скрипт має nomodule або коли такий скрипт не було завантажено.

Приклад і докази

Ілюстративний приклад — head однієї сторінки, а не реальний аудит.

Head сторінки https://bakery.example/ містить:

<head>
<script src="https://bakery.example/js/slider.js"></script>

Скрипт не має async чи defer, тому браузер чекає на нього, перш ніж будувати сторінку, і сторінка фіксується разом із ним.

<script src="https://bakery.example/js/slider.js" defer></script>

Можливе виправлення, якщо слайдеру достатньо запуститися, коли сторінку вже побудовано.

Підтвердити й перевірити знову

Перевірте самі: перегляньте вихідний код сторінки й подивіться, чи має кожен <script src> у head атрибут async, defer або type="module".

Повторна перевірка: Повний аудит — запустіть новий аудит сайту. Знахідка закривається, коли сторінку знову проскановано, прочитано повністю і її head не має такого скрипта й нічого, що заважає її перевірити, як-от скрипт із nomodule чи <noscript> у head.

Обмеження та джерела

Перевірка читає, як оголошено скрипти; вона не вимірює, як довго вони блокують рендеринг, чи їхній вплив на Largest Contentful Paint. Вбудовані скрипти в head, які теж блокують, не оцінюються, а атрибут blocking ігнорується.

Упевненість: Висока, бо декларація зчитується безпосередньо з HTML.

Джерела

  • web.dev, Оптимізація Largest Contentful Paint — каже, що рендеринг усієї сторінки блокується, поки таблиці стилів чи синхронні скрипти в <head> завантажуються, і що синхронні скрипти в head майже ніколи не потрібні. Перевірено 28 вересня 2026.

Редакційна перевірка: 30 жовтня 2026