Стаття 28.08.2026 2

Google написав, що сайт неефективний на мобільних. Винними виявилися лічильники

У Search Console на нашому сайті засвітилося 102 неефективні адреси на мобільних — і ті самі 102 зелені на комп'ютері. Перша гіпотеза про фонову анімацію не підтвердилася заміром. Винними виявилися рекламні теги, а найдорожчою дрібницею — друга копія тієї самої бібліотеки на 189 КБ. Розбір із цифрами та інструкція із шести кроків.

Google написав, що сайт неефективний на мобільних. Винними виявилися лічильники

У Search Console на нашому власному сайті засвітилося: 102 адреси «неефективні» на мобільних — і рівно ті самі 102 зелені на комп'ютері. Один сайт, одна вьорстка, різний вердикт. Ми полізли розбиратися, перша ж очевидна гіпотеза виявилася хибною, а винуватцем стало те, що стоїть майже на кожному сайті і що власник зазвичай узагалі не вважає частиною сайту. Нижче — увесь розбір із замірами та інструкція, як перевірити й полагодити своє.

Що саме вимірює Google

Метрика називається INP — Interaction to Next Paint. Google описує її так:

«INP — метрика, яка оцінює загальну чутливість сторінки до дій користувача, спостерігаючи за затримкою всіх кліків, тапів і натискань клавіш за час візиту».

Пороги: добре — до 200 мс, потребує покращення — від 200 до 500 мс, погано — понад 500 мс.

web.dev, документація щодо INP

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

І друга важлива річ: це польова метрика. Google бере її у реальних відвідувачів, а не з лабораторного тесту. Тому у звіті вона оновлюється із затримкою і за ковзним вікном — миттєвого зеленого після правки не буде.

Чому мобільний червоний, а комп'ютер зелений

Відповідь нудна і повністю пояснює розбіжність: процесор телефона в чотири-вісім разів повільніший за настільний. Той самий шматок роботи, який на ноутбуці займає 60 мс і лишається непомітним, на телефоні розтягується до 300–500 мс — і людина вже бачить, що кнопка «залипла». Вьорстка тут ні до чого: код той самий, різна лише швидкість його виконання.

Перша гіпотеза виявилася хибною

На нашій головній є фонова анімація, і підозра лягла на неї одразу — так само, як ляже у більшості власників: «на сайті щось ворушиться, отже воно й гальмує». Замість того щоб її вимикати і сподіватися, ми заміряли три варіанти того самого екрана: як є, з вимкненою анімацією і з заблокованими сторонніми тегами.

Міряли не «відчуття», а конкретну величину — блокуючий час головного потоку: суму того, на скільки довгі задачі перевищують 50 мс. Поки триває така задача, браузер не може відповісти на дотик, і саме з цього складається INP.

Блокуючий час головного потоку Той самий екран, емуляція Pixel 5 з уповільненням процесора вчетверо як є 1782 мс без анімації 1840 мс без сторонніх тегів 378 мс Блокуючий час головного потоку Той самий екран, емуляція Pixel 5 з уповільненням процесора вчетверо як є 1782 мс без анімації 1840 мс без сторонніх тегів 378 мс
Власний замір PromoPilot, 28 серпня 2026. Вимкнення анімації не змінює нічого; блокування рекламних тегів прибирає 79% блокуючого часу.

Результат зняв питання. Вимкнення анімації не дало нічого — 1840 мс проти 1782 мс вихідних, різниця в межах похибки, а формально навіть гірше. Натомість блокування сторонніх тегів зрізало блокуючий час із 1782 до 378 мс. 79% часу, протягом якого сторінка не могла відповісти на палець, створювали не наш код і не анімація.

Справжній винуватець

У <head> стояли чотири теги, і всі чотири — стандартні, які власник ставить і забуває: лічильник аналітики, тег рекламної системи і два пікселі соціальної мережі. Усі з атрибутом async, усі «неблокуючі». Сумарно близько 600 КБ стороннього JavaScript.

Далі знайшлося те, заради чого варто читати цей розділ. Бібліотека лічильника вагою 189 КБ завантажувалася і виконувалася двічі.

Причина буденна. У нас два ідентифікатори — аналітика і реклама. Для кожного система видає готовий сніпет зі своїм рядком підключення, і власник чесно вставляє обидва. Але бібліотека там одна й та сама: вона обслуговує всі ідентифікатори через окремі виклики конфігурації. Другий примірник не додає нічого — він просто ще раз завантажується, ще раз розбирається і ще раз виконується на тому самому повільному мобільному процесорі.

Якщо у вас підключені аналітика і рекламний кабінет однієї й тієї самої системи — з високою ймовірністю у вас та сама картина. Перевіряється за хвилину, спосіб нижче в кроці 3.

Чому «async» не рятує

Це друге місце, де інтуїція підводить. Атрибут async означає: «не затримуй розбір HTML, завантажуй паралельно». Він чесно робить свою роботу — сторінка відмальовується, не чекаючи на тег.

Але коли файл завантажився, його однаково треба виконати, а виконується він у тому самому єдиному головному потоці, який відповідає на дотики. async прибирає блокування розбору, але не прибирає зайнятість потоку — а INP міряє саме її. Звідси типова ситуація: сторінка показалася швидко, всі лічильники «асинхронні», а метрика червона.

Ще одна пастка: сама лише відстрочка нічого не дає

Напрошується рішення — відкласти завантаження тегів до моменту, коли браузер звільниться. Ми так і зробили. І заміряли.

Чому сама лише відстрочка не допомогла Заміри до правки, після відстрочки тегів і після усунення дубля бібліотеки як було 2026 мс лише відстрочка 2101 мс відстрочка + прибрано дубль 1775 мс Чому сама лише відстрочка не допомогла Заміри до правки, після відстрочки тегів і після усунення дубля бібліотеки як було 2026 мс лише відстрочка 2101 мс відстрочка + прибрано дубль 1775 мс
Відстрочка зсуває роботу в часі, але не прибирає її. Результат дало усунення другої копії бібліотеки на 189 КБ.

Блокуючий час після самої лише відстрочки склав 2101 мс проти 2026 мс вихідних — тобто став трохи гіршим. Логіка проста: відстрочка зсуває роботу в часі, але не прибирає її. Робота нікуди не поділася, вона просто виконується пізніше — іноді рівно тоді, коли людина вже почала тикати в екран.

Спрацювало інше: усунення другої копії бібліотеки. Після нього блокуючий час упав до 1775 мс, а разом із ним підтягнулося все інше — перше відмальовування з 1128 до 824 мс, відповідь сервера з 669 до 335 мс.

Що робити зі своїм сайтом: шість кроків

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

Крок 1

Переконатися, що проблема ваша

Відкрийте в Search Console розділ з основними інтернет-показниками і подивіться на мобільну вкладку окремо від комп'ютерної. Саме окремо: розбіжність «телефон червоний, комп'ютер зелений» — найчастіший вид цієї проблеми, і якщо дивитися лише зведення, її легко не помітити.

Якщо мобільна вкладка зелена — далі можна не читати, у вас цієї проблеми немає.

Перевірка: ви знаєте, скільки у вас неефективних адрес на мобільному і з якої дати вони такими стали. Дата важлива: вона підкаже, що ви тоді поставили на сайт.
Крок 2

Заміряти, а не гадати

Головна помилка на цьому кроці — почати вимикати те, що здається важким. Ми ледь не вимкнули анімацію, яка була ні до чого. Заміряйте три варіанти тієї самої сторінки: як є, без підозрюваного і без сторонніх тегів.

Найдоступніший спосіб — DevTools у Chrome: вкладка Performance, увімкнути вповільнення процесора вчетверо й емуляцію мобільного, записати 10–15 секунд життя сторінки і подивитися на довгі задачі. Вони підсвічені, і по кожній видно, який файл її породив.

Перевірка: у вас є три числа, а не три думки. Якщо різниця між «як є» і «без підозрюваного» менша за 10% — підозрюваний невинний, шукайте далі.
Крок 3

Перевірити, чи не вантажиться одна бібліотека двічі

Це найдешевша перемога в усьому списку. Відкрийте вкладку Network у DevTools, відфільтруйте за js і подивіться на список: чи немає однакового імені файлу двічі, з різними параметрами в адресі.

Типовий випадок — лічильник аналітики і рекламний тег однієї системи: сніпети різні, файл один. Залиште одне підключення, а другий ідентифікатор налаштуйте окремим викликом конфігурації. Нічого не втратиться: бібліотека обслуговує обидва.

<!-- було: два сніпети, одна й та сама бібліотека двічі -->
<script async src="…/tag.js?id=ID-1"></script>
<script async src="…/tag.js?id=ID-2"></script>

<!-- стало: бібліотека одна, ідентифікаторів скільки потрібно -->
<script async src="…/tag.js?id=ID-1"></script>
<script>
  config('ID-1');
  config('ID-2');
</script>
Перевірка: у вкладці Network файл бібліотеки трапляється рівно один раз, а в панелі рекламної системи та аналітики дані продовжують надходити.
Крок 4

Відкласти теги, не втративши жодної події

Тільки після кроку 3 — бо сама по собі відстрочка не допомагає, ми це заміряли. Але у зв'язці вона дає звільнити критичні перші секунди.

Суть прийому: винести зовнішні файли з <head> і підвантажувати їх за першою з трьох подій — простій головного потоку, таймаут у 3 секунди або перший дотик до екрана. Дотик у списку обов'язковий: якщо людина вже взаємодіє зі сторінкою, тег потрібен негайно, інакше ви втратите саме активну сесію.

Події при цьому не втрачаються, і це ключова деталь. Крихітні функції-заглушки лишаються в <head> і складають усі виклики в чергу; коли бібліотека нарешті завантажиться, вона програє чергу цілком. Так ці сніпети й задумані — чергу передбачили їхні автори.

Перевірка: відкрийте свій сайт, клікніть і переконайтеся, що в панелі аналітики візит і подія надійшли. Якщо не надійшли — заглушка оголошена неправильно, і це треба лагодити до викладки.
Крок 5

Перевірити ще раз і не чекати миттєвого зеленого

Після викладки повторіть замір із кроку 2 — ви маєте побачити падіння блокуючого часу. А от звіт у Search Console позеленіє не одразу: він будується на даних реальних відвідувачів за ковзним вікном і оновлюється із затримкою у тижні.

Це нормально і не привід відкочувати правку чи робити другу поверх першої. Лабораторний замір каже, що стало краще — отже, поле підтвердить це пізніше.

Перевірка: блокуючий час у вашому замірі впав, а дані в аналітиці продовжують надходити в тому ж обсязі. Обидві частини обов'язкові: правка, яка ламає облік конверсій, — це не перемога.
Крок 6

Якщо не допомогло — резерв

Коли сторонні теги приведено до ладу, а метрика все ще не в нормі, далі йдуть за спаданням віддачі: зайві лічильники, які дублюють один одного за призначенням; невикористаний CSS (у нас на головній 92% правил не застосовуються); кешування HTML, якщо сторінка віддається без кешу взагалі.

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

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

Чого робити не варто

Вимикати анімацію й оформлення «про всяк випадок» Ми заміряли: вимкнення анімації не дало нічого, 1840 мс проти 1782 мс. Прибирати видиму частину сайту, не перевіривши її внесок, — надійний спосіб погіршити сайт і не покращити метрику.
Заспокоюватися на слові «async» Асинхронне завантаження знімає блокування розбору сторінки, але виконується скрипт однаково в головному потоці. INP міряє зайнятість цього потоку, тому «у нас усе асинхронне» не означає «у нас усе добре».
Починати з відстрочки завантаження Відстрочка зсуває роботу, а не прибирає її: у нас після неї стало 2101 мс проти 2026 мс вихідних. Спершу приберіть зайве, потім рухайте те, що лишилося.
Чекати зеленого звіту завтра Метрика польова: вона збирається у реальних відвідувачів за ковзним вікном. Правка, зроблена сьогодні, відобразиться у звіті за тижні — це не привід переробляти все наново.

Коротко

«Неефективно на мобільних при зеленому комп'ютері» майже завжди означає одне: сторінка зайнята виконанням чужого коду на повільному процесорі телефона. У нашому випадку сторонні теги давали 79% блокуючого часу, а найдорожчою дрібницею виявилася друга копія тієї самої бібліотеки на 189 КБ — вона вантажилася просто тому, що сніпет копіюють по одному на кожен акаунт.

Якщо робити одну дію просто зараз — відкрийте вкладку Network на своєму сайті й подивіться, чи не завантажується якийсь файл лічильника двічі. Це перевірка на хвилину, і вона безкоштовна.

Перевірити свій сайт

Сканування покаже важкі сторінки, блокуючі скрипти та решту технічних знахідок — із поділом за серйозністю.

Часті питання

Що таке INP простими словами?
Це час від дотику до екрана до моменту, коли сторінка видимо відреагувала. Google вважає добрим показник до 200 мс, поганим — понад 500 мс. Метрика оцінює чутливість, а не швидкість завантаження: сторінка може відкритися швидко і все одно довго не відповідати на натискання.

Чому сайт неефективний на мобільних, але ефективний на комп'ютері?
Тому що процесор телефона в чотири-вісім разів повільніший за настільний. Той самий скрипт, який на комп'ютері відпрацьовує за 60 мс непомітно, на телефоні розтягується до 300–500 мс, і людина бачить затримку. Код при цьому той самий — різна лише швидкість виконання.

Чи правда, що аналітика вповільнює сайт?
У нашому замірі сторонні теги давали 79% блокуючого часу головного потоку: 1782 мс із ними проти 378 мс без них. Це не привід прибирати аналітику зовсім, але це привід перевірити, скільки у вас тегів, чи не дублюються вони і коли саме вони вантажаться.

Чи допомагає async у скрипта аналітики?
Частково. Атрибут async знімає блокування розбору HTML, тому сторінка відмальовується раніше. Але завантажений файл однаково виконується в головному потоці, а INP міряє зайнятість саме цього потоку. Асинхронний скрипт може зіпсувати метрику так само, як звичайний.

Чи можна відкласти завантаження лічильників і не втратити конверсії?
Так, якщо лишити в head функції-заглушки, які накопичують виклики в чергу до завантаження бібліотеки — так ці сніпети й спроєктовані. Обов'язково включіть перший дотик до екрана в число подій, за якими завантаження запускається, інакше можна втратити активну сесію. Після викладки перевірте, що події доходять.

Через скільки звіт у Search Console стане зеленим після правки?
Не одразу. Показник збирається у реальних відвідувачів за ковзним вікном і оновлюється із затримкою у тижні. Орієнтуйтеся на власний лабораторний замір: якщо блокуючий час упав, поле підтвердить це пізніше.

Джерела

Власний замір PromoPilot, 28 серпня 2026: емуляція Pixel 5 з уповільненням процесора вчетверо, спостереження за довгими задачами та відгуком на дотики на живому сайті.
web.dev, документація щодо метрики INP: визначення, пороги «добре / потребує покращення / погано», польовий характер вимірювання.
Google Search Console, звіт «Основні інтернет-показники»: окремі вкладки для мобільних і настільних пристроїв.

Поділитися:
Каскадний лінкбілдинг

3 рівні посилань + крауд для максимального ефекту. Спробуйте безкоштовно!

Спробувати безкоштовно
Бонус $30 при реєстрації

Почніть просування сайту вже зараз — бонус нараховується автоматично

Отримати бонус
SEO-інструменти
Як працюють каскади
L1 Статті на трастових майданчиках з DR 30–70
L2 Підсилення L1 посиланнями з блогів та Web 2.0
L3 Індексація та підтримка через профілі та коментарі
C Крауд-посилання для природного профілю
Докладніше
Зміст