<!DOCTYPE html> — самая первая строка документа, до тега <html>:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
Это не тег и не команда, а объявление: «документ следует стандарту HTML». Атрибутов и вариантов у него в HTML5 нет — строка всегда выглядит именно так.
Что будет без него
Браузер переключается в режим совместимости (quirks mode) — эмуляцию поведения браузеров конца девяностых. Меняются базовые правила вёрстки:
- Другая модель блока. Ширина элемента начинает считаться вместе с полями и рамками — все размеры «поедут».
- Иначе считаются высоты строк и отступы, особенно у таблиц и изображений.
- Часть современных свойств CSS игнорируется.
Практически это выглядит как «на моём компьютере всё нормально, а у клиента развалилось»: разные браузеры компенсируют режим совместимости по-разному.
Как это связано с поиском
Напрямую — никак, doctype не фактор ранжирования. Но косвенно связь прямая: сломанная вёрстка на мобильном означает плохие поведенческие показатели и проблемы с mobile-first индексацией. Робот рендерит страницу так же, как браузер, и видит то же самое.
Требования
- Строго первая строка. Ни пробелов, ни комментариев, ни BOM-метки, ни вывода PHP перед ней. Достаточно одного случайного пробела в начале подключаемого файла — и режим совместимости включится.
- Ровно одна. Дубликат
<!DOCTYPE>в середине документа — обычно след неудачной склейки шаблонов. - Рядом — объявление кодировки. Оба должны уместиться в самом начале документа, до всего остального.
- Именно
<!DOCTYPE html>. Длинные объявления сPUBLIC "-//W3C//DTD XHTML 1.0..."— наследие старых стандартов; современный HTML5 их не требует, а некоторые из них как раз и включают режим совместимости.
Как проверить
- Пункт аудита «Doctype HTML5».
- Вручную:
Ctrl+U— объявление должно быть в самой первой строке. - В консоли браузера:
document.compatMode
"CSS1Compat" — стандартный режим, всё хорошо. "BackCompat" — режим совместимости, doctype отсутствует или испорчен.
Если doctype есть, а режим совместимости включён
Заодно проверьте, не осталось ли в вёрстке устаревших тегов: они приходят из тех же старых шаблонов, что и потерянный doctype.
Ищите, что выводится до него. Типичные виновники: пробел или перевод строки после закрывающего ?> в подключаемом PHP-файле, BOM-метка в начале файла шаблона (пересохраните его как «UTF-8 без BOM»), баннер хостинга или счётчик, вставленный поверх страницы.