Hreflang Lab
24 subscribers
2 photos
18 links
Deep, research-grade analysis of international SEO: hreflang at scale, ccTLD vs subfolder studies, and what large multilingual datasets actually reveal about cross-region rankings.
Download Telegram
The invalid-code errors that pass casual review

An audit pattern: hreflang values that look plausible to a human but are silently invalid, so Google ignores the annotation entirely while Search Console may not loudly complain.

The code structure, precisely: language must be ISO 639-1 (two letters), optional region must be ISO 3166-1 Alpha-2, joined by a hyphen, language first. en-GB, not gb-en, not en_GB, not en-UK.

The specific traps we catch repeatedly:

en-UK: "UK" is not a valid region code. The country is GB. This one is almost universal and almost always wrong.

en-EU, es-LATAM: the EU and Latin America are not countries; no Alpha-2 exists. There is no way to target "Europe" or "Latin America" with one region code.

— Underscore instead of hyphen (en_us): copied from locale strings in code. Invalid in hreflang.

— Wrong order (us-en): region-language is backwards.

zh-CN vs script subtags: you can specify script (zh-Hans) per BCP-47, which is sometimes more correct than region for Chinese, but tooling support varies.

Why it's insidious: an invalid value doesn't error the whole page — Google just drops that one annotation, so a 12-language cluster quietly becomes an 11-language cluster with no obvious symptom.

Limitation: validators disagree on edge cases like script subtags and deprecated codes. When in doubt, prefer the simplest valid language-only code over a clever region guess.
Three places to put hreflang — and when each one wins

Hreflang can live in the HTML head, in HTTP headers, or in the XML sitemap. They're functionally equivalent to Google, but the operational tradeoffs differ sharply, and mixing them causes problems.

What we've found across implementations:

— HTML <link> tags: most common, easiest to inspect, but they bloat every page. A 50-language cluster adds 50 link tags to all 50 pages — that's 2,500 annotations to keep synchronized, and page weight grows linearly. Fine for small clusters.

— HTTP headers: the only option for non-HTML files (PDFs, etc.). Operationally fiddly; hard to audit because you can't see them in page source without inspecting response headers.

— XML sitemap: scales best for large clusters. The annotations live in one centralized, machine-generated file rather than scattered across thousands of pages. Easiest to regenerate atomically when a locale is added or removed.

The critical rule: pick one method per cluster. Don't put partial hreflang in HTML and the rest in the sitemap — Google reads all sources, and inconsistencies between them create contradictions that can invalidate the cluster.

The scaling argument: past roughly 10 languages, the sitemap method's centralization usually pays for itself in maintainability and reduced reciprocity errors.

Caveat: sitemap hreflang is the least visible to third-party tools and the hardest for new team members to discover, so document it. The right choice trades inspectability against maintainability.
The crawl-budget tax of large hreflang clusters

An under-discussed cost: hreflang creates a dense graph of cross-references, and Google must crawl and reconcile every node before it can trust the cluster. For large multilingual sites, this interacts with crawl budget in ways that delay correct behavior.

The mechanism: a cluster is only valid once Google has recrawled enough members to confirm reciprocity. Add a 40th language, and the annotation isn't confirmed until the crawler revisits a meaningful share of the other 39 pages to see the new return tags.

What we observe:

— On sites with constrained crawl budget, newly added locales can take weeks to activate, because the bottleneck is recrawl frequency of the slowest cluster members, not the new page itself.

— Frequent structural churn (adding/removing locales, changing URL patterns) keeps the cluster in a perpetual semi-confirmed state. Each change resets the reconciliation clock for affected nodes.

— Sitemaps with accurate lastmod meaningfully help here — they hint which members changed, focusing recrawl where it matters.

The practical implication: international rollouts should be batched and stable, not drip-fed. Adding 20 markets at once, then leaving the structure alone, confirms faster than adding one per week for 20 weeks.

Caveats: crawl budget is mostly a concern at scale (hundreds of thousands of URLs); small sites rarely hit it. And we can't directly measure Google's internal reconciliation state — we infer it from the lag between deploying tags and seeing correct per-locale serving.
Relative URLs and protocol mismatches break clusters quietly

A mechanical failure mode that produces no obvious error but severs the cluster: hreflang hrefs that aren't fully-qualified, canonical, absolute URLs.

The requirements, stated exactly:

— Absolute, not relative. href="/de/" is invalid in this context; it must be https://example.com/de/. Some parsers tolerate relative, but the spec and Google expect absolute, and tolerance is not something to depend on.

— Protocol must match reality. If the site is on HTTPS but the hreflang href says http://, that's a different URL. Google follows it, may get redirected, and the redirect breaks the clean reciprocity match.

— Trailing-slash consistency. /de and /de/ are different URLs. If the annotation says one and the canonical is the other, the return-tag handshake fails on a character.

— www vs non-www, and tracking parameters, same story — any divergence from the exact canonical URL is a different node.

Why it's hard to catch: each individual URL still resolves (via redirect), the page still loads, nothing 404s. The damage is purely in cluster reconciliation — Google sees the declared alternate and the actual canonical as two different things and declines to confirm reciprocity.

The audit: extract every hreflang href, and confirm each is byte-for-byte the canonical URL of its target, including protocol, host, path, and slash. Caveat: a few redirects in a large cluster won't necessarily collapse it — Google is somewhat resilient — but they accumulate into the "no return tags" warning.
International near-duplicates: why Google mostly forgives them

A reassurance grounded in how Google's model actually works, because fear of "duplicate content penalties" drives a lot of bad hreflang decisions.

The hypothesis to dispel: that /en-us/ and /en-gb/ with 95% identical text trigger a duplicate-content penalty requiring canonicalization to one master.

What the evidence and Google's statements suggest:

— There is no duplicate-content penalty for legitimate international variants. Google explicitly recognizes that the same product page in US and UK English is a normal, expected pattern, not manipulation.

— Hreflang is precisely the mechanism that tells Google "these are localized equivalents, pick the right one per user" — which is the opposite of asking it to choose one and suppress the rest.

— Without hreflang, Google may still figure it out, but it might consolidate the variants and serve the "wrong" one (a UK user seeing USD prices), or pick one to index and filter the others as duplicates.

So the risk of international duplicates isn't a penalty — it's wrong-variant serving and signal dilution. Hreflang fixes serving; it doesn't need to fix a penalty that doesn't exist.

The genuine caveat: if your only differentiation between locales is the URL and a flag in the corner, you have thin localization. Google may still cluster them and the hreflang adds little. The fix there isn't more annotation — it's more genuine localization (price, currency, examples, spelling) so the variants earn their separate existence.
Worth your feed

@LinkBuildIndex. Benchmarks for link building campaigns: cost-per-link, reply rates, DR distributions… We read it, you probably should too.
Forwarded from Потрачено! Клуб спящих бизнесменов!
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 aff.top — вся индустрия арбитража в одном месте
🧠 Блог про арбитраж и ИИ — как нейросети меняют залив и антифрод
🚨 База спамеров — ежедневно собираем спамеров и ведём рейтинг
🛠 70+ инструментов — от клоаки до антифрод-чека
🎬 1000+ видео — весь YouTube про трафик в одной ленте
👤 2400+ персон — байеры и фаундеры с контактами напрямую
Без регистрации, без платных «премиумов».
👇 Подписывайся на канал
This media is not supported in your browser
VIEW IN TELEGRAM
Алиса AI будет конкурировать с Google AI Studio

Яндекс разворачивает экосистему AI-агентов на базе Алисы с доступом сначала для компаний, затем для всех. Агенты уже работают в Яндекс Такси и Лавке, скоро появятся в браузере и студии разработки. Платформа интегрирует стандартные функции — заказ такси, покупки, анализ данных. Алиса AI показывает неплохие результаты: менее известна, чем конкуренты, поэтому предлагает щедрые лимиты на видеогенерацию и работу с контентом. Яндекс планирует внедрить…

➡️ Читайте на сайте: https://aff.top/blog/alisa-ai-budet-konkurirovat-s-google-ai-studio

🧠 Ещё больше инсайтов → в канале AFF.top
hreflang vs the content-language meta tag vs HTML lang

Three language signals, frequently conflated, with very different scopes. Clarifying which does what resolves a surprising number of audit findings.

The three:

hreflang: a between-page signal. It says "these distinct URLs are localized equivalents; serve the right one per user." It does nothing for a single standalone page.

— HTML lang attribute (<html lang="de">): a within-page signal, primarily for accessibility (screen-reader pronunciation) and browser behavior. Google largely ignores it for ranking/serving but it's correct practice and cheap.

content-language meta / HTTP header: a legacy within-page signal. Google has stated it doesn't use it for language determination. Harmless but not load-bearing.

The practical hierarchy: hreflang does the international serving work. The lang attribute is good hygiene for accessibility and won't hurt. content-language is optional and inert for Google.

Where confusion causes harm: teams set content-language meticulously, skip hreflang, and wonder why localized serving doesn't happen. The meta tag was never going to do that job — it has no cross-URL knowledge.

A subtlety: Google actually determines a page's language from its visible content, not from any of these tags. So all three are declarations, not commands — and hreflang is the only one that operates across the cluster.

Caveat: this is Google-specific. Other search engines (notably Yandex) weight these signals differently, so the inert-for-Google verdict isn't universal.
This media is not supported in your browser
VIEW IN TELEGRAM
В Zennoposter добавили ИИ-помощник

Zennolab добавил в Zennoposter встроенный ИИ-кубик с доступом к четырём моделям (Gemini, DeepSeek, Claude, ChatGPT) — 50 бесплатных запросов в сутки. Есть режимы Assistant (чтение) и Agent (автоматическое создание скриптов), плюс новый GET-запрос по API. Нейросети хорошо справляются с регистрацией, постингом, фармингом аккаунтов и простым кодированием, но требуют проверки при парсинге динамических сайтов и диагностике ошибок. В связке с Zennoobr…

➡️ Читайте на сайте: https://aff.top/blog/v-zennoposter-dobavili-ii-pomoschnik

🧠 Ещё больше инсайтов → в канале AFF.top
This media is not supported in your browser
VIEW IN TELEGRAM
Новую Google reCapcha прошли статичной картинкой

Google выпустил обновленную reCAPTCHA, требующую движений рук для прохождения, но система оказалась уязвима к обходу. Достаточно транслировать статичное изображение с нужным жестом через виртуальную камеру с помощью простого Python-скрипта, чтобы нейросеть пропустила пользователя. Это создает серьёзный риск для сайтов: защита от ботов, позиционировавшаяся как прорыв, на деле не работает. Баг остается актуальным и позволяет спамерам легко автомат…

➡️ Читайте на сайте: https://aff.top/blog/novuiu-google-recapcha-proshli-statichnoi-kartinkoi

🧠 Ещё больше инсайтов → в канале AFF.top
The n-squared problem: cluster completeness at scale

A structural insight that explains most large-cluster failures: hreflang is a complete graph. With n locales, every page must reference all n URLs (including itself), so you maintain n×n = n² annotations total. The math turns small oversights into systemic breakage.

What this means concretely:

— 5 locales = 25 annotations. Manageable by hand. 30 locales = 900 annotations. 50 locales = 2,500. No human maintains that correctly without generation from a single source of truth.

— Partial clusters are the dominant failure: page A lists 30 alternates, but page B (added later) only lists 20 because the template that generated B was older. Now the 10 missing pages have broken reciprocity specifically with B.

— Asymmetry is invisible per-page. Each page looks internally consistent; the break only appears when you diff the alternate-lists across all members. This is why eyeballing individual pages misses it.

The defensible architecture: one authoritative list of (locale → URL) mappings, and every annotation everywhere is generated from it programmatically. Never hand-edit individual page annotations.

The audit that catches it: build the full adjacency matrix — rows and columns are URLs, cells mark "A references B." A healthy cluster is a fully symmetric matrix. Every empty cell off the diagonal is a missing return tag.

Caveat: you don't always need every page in every locale. If /products/x exists in only 6 of 30 markets, its cluster is the 6 — not 30. Forcing nonexistent pages into the matrix creates 404-pointing annotations, which is its own error.
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
DeepSeek представит последнюю версию v4

DeepSeek выпустит v4 в середине июля с новой моделью ценообразования API: токены подорожают в 2 раза в часы пиковой нагрузки (09:00–12:00 и 14:00–18:00 по пекинскому времени). Компания планирует уведомлять пользователей по почте за 24 часа до изменения тарифов. Проблема с ошибками «server busy» останется, но обойдётся дороже — это может существенно повлиять на экономику проектов, которые активно используют API DeepSeek для автоматизации и масшта…

➡️ Читайте на сайте: https://aff.top/blog/deepseek-predstavit-posledniuiu-versiiu-v4

🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Anthropic выпустили Sonnet 5

30 июня вышла Claude Sonnet 5 — новая версия позиционируется как самая агентная в линейке и приближается к флагманской Opus 4.8. Модель лучше справляется со сложными многоуровневыми задачами, устойчива к вредоносным запросам и не генерирует эксплойты. Sonnet 5 доступна на Free-тарифе, но тестирование показало скромные улучшения: хотя работает лучше Sonnet 4.6, её обгоняют конкуренты, включая китайские модели, которые дешевле через API при лучшей…

➡️ Читайте на сайте: https://aff.top/blog/anthropic-vypustili-sonnet-5

🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Clickstar прекращает работу

Clickstar закрывается. Легендарная пуш-сеть прекращает закуп трафика с 1 августа, полная остановка — 20 августа.

Сетка работала почти 8 лет и была одним из лучших источников качественного трафика на Россию и СНГ. Сейчас пуш-трафик стал слишком ботовым из-за гугловских банов на скрипты сбора.

Что это означает для арбитражников — разбираемся в ста…

➡️ Читайте на сайте: https://aff.top/blog/clickstar-prekraschaet-rabotu

🧠 Ещё больше инсайтов → в канале AFF.top
noindex inside an hreflang cluster poisons it

A contradiction that quietly degrades clusters: including a noindex page as an alternate. The two directives express opposite intents, and the conflict propagates.

The logic of the failure:

— hreflang says "this is a valid, serveable alternate — index it and show it to the right users."

noindex says "do not index this page at all."

A page that is both an hreflang alternate and noindexed is contradictory. Google resolves it by honoring noindex — the page drops from the index — but the other cluster members still point to it. Their annotations now reference a non-indexable URL, which can weaken reciprocity confirmation for the whole set, not just the noindexed page.

Where this happens in the wild:

— Staging or thin locale pages left in the cluster's alternate list while noindexed "until they're ready."

— Faceted or paginated variants that are noindexed but still emit the cluster's shared hreflang block from a global template.

— A locale being sunset: someone adds noindex but forgets to remove it from the other pages' alternate lists.

The rule: if a page shouldn't be indexed, it shouldn't be in the hreflang cluster — remove it from every other page's alternate list at the same time you noindex it. The two changes are one operation.

Caveat: the cluster won't always collapse — Google may tolerate one bad node — but you've introduced a contradiction that makes the cluster's state ambiguous, and ambiguity is exactly what you're trying to eliminate with hreflang.
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Facebook запретил рекламу онлайн-казино Mr Vegas

Британский ASA запретил рекламу казино Mr Vegas из-за «слишком милых» мультяшных животных в креативах — регулятор счёл, что такой стиль привлекает детей, в том числе через Facebook. Рекламодатель запустил кампанию в феврале, бан вышел в июле. Логика регулятора вызывает вопросы: дети неплатёжеспособны, а таргетировать их на гемблинг бессмысленно.

➡️ Читайте на сайте: https://aff.top/blog/facebook-zapretil-reklamu-onlain-kazino-mr-vegas

🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
В Whatsapp скамят пользователей с помощью поддельных никнеймов

WhatsApp запустил никнеймы — и почти сразу начался скам. Мошенники регистрируют имена, похожие на бренды, звёзд и политиков, с минимальными опечатками.

Индия, где 500 млн пользователей WhatsApp, потребовала от Meta объяснений за 3 дня. Meta говорит, что точные совпадения заблокированы — но одна буква в другом месте защиту не триггерит.

Похоже, п…

➡️ Читайте на сайте: https://aff.top/blog/v-whatsapp-skamiat-polzovatelei-s-pomoschiu-poddelnykh-nikneimov

🧠 Ещё больше инсайтов → в канале AFF.top
One language, many regions: the all-English hreflang case

An underappreciated use of hreflang that has nothing to do with translation: a single-language site serving multiple regions. English-language businesses targeting US, UK, AU, CA, IE often need hreflang even though no word is translated.

The problem it solves: Google sees five near-identical English pages and, absent guidance, may pick one to rank everywhere — serving Australian visitors a page with USD prices and US shipping, or filtering the AU page as a duplicate of the US one.

The annotation pattern: en-us, en-gb, en-au, en-ca, en-ie, plus typically an en or x-default for English speakers in unlisted regions. All the en-XX codes share a language and differ only by region.

What the data suggests:

— The gain is almost entirely in correct-variant serving: the right currency, legal terms, and contact details reach the right market, improving CTR and reducing bounce.

— Without it, the strongest variant (often the US page, with the most links) tends to dominate all English SERPs regardless of the searcher's country.

The honest limitation: when the only differences are currency and a phone number, the pages are thin variants, and Google may still consolidate them despite the annotation. The annotation expresses intent but can't manufacture differentiation. Stronger region-specific content (local case studies, region-relevant examples) makes the hreflang signal credible rather than aspirational.

Nuance worth flagging: don't reflexively add en-us if you don't actually serve a distinct US experience — a bare en is cleaner than fragmenting into regions you don't differentiate.
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Вышел ZCode - аналог Claude code

Вышел ZCode — десктопный аналог Claude Code от разработчиков GLM-5.2. Работает с API от Anthropic, поддерживает SSH-деплой на сервер, в том числе Linux.

Вместо пошаговых скриптов — система целеполагания Goal: закидываешь сложный промт, агент сам разбивает задачу и выполняет. Плюс управление через Telegram-бота.

Но главная фича — мультиагентность…

➡️ Читайте на сайте: https://aff.top/blog/vyshel-zcode-analog-claude-code

🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Cloudeflare грозит Google блокировкой трафика

Cloudflare объявил: с 15 сентября 2026 года ИИ-краулеры будут заблокированы по умолчанию на всех сайтах с рекламой — включая Googlebot, Applebot и Bingbot.

Главная претензия — к Google: один и тот же бот индексирует страницы и собирает данные для обучения нейросетей, что даёт поисковику нечестное преимущество.

Но есть нюанс, который меняет всю к…

➡️ Читайте на сайте: https://aff.top/blog/cloudeflare-grozit-google-blokirovkoi-trafika

🧠 Ещё больше инсайтов → в канале AFF.top