Анализ сайта birming.com
Основное Готовность: 100%
Домен
birming.com
Состояние доменного имени
?
Проверяем корректность доменного имени и наличие технических проблем на уровне домена.
Домен второго уровня идеален для продвижения.
Отличный запоминающийся домен.
Ответ сервера
200 Успешный ответ
HTTP-код ответа и цепочка редиректов
?
Код 200 — страница доступна. Коды 3xx — редиректы (цепочки замедляют загрузку и размывают ссылочный вес). Коды 4xx/5xx — ошибки, поисковик не сможет проиндексировать страницу.
Сервер настроен корректно.
Цепочка редиректов:
http://birming.com
301 MovedPermanently
https://robertbirming.com/
200 OK
Безопасность
Сайт безопасен
Использование HTTPS и SSL-сертификат
?
HTTPS — обязательный стандарт. Google и Яндекс отдают предпочтение защищённым сайтам. Отсутствие SSL или просроченный сертификат ведут к предупреждениям в браузере и снижению позиций.
Не настроен HSTS (Strict-Transport-Security) — рекомендуется включить.
На сайте работает защищенный протокол ssl и сайт открывается по https.
Ssl-сертификат действителен до 09.01.2027 2:59:59.
Сервер поддерживает HTTP/3 (QUIC) — новейший протокол.
HTTP автоматически перенаправляется на HTTPS.
Поздравляем! Сайт не содержится в реестре РКН.
Кодировка
utf-8
Кодировка символов страницы
?
Стандарт — UTF-8. Неправильная кодировка вызывает нечитаемые символы и мешает поисковику корректно распознать текст страницы.
Указана кодировка на странице utf-8.
Язык
en
Атрибут lang в HTML-теге
?
Атрибут lang (<html lang="ru">) сообщает поисковикам и браузерам, на каком языке написана страница. Помогает при ранжировании в региональном поиске.
Язык документа указан явно: en.
Скорость загрузки
~1,46сек
Время отклика сервера (TTFB)
?
Time To First Byte — время до получения первого байта от сервера. Норма до 200 мс. Медленный отклик ухудшает пользовательский опыт и ранжирование: Яндекс и Google учитывают скорость страниц.
Скорость загрузки сайта 1,46сек превышает 1 секунду. Желательно улучшить работу сайта!
Объем документа
26Кб
Размер HTML-кода страницы
?
Слишком большой HTML замедляет парсинг браузером и сканирование поисковым роботом. Рекомендуется не более 200 Кб.
Объем html-документа 26Кб оптимален.
Структура html-документа корректна.
Ресурсы
Ресурсы: 0
Внешние ресурсы страницы (CSS, JS, изображения)
?
Количество и тип подключённых ресурсов влияют на скорость загрузки. Большое число запросов увеличивает время рендеринга страницы.
Ресурсы не найдены. Неужели ваш сайт на чистом html?
Серверные заголовки
Кол-во: 18
HTTP-заголовки ответа сервера
?
Заголовки сервера передают браузеру и поисковику служебную информацию: кеширование, безопасность (CSP, HSTS), сжатие (gzip). Правильная настройка ускоряет загрузку и повышает защищённость.
Найдены серверные заголовки 18шт. Подробнее про серверные заголовки.
Показать полный список серверных заголовков
| Ключ | Значение |
|---|---|
| Accept-Ranges | bytes |
| Age | 7979 |
| Alt-Svc | h3=":443"; ma=2592000 |
| Cache-Control | public, max-age=0, s-maxage=43200 |
| cf-cache-status | HIT |
| cf-ray | a2ec8b4ebc0a15e0-SJC |
| cross-origin-opener-policy | same-origin |
| Date | Fri, 21 Aug 2026 20:56:24 GMT |
| nel | {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1} |
| Referrer-Policy | origin-when-cross-origin |
| report-to | {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=%2F%2FRbe8xuh4ST%2FxNyONA1FWa2yLEZu%2BRUyqRw8rI3g6k%3D\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\u0026ts=1787337804"}],"max_age":3600} |
| reporting-endpoints | heroku-nel="https://nel.heroku.com/reports?s=%2F%2FRbe8xuh4ST%2FxNyONA1FWa2yLEZu%2BRUyqRw8rI3g6k%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1787337804" |
| Server | cloudflare |
| Vary | Accept-Encoding |
| Via | 2.0 Caddy |
| x-clacks-overhead | GNU Terry Pratchett |
| X-Content-Type-Options | nosniff |
| X-Frame-Options | ALLOWALL |
CMS
Не определена
Система управления сайтом (движок)
?
CMS — это движок, на котором работает сайт (WordPress, 1C-Bitrix, Tilda и др.). Знание CMS помогает понять возможности SEO-оптимизации и подобрать подходящие инструменты. «Не определена» — вероятно, самописный сайт или нестандартная сборка.
CMS не определена. Вероятно, сайт самописный либо движок надёжно скрыт. Это не ошибка.
Веб-сервер
Программное обеспечение сервера
?
Веб-сервер — это ПО, которое отдаёт страницы посетителям (nginx, Apache, IIS, LiteSpeed и др.). Определяется по серверным заголовкам ответа (Server, X-Powered-By и т.п.). «Не определён» — сервер намеренно скрывает эти заголовки, это нормальная практика безопасности.
Сайт работает на веб-сервере Cloudflare.
Мета-теги Готовность: 48%
Title
Robert Birming
Заголовок страницы в браузере и поисковой выдаче
?
Title — главный SEO-заголовок страницы. Влияет на CTR в поиске и ранжирование. Оптимальная длина: 50–70 символов. Ключевые слова — ближе к началу.
Необходимо увеличить число символов в title (текущее значение мало: 14, минимум: 25, оптимально: от 40 до 45)
Дублей словоформ в title не найдено.
Description
I'm Robert Birming from Stockholm, Sweden. Home inspector by day, blogger by night. This is where I write and run my little blog lab.
Описание страницы в поисковой выдаче (сниппет)
?
Meta Description — текст под заголовком в выдаче. Напрямую на позиции не влияет, но влияет на CTR. Оптимальная длина: 120–160 символов.
Необходимо уменьшить число символов в description (текущее значение: 138, оптимально: от 120 до 130)
Keywords
Список ключевых слов страницы (устаревший тег)
?
Meta Keywords не учитывается Яндексом и Google для ранжирования с 2009–2012 годов. Заполнение не обязательно, но не вредит. Конкурент может использовать содержимое для анализа.
Установите мета-тег keywords!
Канонический Url
https://robertbirming.com
Указывает поисковику основную версию страницы
?
Canonical (rel=canonical) предотвращает проблему дублей страниц. Должен точно совпадать с URL проверяемой страницы. Неправильный canonical может передать ссылочный вес на другую страницу.
Канонический Url прописан корректно.
Robots
Ошибок нет
Директивы для поисковых роботов на уровне страницы
?
Meta Robots управляет индексацией конкретной страницы: index/noindex — индексировать ли, follow/nofollow — следовать ли по ссылкам. Noindex полностью исключает страницу из поиска.
Meta-тег robots не указан. Страница свободна для индексации.
Адаптивность
width=device-width, initial-scale=1.0, maximum-scale=5
Настройка масштабирования на мобильных устройствах
?
Тег viewport (<meta name="viewport">) сообщает браузеру, как масштабировать страницу на мобильных. Стандарт: width=device-width, initial-scale=1. Отсутствие — признак отсутствия мобильной версии.
Meta-тег viewport со значением-константой width=device-width задаёт ширину страницы в соответствии с размером экрана.
Meta-тег viewport со значением initial-scale=1.0 определяет масштаб 1:1, т.е. «не масштабировать».
Meta-тег viewport со значением maximum-scale определяет максимальный масштаб области просмотра.
Разметка OpenGraph
Кол-во: 6
Мета-теги для красивых превью в соцсетях
?
OpenGraph (og:title, og:description, og:image) управляет тем, как страница выглядит при репосте в социальных сетях и мессенджерах. Отсутствие OG-тегов — невзрачный превью при шеринге.
Разметка OpenGraph задана. Страница оптимизирована под социальные сети.
Показать полный список og мета-тегов
| Тип | Значение |
|---|---|
| og:site_name | Robert Birming |
| og:title | Robert Birming |
| og:type | website |
| og:url | https://robertbirming.com |
| og:description | I'm Robert Birming from Stockholm, Sweden. Home inspector by day, blogger by night. This is where I write and run my little blog lab. |
| og:image | https://bear-images.sfo2.cdn.digitaloceanspaces.com/robert/robertbirming-og.png |
Все мета-теги
Кол-во: 15
Полный список мета-тегов страницы
?
Таблица всех meta-тегов, включая нестандартные. Позволяет найти опечатки, дубли и лишние теги.
Найдены мета-теги 15шт. Мета-теги не видимы для человека и предназначены для обмена информацией между веб-страницей и поисковыми системами, браузерами и другими веб-службами. С ними роботы 🤖 и устройства ведут себя более ожидаемо.
Показать полный список мета-тегов
| Тип | Название | Значение |
|---|---|---|
| name | viewport | width=device-width, initial-scale=1.0, maximum-scale=5 |
| name | robert | look-for-the-bear-necessities |
| name | title | Robert Birming |
| name | description | I'm Robert Birming from Stockholm, Sweden. Home inspector by day, blogger by night. This is where I write and run my little blog lab. |
| property | og:site_name | Robert Birming |
| property | og:title | Robert Birming |
| property | og:type | website |
| property | og:url | https://robertbirming.com |
| property | og:description | I'm Robert Birming from Stockholm, Sweden. Home inspector by day, blogger by night. This is where I write and run my little blog lab. |
| property | og:image | https://bear-images.sfo2.cdn.digitaloceanspaces.com/robert/robertbirming-og.png |
| property | twitter:card | summary |
| property | twitter:url | https://robertbirming.com |
| property | twitter:title | Robert Birming |
| property | twitter:description | I'm Robert Birming from Stockholm, Sweden. Home inspector by day, blogger by night. This is where I write and run my little blog lab. |
| property | twitter:image | https://bear-images.sfo2.cdn.digitaloceanspaces.com/robert/robertbirming-og.png |
Оптимизация Готовность: 57%
Структура
Ошибок нет
Семантические HTML-элементы страницы
?
Проверяет наличие основных структурных элементов: nav, header, footer, main. Корректная семантическая структура помогает поисковику понять архитектуру страницы.
Структура документа корректна (теги <html> и <body> присутствуют по одному на документ).
Контент
Есть ошибки
Объём и качество текстового содержимого
?
Анализирует объём полезного текста на странице. Слишком мало — страница может считаться малополезной. Слишком много — ухудшается читаемость и восприятие.
Слова из title 2 встречаются в тексте редко. Добавьте в контент страницы слова из тега <title>!
Абзацев с текстом 9 слишком мало. Добавьте больше абзацев с текстом (тег <p>)!
Кол-во знаков контента 804 слишком мало. Добавьте больше текста!
Кол-во слов 152 слишком мало. Добавьте больше текста (минимум 400 слов)!
Среднее число слов в абзаце 13 достаточно.
Заголовки
Ошибок нет
Иерархия заголовков H1–H6
?
H1 должен быть один и содержать ключевой запрос. H2–H6 описывают подразделы. Пропуск уровней (H1 → H3) и несколько H1 — типичные ошибки, снижающие понятность страницы для поисковика.
На странице присутствуют заголовки <h1> 1. Это прекрасно.
На странице присутствуют заголовки <h3> 1.
Тошнота
1,41
Насколько одно слово доминирует в тексте
?
Классическая тошнота = √(частота самого повторяющегося слова). Норма до 7–8: текст воспринимается естественно. Выше — поисковик может счесть страницу переспамленной.
Тошнота страницы в пределах нормы 3.
Академич. тошнота
12,50%
Насколько текст перенасыщен ключевыми словами
?
Академическая тошнота = (частота слова / общее количество слов) × 100%. Показывает долю конкретного слова в тексте. Норма 5–15%.
Академическая тошнота страницы в пределах нормы.
Семантическое ядро
20
Наиболее часто встречающиеся слова на странице
?
Топ слов по частоте использования. Показывает, какие слова доминируют в тексте с точки зрения поисковика.
Контент страницы содержит осмысленный текст и слова.
Показать список слов
| Слово | Кол-во | Частота |
|---|---|---|
| robert | 2 | 1,32% |
| birming | 1 | 0,66% |
| contact | 1 | 0,66% |
| sweden | 1 | 0,66% |
| welcome | 1 | 0,66% |
| corner | 1 | 0,66% |
| everyday | 1 | 0,66% |
| stories | 1 | 0,66% |
| adventures | 1 | 0,66% |
| thoughts | 1 | 0,66% |
| linger | 1 | 0,66% |
| enough | 1 | 0,66% |
| hometown | 1 | 0,66% |
| stockholm | 1 | 0,66% |
| another | 1 | 0,66% |
| you're | 1 | 0,66% |
| standing | 1 | 0,66% |
| hallway | 1 | 0,66% |
| around | 1 | 0,66% |
| browse | 1 | 0,66% |
Индексация Готовность: 80%
Индексирование
Ошибок нет
Разрешено ли индексирование страницы
?
Проверяет, не закрыта ли страница от индексации через robots.txt, meta robots или X-Robots-Tag. Страница, закрытая от индексации, не появится в поисковой выдаче.
Анкоров на странице 17 оптимально. Поисковые роботы обязательно проиндексируют сайт.
Robots.txt
Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 26688 байт. Загружен за: 1сек.
Проверяемая страница не запрещена в robots.txt.
Robots.txt доступен по постоянному адресу
Цепочка редиректов для файла robots.txt:
http://birming.com/robots.txt
301 MovedPermanently
https://robertbirming.com/
200 OK
Показать содержимое robots.txt
<!DOCTYPE html>
<html lang="en">
<!-- Powered by Bear Blog -->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5">
<title>Robert Birming</title>
<link rel="canonical" href="https://robertbirming.com">
<meta name="robert" content="look-for-the-bear-necessities">
<!-- Primary Meta Tags -->
<meta name="title" content="Robert Birming">
<meta name="description" content="I'm Robert Birming from Stockholm, Sweden. Home inspector by day, blogger by night. This is where I write and run my little blog lab.">
<!-- Open Graph / Facebook -->
<meta property="og:site_name" content="Robert Birming">
<meta property="og:title" content="Robert Birming">
<meta property="og:type" content="website">
<meta property="og:url" content="https://robertbirming.com">
<meta property="og:description" content="I'm Robert Birming from Stockholm, Sweden. Home inspector by day, blogger by night. This is where I write and run my little blog lab.">
<meta property="og:image" content="https://bear-images.sfo2.cdn.digitaloceanspaces.com/robert/robertbirming-og.png">
<!-- Twitter -->
<meta property="twitter:card" content="summary">
<meta property="twitter:url" content="https://robertbirming.com">
<meta property="twitter:title" content="Robert Birming">
<meta property="twitter:description" content="I'm Robert Birming from Stockholm, Sweden. Home inspector by day, blogger by night. This is where I write and run my little blog lab.">
<meta property="twitter:image" content="https://bear-images.sfo2.cdn.digitaloceanspaces.com/robert/robertbirming-og.png">
<!-- Microdata -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "website",
"name": "Robert Birming",
"headline": "Robert Birming",
"url": "https://robertbirming.com",
"description": "I'm Robert Birming from Stockholm, Sweden. Home inspector by day, blogger by night. This is where I write and run my little blog lab.",
"image": "https://bear-images.sfo2.cdn.digitaloceanspaces.com/robert/robertbirming-og.png"
}
</script>
<link rel="alternate" type="application/atom+xml" href="/feed/" title="Robert Birming">
<link rel="alternate" type="application/rss+xml" href="/feed/?type=rss" title="Robert Birming">
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20100%20100'%3E%3Ctext%20y='.9em'%20font-size='90'%3E:-)%3C/text%3E%3C/svg%3E">
<style data-name="default">
/*
* Work in progress...
* Version 0.0.1 | 2026-xx-xx
* Robert Birming | robertbirming.com
*/
:root {
/* Layout and typography */
--width: 66ch;
--font-main: Tahoma, sans-serif;
--font-secondary: Verdana, sans-serif;
--font-scale: 1rem;
/* Light colors */
--background-color: #f8f8f8;
--heading-color: #2c2d2e;
--text-color: #2c2d2e;
--link-color: #2952cc;
--visited-color: #7c5a91;
--code-background-color: color-mix(in srgb, var(--background-color), black 5%);
--code-color: var(--text-color);
--blockquote-color: var(--text-color);
}
@media (prefers-color-scheme: dark) {
:root {
/* Dark colors */
--background-color: #01242e;
--heading-color: #d5d8dc;
--text-color: #d5d8dc;
--link-color: #98cbe3;
--visited-color: #c9add7;
--code-background-color: color-mix(in srgb, var(--background-color), white 8%);
--code-color: var(--text-color);
--blockquote-color: var(--text-color);
}
}
/* Font rendering */
html {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-text-size-adjust: 100%;
}
/* Box-sizing reset */
*,
*::before,
*::after {
box-sizing: border-box;
}
/* Body and headings */
body {
max-width: var(--width);
margin: auto;
padding: 1.25rem;
font-family: var(--font-secondary);
font-size: var(--font-scale);
line-height: 1.65;
overflow-wrap: break-word;
background-color: var(--background-color);
color: var(--text-color);
}
p {
margin-block: 1.2rem;
}
h1, h2, h3, h4, h5, h6 {
margin-block: 1.5rem 0.5em;
font-family: var(--font-main);
line-height: 1.3;
}
h1 { font-size: 1.9rem; }
h2 { font-size: 1.5rem; }
h3 { font-size: 1.3rem; }
h4 { font-size: 1.1rem; }
/* Links */
a {
color: var(--link-color);
text-decoration: none;
}
main a:visited {
color: var(--visited-color);
}
a:hover {
text-decoration: underline;
text-decoration-color: currentColor;
text-underline-offset: 0.2em;
text-decoration-thickness: 1.5px;
}
a:focus-visible {
outline: 2px solid var(--link-color);
outline-offset: 2px;
}
/* Lists */
ul, ol {
margin-block: 1rem;
padding-inline-start: 2em;
}
li,
li > ul,
li > ol {
margin-block: 0.2em;
}
/* Highlight */
mark {
padding-inline: 0.15em;
color: var(--background-color);
background-color: color-mix(in srgb, var(--link-color) 60%, var(--text-color));
}
/* Shared vertical spacing */
hr,
pre,
img,
video,
figure,
aside,
details,
blockquote {
margin-block: 1.5rem;
}
/* Media and figures */
img,
video {
display: block;
max-width: 100%;
height: auto;
border-radius: 3px;
}
figure {
margin-inline: 0;
}
figure img {
margin-block-end: 0;
}
figure p {
margin: 0;
}
figcaption {
margin-block-start: 0.5em;
font-size: calc(var(--font-scale) * 0.85);
color: color-mix(in srgb, var(--text-color), transparent 40%);
text-align: center;
}
/* Blockquote */
blockquote {
border-left: 2px solid color-mix(in srgb, var(--text-color), transparent 60%);
color: var(--blockquote-color);
padding-left: 1.2rem;
font-style: italic;
}
cite {
display: block;
margin-block-start: 0.7em;
font-style: normal;
}
cite::before {
content: "— ";
}
/* Details and summary */
details {
padding: 0.8em 1em;
border: 1px solid color-mix(in srgb, var(--text-color), transparent 85%);
border-radius: 3px;
}
summary {
cursor: pointer;
font-weight: 700;
}
details[open] summary {
margin-block-end: 0.5em;
}
/* Horizontal rule */
hr {
border: 0;
border-top: 1px dashed color-mix(in srgb, var(--text-color), transparent 50%);
}
/* Aside */
aside {
padding: 1em 1.2em 0;
font-size: calc(var(--font-scale) * 0.9);
border: 1px dashed color-mix(in srgb, var(--text-color), transparent 50%);
border-radius: 3px;
}
aside::before {
content: "Note";
display: block;
font-size: calc(var(--font-scale) * 0.8);
font-weight: 600;
text-transform: uppercase;
color: color-mix(in srgb, var(--text-color), transparent 25%);
margin-block-end: 0.7em;
}
aside p:first-of-type {
margin-block-start: 0;
}
/* Footnote */
.footnotes {
margin-block-start: 2rem;
padding-block-start: 1rem;
border-block-start: 1px dashed color-mix(in srgb, var(--text-color), transparent 60%);
font-size: calc(var(--font-scale) * 0.9);
}
.footnotes ol {
padding-inline-start: 1.2em;
}
.footnote {
margin-inline-start: 0.3em;
}
/* Code */
code {
font-family: ui-monospace, monospace;
font-size: calc(var(--font-scale) * 0.9);
padding: 0.2em;
background-color: var(--code-background-color);
color: var(--code-color);
border-radius: 3px;
}
.highlight, .code {
font-family: ui-monospace, monospace;
font-size: calc(var(--font-scale) * 0.9);
padding: 0.1em 1em;
background-color: var(--code-background-color);
color: var(--code-color);
border-radius: 3px;
margin-block: 1em;
overflow-x: auto;
}
/* Tables */
table {
width: 100%;
border-collapse: collapse;
font-size: calc(var(--font-scale) * 0.9);
}
th, td {
padding: 0.5em 0.8em;
text-align: left;
border: 1px solid color-mix(in srgb, var(--text-color), transparent 80%);
}
th {
font-weight: 600;
background-color: var(--code-background-color);
}
/* Dates */
time {
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: calc(var(--font-scale) * 0.9);
font-style: normal;
letter-spacing: -0.02em;
opacity: 0.8;
}
/* Button reset */
button {
margin: 0;
cursor: pointer;
}
/* Header */
header {
margin-block: 0 1.5em;
}
.title h1 {
margin-block: 0;
font-size: 1.5rem;
}
a.title {
color: inherit;
text-decoration: none;
}
nav p {
margin-block-start: 0.2em;
}
nav a {
margin-inline-end: 0.5em;
}
body.post main h1 {
margin-block-end: 0;
}
body.post main h1 + p {
margin-block-start: 0.1em;
}
/* Blog post list */
.blog-posts {
padding: 0;
list-style-type: none;
}
.blog-posts li {
display: flex;
align-items: baseline;
gap: 1.1em;
}
.blog-posts span {
flex: 0 0 auto;
min-width: 8ch;
}
footer {
padding-block: 1rem;
text-align: center;
}
footer p {
margin-block: 0.7em;
}
footer span:last-child {
font-size: calc(var(--font-scale) * 0.9);
}
/* Upvote button */
#upvote-form .upvote-count {
font-size: inherit;
}
#upvote-form .upvote-button {
flex-direction: row;
align-items: center;
font-size: calc(var(--font-scale) * 0.75);
}
#upvote-form .upvote-button svg {
display: none;
}
#upvote-form .upvote-count::before {
content: "♡";
display: inline-block;
margin-inline-end: 0.15em;
font-family: system-ui, sans-serif;
font-size: 1.7em;
color: var(--link-color);
vertical-align: -0.11em;
transition: transform 0.15s ease;
}
#upvote-form .upvote-button[disabled] .upvote-count {
color: color-mix(in srgb, var(--text-color), transparent 40%);
}
#upvote-form .upvote-button[disabled] .upvote-count::before {
content: "♥";
color: color-mix(in srgb, var(--text-color), transparent 40%);
}
@media (hover: hover) {
#upvote-form .upvote-button:not([disabled]):hover .upvote-count::before {
transform: scale(1.15);
}
}
@media (prefers-reduced-motion: reduce) {
#upvote-form .upvote-count::before {
transition: none;
}
}
/* Breadcrumb */
.breadcrumb {
margin-block: -0.8rem 1.5rem;
font-size: calc(var(--font-scale) * 0.9);
color: color-mix(in srgb, var(--text-color), transparent 25%);
}
.breadcrumb ol {
display: flex;
flex-wrap: wrap;
gap: 0;
padding: 0;
margin: 0;
list-style: none;
}
.breadcrumb li + li::before {
content: "\203A";
margin-inline-end: 0.4em;
}
/* Screenshots */
.screenshot img {
border: 2px solid color-mix(in srgb, var(--text-color), transparent 75%);
border-radius: 6px;
}
/* Hide tags */
.tags {
display: none;
}
/* Active nav */
nav a[aria-current="page"] {
text-decoration: underline;
text-underline-offset: 0.2em;
text-decoration-thickness: 1.5px;
cursor: default;
}
/* Guestbooks.meadow.cafe */
input,
select,
textarea {
font: inherit;
color: var(--text-color);
}
#guestbooks___guestbook-form-container {
margin-block: 1.5rem;
}
#guestbooks___guestbook-form-container form {
display: flex;
flex-direction: column;
gap: 0.9rem;
margin: 0;
}
#guestbooks___guestbook-form-container .guestbooks___input-container {
width: 100%;
margin: 0;
}
#guestbooks___guestbook-form-container :is(input, textarea, button, select) {
font: inherit;
color: inherit;
appearance: none;
}
#guestbooks___guestbook-form-container :is(
input[type="text"],
input[type="email"],
input[type="url"],
textarea,
select
) {
display: block;
width: 100%;
max-width: 100%;
padding-block: 0.55rem;
padding-inline: 0.7rem;
background-color: var(--code-background-color);
border: 1px solid color-mix(in srgb, var(--text-color), transparent 80%);
border-radius: 3px;
}
#guestbooks___guestbook-form-container textarea {
min-height: 7.5em;
resize: vertical;
}
#guestbooks___guestbook-form-container :is(input, textarea, select):focus-visible {
outline: 2px solid var(--link-color);
outline-offset: 2px;
}
#guestbooks___guestbook-form-container :is(button, input[type="submit"]) {
align-self: flex-start;
padding-block: 0.35rem;
padding-inline: 0.9rem;
background-color: var(--code-background-color);
border: 1px solid color-mix(in srgb, var(--text-color), transparent 80%);
border-radius: 3px;
cursor: pointer;
}
@media (hover: hover) {
#guestbooks___guestbook-form-container :is(button, input[type="submit"]):hover {
color: var(--background-color);
background-color: var(--text-color);
border-color: var(--text-color);
}
}
#guestbooks___guestbook-form-container :is(button, input[type="submit"]):focus-visible {
color: var(--background-color);
background-color: var(--text-color);
border-color: var(--text-color);
outline: 2px solid var(--link-color);
outline-offset: 2px;
}
#guestbooks___guestbook-form-container :is(button, input[type="submit"]):disabled {
opacity: 0.7;
cursor: not-allowed;
}
#guestbooks___guestbook-form-container input[type="checkbox"] {
display: inline-block;
position: relative;
width: 1.1rem;
height: 1.1rem;
margin: 0;
background-color: var(--code-background-color);
border: 1px solid color-mix(in srgb, var(--text-color), transparent 80%);
border-radius: 3px;
cursor: pointer;
}
#guestbooks___guestbook-form-container input[type="checkbox"]:checked {
background-color: var(--link-color);
border-color: var(--link-color);
}
#guestbooks___guestbook-form-container input[type="checkbox"]:checked::after {
content: "";
position: absolute;
left: 0.32rem;
top: 0.14rem;
width: 0.28rem;
height: 0.55rem;
border: solid var(--background-color);
border-width: 0 2px 2px 0;
transform: rotate(45deg);
}
#guestbooks___guestbook-form-container label:has(input[type="checkbox"]) {
display: flex;
align-items: center;
gap: 0.5rem;
font: inherit;
color: var(--text-color);
cursor: pointer;
}
#guestbooks___guestbook-form-container input[type="checkbox"]:focus-visible {
outline: 2px solid var(--link-color);
outline-offset: 3px;
}
#guestbooks___challenge-answer-container:empty {
display: none;
}
#guestbooks___challenge-answer-container {
display: flex;
flex-direction: column;
gap: 0.4rem;
margin-block-start: -1rem;
}
#guestbooks___challenge-answer-container input {
margin-block-start: 0.3rem !important;
}
#guestbooks___challenge-answer-container * {
margin: 0;
}
#guestbooks___guestbook-messages-header {
display: flex;
align-items: center;
gap: 0.4em;
margin-block: 1.5rem 1rem;
}
#guestbooks___guestbook-messages-header::before {
content: "💬";
transform: translateY(1px);
}
#guestbooks___guestbook-messages-container > div {
margin-block: 1.2em;
padding-block: 1em;
padding-inline: 1.2em;
background-color: var(--code-background-color);
border: 1px solid color-mix(in srgb, var(--text-color), transparent 80%);
border-radius: 3px;
}
#guestbooks___guestbook-messages-container :is(blockquote, p) {
margin: 0.35em 0 0;
padding: 0;
border: 0;
background: none;
font-style: normal;
color: inherit;
}
#guestbooks___guestbook-messages-container blockquote::before {
content: none;
}
#guestbooks___guestbook-messages-container time {
color: color-mix(in srgb, var(--text-color), transparent 40%);
white-space: nowrap;
}
#guestbooks___guestbook-messages-container a {
color: var(--link-color);
}
#guestbooks___guestbook-messages-container a:visited {
color: var(--visited-color);
}
#guestbooks___guestbook-messages-container .guestbook-message-reply {
position: relative;
margin-block: 0.9rem 0.2rem;
margin-inline-start: 1.6rem;
padding-block: 0.9em;
padding-inline: 1.1em;
background-color: color-mix(in srgb, var(--link-color) 18%, var(--code-background-color));
border: 1px solid color-mix(in srgb, var(--link-color) 30%, color-mix(in srgb, var(--text-color), transparent 80%));
border-radius: 3px;
}
#guestbooks___guestbook-messages-container .guestbook-message-reply::before {
content: "";
position: absolute;
inset-block-start: -1rem;
inset-inline-start: -0.9rem;
width: 0.7rem;
height: 1.6rem;
border-inline-start: 2px solid color-mix(in srgb, var(--text-color), transparent 80%);
border-block-end: 2px solid color-mix(in srgb, var(--text-color), transparent 80%);
border-end-start-radius: 3px;
opacity: 0.8;
}
#guestbooks___guestbook-made-with {
margin-block-start: 0.5em;
}
</style>
</head>
<body class="home" onload="(function() { document.cookie = `timezone=${Intl.DateTimeFormat().resolvedOptions().timeZone};path=/`; })()">
<header>
<a class="title" href="/">
<h1>
Robert Birming
</h1>
</a>
<nav>
<p><a href='/'>Home</a> <a href='/about/'>About</a> <a href='/blog/'>Blog</a> <a href='/contact/'>Contact</a> <a href='/follow-rss/'>RSS</a></p>
</nav>
</header>
<main>
<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/robert/stockholm-city-skyline.webp" alt="Stockholm" /></p>
<h3 id=hi-im-robert-from-sweden>Hi, I'm Robert from Sweden 🇸🇪</h3><p><strong>Welcome to my corner for everyday stories, small adventures, and thoughts that linger long enough to owe me rent.</strong></p>
<p>The photo above is from my hometown, Stockholm, where I live in a tiny flat. I also have another place I call home, and you're standing in the hallway.</p>
<p>Come on in and have a look around. Browse the newest posts below, or <a href='/follow-rss/'>follow via RSS</a> to get notified whenever I publish something new.</p>
<p>Also blogging on Bear? You might want to check out my <a href='/bear-blog-library/'>Bear Blog library</a>.</p>
<h4 id=latest-posts>Latest posts</h4><p>
<ul class="embedded blog-posts">
<li data-tags="">
<span>
<i>
<time datetime="2026-08-21T15:41Z">
21 Aug, 2026
</time>
</i>
</span>
<a href="/how-do-you-know-that/">How do you know that?</a>
</li>
<li data-tags="">
<span>
<i>
<time datetime="2026-08-20T15:14Z">
20 Aug, 2026
</time>
</i>
</span>
<a href="/emptiness/">Emptiness</a>
</li>
<li data-tags="">
<span>
<i>
<time datetime="2026-08-19T15:22Z">
19 Aug, 2026
</time>
</i>
</span>
<a href="/evil-endless-edits/">Evil endless edits</a>
</li>
<li data-tags="">
<span>
<i>
<time datetime="2026-08-18T15:59Z">
18 Aug, 2026
</time>
</i>
</span>
<a href="/pour-your-words-out/">Pour your words out</a>
</li>
<li data-tags="">
<span>
<i>
<time datetime="2026-08-17T16:30Z">
17 Aug, 2026
</time>
</i>
</span>
<a href="/look-how-far-youve-come/">Look how far you’ve come</a>
</li>
</ul></p>
<p>Thanks for stopping by! 🙌</p>
<script>
window.addEventListener("load", () => {
if (navigator.webdriver !== true) {
const sendHit = score => {
const params = new URLSearchParams({
blog: "robert",
token: "/",
referrer: document.referrer.includes("robertbirming.com") ? "" : document.referrer,
title: "",
score: score
});
new Image().src = `/hit/?${params.toString()}`;
};
document.addEventListener('touchmove', () => sendHit(100), { once: true });
document.addEventListener('mousemove', () => sendHit(100), { once: true });
}
});
</script>
</main>
<footer>
<span id="footer-directive">
<p><a href='/blog/'>All posts</a> · <a href='/guestbook/'>Guestbook</a> · <a href='/follow-rss/'>RSS feed</a></p>
<script>
/*
Plugin name: Copy code blocks
Description: Adds a copy button to code blocks for easy clipboard copying
Author: Herman Martinus
Author URI: https://herman.bearblog.dev
*/
(function() {
'use strict';
document.addEventListener("DOMContentLoaded", function() {
// Find all code blocks
const codeBlocks = document.querySelectorAll('.highlight');
codeBlocks.forEach(function(highlight) {
// Create wrapper for positioning
highlight.style.position = 'relative';
// Create copy button
const copyButton = document.createElement('button');
copyButton.className = 'copy-code-button';
copyButton.setAttribute('aria-label', 'Copy code to clipboard');
copyButton.style.position = 'absolute';
copyButton.style.top = '8px';
copyButton.style.right = '6px';
copyButton.style.background = 'rgba(0, 0, 0, 0)';
copyButton.style.color = 'var(--text, inherit)';
copyButton.style.border = 'none';
copyButton.style.cursor = 'pointer';
copyButton.style.display = 'flex';
copyButton.style.width = '28px';
copyButton.style.height = '28px';
// Copy icon SVG
copyButton.innerHTML = `
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="5" y="5" width="9" height="9" rx="1" stroke="currentColor" stroke-width="1.5" fill="none"/>
<path d="M3 10V3C3 2.44772 3.44772 2 4 2H10" stroke="currentColor" stroke-width="1.5" fill="none"/>
</svg>
`;
// Copy functionality
copyButton.addEventListener('click', function() {
const pre = highlight.querySelector('pre');
const code = pre.textContent;
navigator.clipboard.writeText(code).then(function() {
// Change to checkmark icon
copyButton.innerHTML = `
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3 8L6.5 11.5L13 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
`;
// Reset after 1 seconds
setTimeout(function() {
copyButton.innerHTML = `
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="5" y="5" width="9" height="9" rx="1" stroke="currentColor" stroke-width="1.5" fill="none"/>
<path d="M3 10V3C3 2.44772 3.44772 2 4 2H10" stroke="currentColor" stroke-width="1.5" fill="none"/>
</svg>
`;
}, 1000);
}).catch(function(err) {
console.error('Failed to copy code: ', err);
});
});
// Add button to highlight div
highlight.appendChild(copyButton);
});
});
})();
</script>
</span>
<span>
Powered by <a href="https://bearblog.dev">Bear <span role="img" class="bear" aria-label="ASCII bear logo">ʕ•ᴥ•ʔ</span></a>
</span>
</footer>
<script>
(() => {
"use strict";
const times = document.querySelectorAll('time');
const format_string = "d M, Y" || "d M, Y"
times.forEach(time => {
time.innerText = formatDate(time.dateTime, format_string)
});
function formatDate(dateStr, formatStr) {
const date = new Date(dateStr);
const day = date.getDate();
const month = date.getMonth();
const year = date.getFullYear();
const weekday = date.getDay();
const hours = date.getHours();
const minutes = date.getMinutes();
const monthsFull = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
const monthsShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
const daysFull = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
const daysShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
function getOrdinal(n) {
const s = ['th', 'st', 'nd', 'rd'];
const v = n % 100;
return s[(v - 20) % 10] || s[v] || s[0];
}
const map = {
'd': () => day.toString().padStart(2, '0'),
'm': () => (month + 1).toString().padStart(2, '0'),
'Y': () => year.toString(),
'y': () => year.toString().slice(-2),
'F': () => monthsFull[month],
'j': () => day.toString(),
'D': () => daysShort[weekday],
'l': () => daysFull[weekday],
'S': () => getOrdinal(day),
'M': () => monthsShort[month],
'H': () => hours.toString().padStart(2, '0'),
'h': () => {
let h = hours % 12;
h = h === 0 ? 12 : h;
return h.toString().padStart(2, '0');
},
'g': () => {
let h = hours % 12;
return h === 0 ? '12' : h.toString();
},
'i': () => minutes.toString().padStart(2, '0'),
'a': () => hours < 12 ? 'am' : 'pm',
'A': () => hours < 12 ? 'AM' : 'PM',
};
let result = '';
for (let char of formatStr) {
result += map[char] ? map[char]() : char;
}
return result;
}
})();
</script>
</body>
<!-- ID: robert -->
<!-- 🐻 -->
</html>
Sitemap
Кол-во: 0
XML-карта сайта для поисковиков
?
Sitemap.xml помогает поисковику быстрее находить и индексировать страницы. Особенно важен для крупных сайтов и новых страниц, на которые ещё нет входящих ссылок.
Robots.txt не содержит ссылку на карту сайта. Рекомендуется добавить карту сайта и указать ссылку на нее в robots.txt.
Внутренние ссылки
Кол-во: 16
Ссылки на другие страницы своего сайта
?
Внутренние ссылки распределяют ссылочный вес между страницами и помогают поисковику обходить сайт. Пустые анкоры и ссылки на запрещённые robots.txt страницы — типичные ошибки.
Внутренних ссылок на странице 16 оптимально.
Внутренние ссылки не запрещены к индексации в robots.txt.
Показать внутренние ссылки
| Url | Анкор | Состояние | Анализировать |
|---|---|---|---|
| / |
<h1>
Robert Birming
</h1>
|
|
Анализировать url |
| / |
Home
|
|
Анализировать url |
| /about/ |
About
|
|
Анализировать url |
| /blog/ |
Blog
|
|
Анализировать url |
| /contact/ |
Contact
|
|
Анализировать url |
| /follow-rss/ |
RSS
|
|
Анализировать url |
| /follow-rss/ |
follow via RSS
|
|
Анализировать url |
| /bear-blog-library/ |
Bear Blog library
|
|
Анализировать url |
| /how-do-you-know-that/ |
How do you know that?
|
|
Анализировать url |
| /emptiness/ |
Emptiness
|
|
Анализировать url |
| /evil-endless-edits/ |
Evil endless edits
|
|
Анализировать url |
| /pour-your-words-out/ |
Pour your words out
|
|
Анализировать url |
| /look-how-far-youve-come/ |
Look how far you’ve come
|
|
Анализировать url |
| /blog/ |
All posts
|
|
Анализировать url |
| /guestbook/ |
Guestbook
|
|
Анализировать url |
| /follow-rss/ |
RSS feed
|
|
Анализировать url |
Внешние ссылки
Кол-во: 1
Ссылки на сторонние сайты
?
Исходящие внешние ссылки передают часть ссылочного веса на чужие сайты. Ссылки на авторитетные ресурсы безопасны; ссылки на мусорные сайты могут навредить репутации страницы.
Внешних ссылок на странице 1 оптимально.
Показать внешние ссылки
| Url | Анкор | Анализировать |
|---|---|---|
| bearblog.dev |
Bear <span role="img" class="bear" aria-label="ASCII bear logo">ʕ•ᴥ•ʔ</span>
|
Анализировать url |
Конкуренты Готовность: 0%
Конкуренты в Яндексе
Кол-во: 0
Топ сайтов-конкурентов в Яндексе
?
Сайты, чаще всего появляющиеся в ТОПе Яндекса по запросам из семантического ядра этой страницы.
Мы не нашли у вас конкурентов в Яндексе. Сайт или очень молодой или плохо продвигается.
Конкурентов в ТОП-10 Яндекса не нашлось.
Конкуренты в Google
Кол-во: 0
Топ сайтов-конкурентов в Google
?
Сайты, чаще всего появляющиеся в ТОПе Google по запросам из семантического ядра этой страницы.
Конкуренты в Google тоже не найдены. Займитесь продвижением сайта!
Конкурентов в ТОП-10 Google не нашлось.
ЗоЗПП: права потребителей Готовность: 100%
Нарушения
Не выявлены
Признаков дистанционной продажи товаров (интернет-магазина) не обнаружено — требования ЗоЗПП о раскрытии информации продавца к сайту не применяются. Нарушений нет.
ФЗ-149: рекомендательные технологии Готовность: 100%
Нарушения
Не выявлены
Рекомендательные блоки («с этим покупают», «похожие товары» и т.п.) на сайте не обнаружены — требования ст. 10.7 ФЗ-149 к сайту не применяются. Нарушений нет.
ФЗ-38: реклама Готовность: 100%
Нарушения
Не выявлены
Рекламных тематик с обязательными оговорками (медицина, БАД, кредиты и займы, новостройки) на сайте не обнаружено. Нарушений нет.
ФЗ-436: защита детей Готовность: 100%
Нарушения
Не выявлены
Признаков информационной продукции (новости, видео, книги, игры, курсы) не обнаружено — обязательная возрастная маркировка по ФЗ-436 сайту не требуется. Нарушений нет.
Вердикт
Анализ сайта birming.com выполнен, проверка показывает, что сайт хорошо оптимизирован на 71%.
Исправьте ошибки в мета-тегах.
Исправьте ошибки оптимизации.
Поделитесь с друзьями: