Анализ страницы https://meshcore.io/flasher
Основное Готовность: 100%
Домен
meshcore.io
Состояние доменного имени
?
Проверяем корректность доменного имени и наличие технических проблем на уровне домена.
Домен второго уровня идеален для продвижения.
Отличный запоминающийся домен.
Ответ сервера
200 Успешный ответ
HTTP-код ответа и цепочка редиректов
?
Код 200 — страница доступна. Коды 3xx — редиректы (цепочки замедляют загрузку и размывают ссылочный вес). Коды 4xx/5xx — ошибки, поисковик не сможет проиндексировать страницу.
Сервер настроен корректно.
Безопасность
Сайт безопасен
Использование HTTPS и SSL-сертификат
?
HTTPS — обязательный стандарт. Google и Яндекс отдают предпочтение защищённым сайтам. Отсутствие SSL или просроченный сертификат ведут к предупреждениям в браузере и снижению позиций.
Не настроен HSTS (Strict-Transport-Security) — рекомендуется включить.
На сайте работает защищенный протокол ssl и сайт открывается по https.
Ssl-сертификат действителен до 11.10.2026 5:51:56.
Сервер поддерживает HTTP/3 (QUIC) — новейший протокол.
Поздравляем! Сайт не содержится в реестре РКН.
Кодировка
UTF-8
Кодировка символов страницы
?
Стандарт — UTF-8. Неправильная кодировка вызывает нечитаемые символы и мешает поисковику корректно распознать текст страницы.
Указана кодировка на странице UTF-8.
Язык
en
Атрибут lang в HTML-теге
?
Атрибут lang (<html lang="ru">) сообщает поисковикам и браузерам, на каком языке написана страница. Помогает при ранжировании в региональном поиске.
Язык документа указан явно: en.
Скорость загрузки
~0,10сек
Время отклика сервера (TTFB)
?
Time To First Byte — время до получения первого байта от сервера. Норма до 200 мс. Медленный отклик ухудшает пользовательский опыт и ранжирование: Яндекс и Google учитывают скорость страниц.
Скорость загрузки сайта 0,10сек оптимальна.
Объем документа
3Кб
Размер HTML-кода страницы
?
Слишком большой HTML замедляет парсинг браузером и сканирование поисковым роботом. Рекомендуется не более 200 Кб.
Объем html-документа 3Кб оптимален.
Структура html-документа корректна.
Ресурсы
Ресурсы: 5
Внешние ресурсы страницы (CSS, JS, изображения)
?
Количество и тип подключённых ресурсов влияют на скорость загрузки. Большое число запросов увеличивает время рендеринга страницы.
Кол-во файлов ресурсов 5 достаточно.
Показать полный список ресурсов
| Тип | Название | Значение |
|---|---|---|
| stylesheet | https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css | |
| stylesheet | assets/css/style.css | |
| js | https://cdn.tailwindcss.com | |
| js | https://www.googletagmanager.com/gtag/js?id=G-JRW3QH54CP | |
| js | https://static.cloudflareinsights.com/beacon.min.js |
Серверные заголовки
Кол-во: 11
HTTP-заголовки ответа сервера
?
Заголовки сервера передают браузеру и поисковику служебную информацию: кеширование, безопасность (CSP, HSTS), сжатие (gzip). Правильная настройка ускоряет загрузку и повышает защищённость.
Найдены серверные заголовки 11шт. Подробнее про серверные заголовки.
Показать полный список серверных заголовков
| Ключ | Значение |
|---|---|
| Date | Fri, 21 Aug 2026 05:09:21 GMT |
| X-Content-Type-Options | nosniff |
| report-to | {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=3jYuk9R%2BHrWr3qQGAOqawk6Ka1Pi8SnsQZhDsCWN1pFf92oH%2FRaWi2fFuR4gjxo38BdGMW2rw6yJpvH9DquOj6P21g7uFNHp53vdOMh5HiWnCJzAFbAHkuy8wPRMWQ%3D%3D"}]} |
| nel | {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800} |
| Access-Control-Allow-Origin | * |
| Cache-Control | public, must-revalidate, max-age=0 |
| Referrer-Policy | strict-origin-when-cross-origin |
| Server | cloudflare |
| cf-cache-status | DYNAMIC |
| cf-ray | a2e7200a8879cce0-HEL |
| Alt-Svc | h3=":443" |
CMS
Не определена
Система управления сайтом (движок)
?
CMS — это движок, на котором работает сайт (WordPress, 1C-Bitrix, Tilda и др.). Знание CMS помогает понять возможности SEO-оптимизации и подобрать подходящие инструменты. «Не определена» — вероятно, самописный сайт или нестандартная сборка.
CMS не определена. Вероятно, сайт самописный либо движок надёжно скрыт. Это не ошибка.
Веб-сервер
Программное обеспечение сервера
?
Веб-сервер — это ПО, которое отдаёт страницы посетителям (nginx, Apache, IIS, LiteSpeed и др.). Определяется по серверным заголовкам ответа (Server, X-Powered-By и т.п.). «Не определён» — сервер намеренно скрывает эти заголовки, это нормальная практика безопасности.
Сайт работает на веб-сервере Cloudflare.
Мета-теги Готовность: 33%
Title
MeshCore Flasher
Заголовок страницы в браузере и поисковой выдаче
?
Title — главный SEO-заголовок страницы. Влияет на CTR в поиске и ранжирование. Оптимальная длина: 50–70 символов. Ключевые слова — ближе к началу.
Необходимо увеличить число символов в title (текущее значение мало: 16, минимум: 25, оптимально: от 40 до 45)
Дублей словоформ в title не найдено.
Description
Flash the MeshCore Firmware to a LoRa device.
Описание страницы в поисковой выдаче (сниппет)
?
Meta Description — текст под заголовком в выдаче. Напрямую на позиции не влияет, но влияет на CTR. Оптимальная длина: 120–160 символов.
Необходимо увеличить число символов в description (текущее значение мало: 45, минимум: 80, оптимально: от 120 до 130)
Keywords
Список ключевых слов страницы (устаревший тег)
?
Meta Keywords не учитывается Яндексом и Google для ранжирования с 2009–2012 годов. Заполнение не обязательно, но не вредит. Конкурент может использовать содержимое для анализа.
Установите мета-тег keywords!
Канонический Url
https://meshcore.io/flasher/
Указывает поисковику основную версию страницы
?
Canonical (rel=canonical) предотвращает проблему дублей страниц. Должен точно совпадать с URL проверяемой страницы. Неправильный canonical может передать ссылочный вес на другую страницу.
В каноническом Url обнаружен лишний слэш (/).
Robots
Ошибок нет
Директивы для поисковых роботов на уровне страницы
?
Meta Robots управляет индексацией конкретной страницы: index/noindex — индексировать ли, follow/nofollow — следовать ли по ссылкам. Noindex полностью исключает страницу из поиска.
Meta-тег robots не указан. Страница свободна для индексации.
Адаптивность
width=device-width, initial-scale=1.0
Настройка масштабирования на мобильных устройствах
?
Тег viewport (<meta name="viewport">) сообщает браузеру, как масштабировать страницу на мобильных. Стандарт: width=device-width, initial-scale=1. Отсутствие — признак отсутствия мобильной версии.
Meta-тег viewport со значением-константой width=device-width задаёт ширину страницы в соответствии с размером экрана.
Meta-тег viewport со значением initial-scale=1.0 определяет масштаб 1:1, т.е. «не масштабировать».
Разметка OpenGraph
Кол-во: 7
Мета-теги для красивых превью в соцсетях
?
OpenGraph (og:title, og:description, og:image) управляет тем, как страница выглядит при репосте в социальных сетях и мессенджерах. Отсутствие OG-тегов — невзрачный превью при шеринге.
Разметка OpenGraph задана. Страница оптимизирована под социальные сети.
Показать полный список og мета-тегов
| Тип | Значение |
|---|---|
| og:type | website |
| og:title | MeshCore Flasher |
| og:description | Flash the MeshCore Firmware to a LoRa device. |
| og:image | /assets/images/icon.png |
| og:image:alt | Logo |
| og:url | https://meshcore.io |
| og:site_name | MeshCore Flasher |
Все мета-теги
Кол-во: 10
Полный список мета-тегов страницы
?
Таблица всех meta-тегов, включая нестандартные. Позволяет найти опечатки, дубли и лишние теги.
Найдены мета-теги 10шт. Мета-теги не видимы для человека и предназначены для обмена информацией между веб-страницей и поисковыми системами, браузерами и другими веб-службами. С ними роботы 🤖 и устройства ведут себя более ожидаемо.
Показать полный список мета-тегов
| Тип | Название | Значение |
|---|---|---|
| name | viewport | width=device-width, initial-scale=1.0 |
| name | author | Liam Cottle |
| name | description | Flash the MeshCore Firmware to a LoRa device. |
| property | og:type | website |
| property | og:title | MeshCore Flasher |
| property | og:description | Flash the MeshCore Firmware to a LoRa device. |
| property | og:image | /assets/images/icon.png |
| property | og:image:alt | Logo |
| property | og:url | https://meshcore.io |
| property | og:site_name | MeshCore Flasher |
Оптимизация Готовность: 0%
Структура
Ошибок нет
Семантические HTML-элементы страницы
?
Проверяет наличие основных структурных элементов: nav, header, footer, main. Корректная семантическая структура помогает поисковику понять архитектуру страницы.
Структура документа корректна (теги <html> и <body> присутствуют в единственном экземпляре).
Контент
Есть ошибки
Объём и качество текстового содержимого
?
Анализирует объём полезного текста на странице. Слишком мало — страница может считаться малополезной. Слишком много — ухудшается читаемость и восприятие.
Слова из title 1 встречаются в тексте редко. Добавьте в контент страницы слова из тега <title>!
Абзацев с текстом 0 слишком мало. Добавьте больше абзацев с текстом (тег <p>)!
Среднее число слов в абзаце 0 слишком мало. Сделайте контент более читаемым!
Кол-во знаков контента 47 слишком мало. Добавьте больше текста!
Кол-во слов 9 слишком мало. Добавьте больше текста (минимум 400 слов)!
Заголовки
Есть ошибки
Иерархия заголовков H1–H6
?
H1 должен быть один и содержать ключевой запрос. H2–H6 описывают подразделы. Пропуск уровней (H1 → H3) и несколько H1 — типичные ошибки, снижающие понятность страницы для поисковика.
Не обнаружено заголовков на странице. Добавьте заголовки (<h1>, <h2> или <h3>)
Тошнота
1
Насколько одно слово доминирует в тексте
?
Классическая тошнота = √(частота самого повторяющегося слова). Норма до 7–8: текст воспринимается естественно. Выше — поисковик может счесть страницу переспамленной.
Тошнота страницы в пределах нормы 3.
Академич. тошнота
Нет данных для расчета
Насколько текст перенасыщен ключевыми словами
?
Академическая тошнота = (частота слова / общее количество слов) × 100%. Показывает долю конкретного слова в тексте. Норма 5–15%.
Академическая тошнота не рассчитана. Измените текст страницы!
Семантическое ядро
2
Наиболее часто встречающиеся слова на странице
?
Топ слов по частоте использования. Показывает, какие слова доминируют в тексте с точки зрения поисковика.
Контент страницы не содержит осмысленного текста. Добавьте текст на страницу!
Показать список слов
| Слово | Кол-во | Частота |
|---|---|---|
| flasher | 1 | 11,11% |
| launch | 1 | 11,11% |
Индексация Готовность: 80%
Индексирование
Ошибок нет
Разрешено ли индексирование страницы
?
Проверяет, не закрыта ли страница от индексации через robots.txt, meta robots или X-Robots-Tag. Страница, закрытая от индексации, не появится в поисковой выдаче.
Анкоров на странице 8 оптимально. Поисковые роботы обязательно проиндексируют сайт.
Robots.txt
Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 49038 байт. Загружен за: 0сек.
Проверяемая страница не запрещена в robots.txt.
Robots.txt доступен по постоянному адресу
Показать содержимое robots.txt
# As a condition of accessing this website, you agree to abide by the following
# content signals:
# (a) If a Content-Signal = yes, you may collect content for the corresponding
# use.
# (b) If a Content-Signal = no, you may not collect content for the
# corresponding use.
# (c) If the website operator does not include a Content-Signal for a
# corresponding use, the website operator neither grants nor restricts
# permission via Content-Signal with respect to the corresponding use.
# The content signals and their meanings are:
# search: building a search index and providing search results (e.g., returning
# hyperlinks and short excerpts from your website's contents). Search does not
# include providing AI-generated search summaries.
# ai-input: inputting content into one or more AI models (e.g., retrieval
# augmented generation, grounding, or other real-time taking of content for
# generative AI search answers).
# ai-train: training or fine-tuning AI models.
# use: how AI systems may consume the content (immediate, reference, or full).
# ANY RESTRICTIONS EXPRESSED VIA CONTENT SIGNALS ARE EXPRESS RESERVATIONS OF
# RIGHTS UNDER ARTICLE 4 OF THE EUROPEAN UNION DIRECTIVE 2019/790 ON COPYRIGHT
# AND RELATED RIGHTS IN THE DIGITAL SINGLE MARKET.
# BEGIN Cloudflare Managed content
User-agent: *
Content-Signal: search=yes,ai-train=no,use=reference
Allow: /
User-agent: Amazonbot
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: CloudflareBrowserRenderingCrawler
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: GPTBot
Disallow: /
User-agent: meta-externalagent
Disallow: /
# END Cloudflare Managed Content
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Liam Cottle">
<title>MeshCore - Official Site</title>
<!-- icon -->
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<!-- seo -->
<meta property="og:type" content="website"/>
<meta property="og:title" content="MeshCore - Official Site">
<meta property="og:description" content="Off-Grid, Encrypted, Mesh Communications">
<meta property="og:image" content="/assets/images/icon.png"/>
<meta property="og:image:alt" content="Logo"/>
<meta property="og:url" content="https://meshcore.io">
<meta property="og:site_name" content="MeshCore - Official Site">
<meta name="description" content="Off-Grid, Encrypted, Mesh Communications">
<link rel="canonical" href="https://meshcore.io">
<!-- social accounts -->
<link rel="me" href="https://mastodon.social/@meshcore"/>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" rel="stylesheet">
<link href="assets/css/style.css" rel="stylesheet">
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-JRW3QH54CP"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-JRW3QH54CP');
</script>
</head>
<body>
<!-- background -->
<canvas id="mesh-canvas"></canvas>
<!-- overlay when sidebar shown -->
<div id="sidebar-overlay" class="fixed inset-0 z-[90] bg-black/50 hidden transition-opacity duration-200"></div>
<!-- navigation -->
<nav class="sticky top-0 z-50 glass-nav px-6 py-4">
<div class="max-w-7xl mx-auto flex justify-between items-center">
<!-- logo and menu button -->
<div class="flex items-center gap-4">
<button id="mobile-menu-toggle" class="md:hidden text-white text-xl">
<i class="fas fa-bars"></i>
</button>
<a href="/">
<img src="assets/images/meshcore.svg" alt="MeshCore" class="w-auto h-5">
</a>
</div>
<!-- links -->
<div class="hidden md:flex space-x-8 text-xs font-medium uppercase tracking-widest text-gray-400">
<a href="https://meshcore.io" class="hover:text-white transition">Home</a>
<a href="https://blog.meshcore.io" class="hover:text-white transition">Blog</a>
<a href="https://docs.meshcore.io" target="_blank" class="hover:text-white transition">Docs</a>
<a href="https://meshcore.io/flasher" class="hover:text-white transition">Flasher</a>
<a href="https://map.meshcore.io" target="_blank" class="hover:text-white transition">Map</a>
<a href="https://merch.meshcore.io" target="_blank" class="hover:text-white transition">Merch</a>
</div>
<!-- launch app -->
<a href="https://app.meshcore.nz" target="_blank" class="btn-white px-3 py-1 sm:px-4 sm:py-2 rounded-full font-bold text-xs uppercase tracking-wide flex items-center justify-center gap-3">
<i class="fas fa-external-link text-gray-800 text-lg"></i>
<span class="hidden sm:inline">Launch App</span>
<span class="inline sm:hidden">App</span>
</a>
</div>
</nav>
<!-- announcement banner -->
<div id="announcement-banner" class="relative isolate flex items-center gap-x-6 overflow-hidden bg-gray-50 px-6 py-2.5 sm:px-3.5 sm:before:flex-1 dark:bg-gray-800/50 dark:after:pointer-events-none dark:after:absolute dark:after:inset-x-0 dark:after:bottom-0 dark:after:h-px dark:after:bg-white/10">
<div aria-hidden="true" class="absolute left-[max(-7rem,calc(50%-52rem))] top-1/2 -z-10 -translate-y-1/2 transform-gpu blur-2xl">
<div style="clip-path: polygon(74.8% 41.9%, 97.2% 73.2%, 100% 34.9%, 92.5% 0.4%, 87.5% 0%, 75% 28.6%, 58.5% 54.6%, 50.1% 56.8%, 46.9% 44%, 48.3% 17.4%, 24.7% 53.9%, 0% 27.9%, 11.9% 74.2%, 24.9% 54.1%, 68.6% 100%, 74.8% 41.9%)" class="aspect-[577/310] w-[36.0625rem] bg-gradient-to-r from-[#ff80b5] to-[#9089fc] opacity-30 dark:opacity-40"></div>
</div>
<div aria-hidden="true" class="absolute left-[max(45rem,calc(50%+8rem))] top-1/2 -z-10 -translate-y-1/2 transform-gpu blur-2xl">
<div style="clip-path: polygon(74.8% 41.9%, 97.2% 73.2%, 100% 34.9%, 92.5% 0.4%, 87.5% 0%, 75% 28.6%, 58.5% 54.6%, 50.1% 56.8%, 46.9% 44%, 48.3% 17.4%, 24.7% 53.9%, 0% 27.9%, 11.9% 74.2%, 24.9% 54.1%, 68.6% 100%, 74.8% 41.9%)" class="aspect-[577/310] w-[36.0625rem] bg-gradient-to-r from-[#ff80b5] to-[#9089fc] opacity-30 dark:opacity-40"></div>
</div>
<div class="flex flex-wrap items-center gap-x-4 gap-y-2">
<p class="text-sm/6 text-gray-900 dark:text-gray-100">
<span class="font-semibold">MeshCore Merch</span>
<span> • 30% OFF • LIMITED TIME SALE</span>
</p>
<a target="_blank" href="https://merch.meshcore.io" class="flex-none rounded-full bg-gray-900 px-3.5 py-1 text-sm font-semibold text-white shadow-sm hover:bg-gray-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-900 dark:bg-white/10 dark:ring-white/20 dark:hover:bg-white/15 dark:focus-visible:outline-white">
Shop Now <span aria-hidden="true">→</span>
</a>
</div>
<div class="flex flex-1 justify-end">
<button onclick="dismissAnnouncement()" type="button" class="-m-3 p-3 focus-visible:-outline-offset-4">
<span class="sr-only">Dismiss</span>
<svg viewBox="0 0 20 20" fill="currentColor" data-slot="icon" aria-hidden="true" class="size-5 text-gray-900 dark:text-gray-100">
<path d="M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z" />
</svg>
</button>
</div>
</div>
<div id="mobile-sidebar" class="fixed top-0 left-0 w-64 h-full bg-sidebar z-[100] transform -translate-x-full transition-transform duration-300 ease-in-out border-r border-gray-800 flex flex-col overflow-y-auto">
<!-- logo and close button -->
<div class="flex items-center gap-4 px-4 py-5 border-b border-gray-800">
<!-- close button -->
<button id="close-menu-btn" class="text-gray-400 hover:text-white text-xl">
<i class="fas fa-angles-left"></i>
</button>
<!-- logo -->
<img src="assets/images/meshcore.svg" alt="MeshCore" class="h-5">
</div>
<!-- links -->
<div class="flex flex-col space-y-6 text-sm font-medium uppercase tracking-widest text-gray-400 flex-grow p-6">
<a href="https://meshcore.io" class="hover:text-white transition">Home</a>
<a href="https://blog.meshcore.io" class="hover:text-white transition">Blog</a>
<a href="https://docs.meshcore.io" target="_blank" class="hover:text-white transition">Docs</a>
<a href="https://meshcore.io/flasher" class="hover:text-white transition">Flasher</a>
<a href="https://map.meshcore.io" target="_blank" class="hover:text-white transition">Map</a>
<a href="https://merch.meshcore.io" target="_blank" class="hover:text-white transition">Merch</a>
</div>
<!-- sidebar footer -->
<div class="mt-8 border-t border-gray-800 px-6 py-5 text-center">
<div class="text-[10px] text-gray-500 font-extrabold uppercase tracking-widest leading-loose mb-4">
<div>🇳🇿 App made in New Zealand</div>
<div>🇦🇺 Firmware made in Australia</div>
</div>
<div class="flex gap-4 justify-center text-gray-500 text-2xl">
<a href="https://facebook.com/groups/meshcore" target="_blank" class="hover:text-white transition"><i class="fab fa-facebook"></i></a>
<a href="https://reddit.com/r/meshcore" target="_blank" class="hover:text-white transition"><i class="fab fa-reddit"></i></a>
<a href="https://meshcore.gg" target="_blank" class="hover:text-white transition"><i class="fab fa-discord"></i></a>
<a href="https://mastodon.social/@meshcore" target="_blank" class="hover:text-white transition"><i class="fab fa-mastodon"></i></a>
<a href="https://x.com/mesh_core" target="_blank" class="hover:text-white transition"><i class="fab fa-x-twitter"></i></a>
</div>
</div>
</div>
<header class="max-w-7xl mx-auto px-6 pt-24 text-center">
<div class="text-5xl md:text-7xl font-semibold mb-6 tracking-tight text-white">
<div>Off-Grid, Open-Source<span class="inline md:hidden">, Encrypted Messaging</span></div>
<div class="hidden md:flex">
<div class="mx-auto italic text-white lg:bg-blue-500/25 font-bold rounded-md">Encrypted Messaging</div>
</div>
</div>
<div class="text-lg text-gray-400 max-w-3xl mx-auto mb-10 leading-relaxed">
<div>MeshCore is a simple, secure, off-grid mesh communications system.</div>
<div>Build your own low-cost, long-range, encrypted messaging network.</div>
<div>You can still send messages even when WiFi, Cellular, and Starlink are down.</div>
</div>
<div class="flex flex-col md:flex-row justify-center items-center gap-4 mb-12">
<a href="https://github.com/meshcore-dev/meshcore" target="_blank"
class="btn-white w-full md:w-auto h-14 px-8 rounded-lg font-bold text-xs uppercase tracking-widest flex items-center justify-center gap-3">
<i class="fab fa-github text-gray-800 text-lg"></i> View on GitHub
</a>
<a href="https://meshcore.gg" target="_blank"
class="bg-[#5865F2] hover:bg-[#4752C4] w-full md:w-auto h-14 px-8 rounded-lg font-bold text-xs uppercase tracking-widest flex items-center justify-center gap-3 transition duration-200 text-white">
<i class="fab fa-discord text-xl"></i> Join Our Discord
</a>
<a href="https://reddit.com/r/meshcore" target="_blank"
class="bg-[#FF5700] hover:bg-[#FF4500] w-full md:w-auto h-14 px-8 rounded-lg font-bold text-xs uppercase tracking-widest flex items-center justify-center gap-3 transition duration-200 text-white">
<i class="fab fa-reddit-alien text-xl"></i> Join Our Reddit
</a>
</div>
</header>
<!-- main content -->
<main class="max-w-7xl mx-auto px-6 pb-24">
<div id="features" class="scroll-mt-24 pb-8 mt-12">
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
<div class="card-bg p-6 rounded-2xl shadow-xl hover:-translate-y-1">
<i class="fas fa-code-branch text-white text-3xl mb-4"></i>
<h3 class="font-bold text-lg mb-2">Open Source</h3>
<p class="text-gray-400 text-sm">MIT licensed firmware, tooling and libraries you can trust and contribute to.</p>
</div>
<div class="card-bg p-6 rounded-2xl shadow-xl hover:-translate-y-1">
<i class="fas fa-lock text-white text-3xl mb-4"></i>
<h3 class="font-bold text-lg mb-2">Encrypted Messaging</h3>
<p class="text-gray-400 text-sm">Messages are end-to-end encrypted to ensure your chats stay private.</p>
</div>
<div class="card-bg p-6 rounded-2xl shadow-xl hover:-translate-y-1">
<i class="fas fa-tower-broadcast text-white text-3xl mb-4"></i>
<h3 class="font-bold text-lg mb-2">Long Range</h3>
<p class="text-gray-400 text-sm">Uses LoRa, long range, low power radio technology for true off-grid connectivity.</p>
</div>
<div class="card-bg p-6 rounded-2xl shadow-xl hover:-translate-y-1">
<i class="fas fa-zap text-white text-3xl mb-4"></i>
<h3 class="font-bold text-lg mb-2">Low Power</h3>
<p class="text-gray-400 text-sm">Optimized power consumption allows batteries to last over a week on a single charge.</p>
</div>
<div class="card-bg p-6 rounded-2xl shadow-xl hover:-translate-y-1">
<i class="fas fa-hashtag text-white text-3xl mb-4"></i>
<h3 class="font-bold text-lg mb-2">Public Channels</h3>
<p class="text-gray-400 text-sm">Join public group channels and discuss interesting topics with the mesh community.</p>
</div>
<div class="card-bg p-6 rounded-2xl shadow-xl hover:-translate-y-1">
<i class="fas fa-key text-white text-3xl mb-4"></i>
<h3 class="font-bold text-lg mb-2">Private Channels</h3>
<p class="text-gray-400 text-sm">Create private encrypted group channels for securely talking with friends and family.</p>
</div>
<div class="card-bg p-6 rounded-2xl shadow-xl hover:-translate-y-1">
<i class="fas fa-sun text-white text-3xl mb-4"></i>
<h3 class="font-bold text-lg mb-2">Solar Powered Repeaters</h3>
<p class="text-gray-400 text-sm">Expand the range of your MeshCore network with solar powered repeaters in high locations.</p>
</div>
<div class="card-bg p-6 rounded-2xl shadow-xl hover:-translate-y-1">
<i class="fas fa-mobile-alt text-white text-3xl mb-4"></i>
<h3 class="font-bold text-lg mb-2">MeshCore App</h3>
<p class="text-gray-400 text-sm">Download our free app, available on Android, iOS, Windows, Mac, Linux and Web.</p>
</div>
</div>
</div>
<!-- how to get started -->
<div class="scroll-mt-24 py-4">
<div class="text-center mb-16">
<h2 class="text-3xl font-bold mb-2 tracking-tight uppercase">How to Get Started</h2>
<p class="text-gray-400 text-sm">Get the App, Buy a Node, Start Messaging!</p>
</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-12 relative">
<div class="hidden md:block absolute top-[22px] left-[15%] right-[15%] h-[2px] bg-gray-600"></div>
<div class="flex flex-col items-center text-center relative z-10">
<div class="step-number">1</div>
<h3 class="font-bold text-xl mb-3">Get the App</h3>
<p class="text-gray-400 text-sm max-w-xs mb-4">Install MeshCore on your phone or computer. Keep an offline copy ready to use when the internet is unavailable.</p>
<a href="#download" class="mt-auto px-6 py-2 bg-white shadow hover:bg-gray-200 text-gray-800 rounded-lg text-xs font-bold uppercase transition">Go to Downloads</a>
</div>
<div class="flex flex-col items-center text-center relative z-10">
<div class="step-number">2</div>
<h3 class="font-bold text-xl mb-3">Buy a Node</h3>
<p class="text-gray-400 text-sm max-w-xs mb-4">Pick a supported LoRa device. Each user needs a "Companion Node" to connect them to the mesh network.</p>
<a href="#hardware" class="mt-auto px-6 py-2 bg-white shadow hover:bg-gray-200 text-gray-800 rounded-lg text-xs font-bold uppercase transition">View Hardware</a>
</div>
<div class="flex flex-col items-center text-center relative z-10">
<div class="step-number">3</div>
<h3 class="font-bold text-xl mb-3">Flash & Connect</h3>
<p class="text-gray-400 text-sm max-w-xs mb-4">Use our Web Flasher to install the MeshCore firmware. Once flashed, pair your phone to the node and start chatting.</p>
<a href="https://flasher.meshcore.io" target="_blank" class="mt-auto px-6 py-2 bg-white shadow hover:bg-gray-200 text-gray-800 rounded-lg text-xs font-bold uppercase transition">Launch Flasher</a>
</div>
</div>
</div>
<!-- download app -->
<div id="download" class="scroll-mt-12 pt-12">
<div class="text-center mb-6">
<div class="flex mb-4">
<img src="assets/images/app_icon.png" class="mx-auto rounded-xl size-28 shadow border border-gray-600"/>
</div>
<h2 class="text-3xl font-bold mb-2">Download the MeshCore App</h2>
<p class="text-gray-500">Available on all major mobile and desktop platforms.</p>
</div>
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 max-w-5xl mx-auto">
<!-- android -->
<a href="https://play.google.com/store/apps/details?id=com.liamcottle.meshcore.android" class="btn-platform">
<i class="fab fa-google-play text-2xl"></i>
<div class="flex flex-col">
<span class="text-[10px] uppercase font-bold text-gray-400 leading-tight">Get it On</span>
<span class="text-lg font-bold leading-tight">Google Play</span>
</div>
</a>
<!-- ios -->
<a href="https://apps.apple.com/nz/app/meshcore/id6742354151" class="btn-platform">
<i class="fab fa-apple text-2xl"></i>
<div class="flex flex-col">
<span class="text-[10px] uppercase font-bold text-gray-400 leading-tight">Get it On</span>
<span class="text-lg font-bold leading-tight">App Store</span>
</div>
</a>
<!-- web -->
<a href="https://app.meshcore.nz" target="_blank" class="btn-platform">
<i class="fas fa-external-link text-2xl"></i>
<div class="flex flex-col">
<span class="text-[10px] uppercase font-bold text-gray-400 leading-tight">Open the</span>
<span class="text-lg font-bold leading-tight">Web App</span>
</div>
</a>
<!-- windows -->
<a href="https://files.liamcottle.net/MeshCore/v1.47.0/" class="btn-platform">
<i class="fab fa-windows text-2xl"></i>
<div class="flex flex-col">
<span class="text-[10px] uppercase font-bold text-gray-400 leading-tight">Download .exe</span>
<span class="text-lg font-bold leading-tight">Windows</span>
</div>
</a>
<!-- macos -->
<a href="https://files.liamcottle.net/MeshCore/v1.47.0/" class="btn-platform">
<i class="fab fa-apple text-2xl"></i>
<div class="flex flex-col">
<span class="text-[10px] uppercase font-bold text-gray-400 leading-tight">Download .app</span>
<span class="text-lg font-bold leading-tight">macOS</span>
</div>
</a>
<!-- linux -->
<a href="https://files.liamcottle.net/MeshCore/v1.47.0/" class="btn-platform">
<i class="fas fa-download text-2xl"></i>
<div class="flex flex-col">
<span class="text-[10px] uppercase font-bold text-gray-400 leading-tight">View All</span>
<span class="text-lg font-bold leading-tight">Offline Installers</span>
</div>
</a>
</div>
</div>
<!-- app screenshots -->
<div class="mt-12">
<div class="text-center">
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
<img src="assets/images/screenshots/1.png" class="app-screenshot bg-gray-800">
<img src="assets/images/screenshots/2.png" class="app-screenshot bg-gray-800">
<img src="assets/images/screenshots/3.png" class="app-screenshot bg-gray-800">
<img src="assets/images/screenshots/4.png" class="app-screenshot bg-gray-800">
</div>
</div>
</div>
<!-- guides -->
<div class="scroll-mt-12 pt-12">
<h2 class="text-3xl font-bold tracking-tight">User Guides</h2>
<p class="text-gray-400 mb-4 font-medium">Looking for a quick start guide?</p>
<div class="flex-col sm:flex sm:flex-row sm:mx-auto space-y-2 sm:space-y-0 space-x-0 sm:space-x-2">
<a href="https://files.liamcottle.net/MeshCore/Documentation/MeshCore_Quick_Start_Guide.pdf" target="_blank"
class="btn-white w-full sm:w-auto px-6 py-2 rounded-lg font-bold text-xs uppercase tracking-widest flex items-center justify-center gap-3">
<i class="fas fa-file-pdf text-red-500 text-lg"></i> App Quick Start Guide
</a>
<a href="https://files.liamcottle.net/MeshCore/Documentation/Ripple/" target="_blank"
class="btn-white w-full sm:w-auto px-6 py-2 rounded-lg font-bold text-xs uppercase tracking-widest flex items-center justify-center gap-3">
<i class="fas fa-folder-open text-yellow-500 text-lg"></i> Ripple User Guides
</a>
</div>
</div>
<!-- companions -->
<div id="hardware" class="scroll-mt-12 pt-12">
<h2 class="text-3xl font-bold tracking-tight">Companion Nodes</h2>
<p class="text-gray-400 mb-4 font-medium">Connect to the MeshCore App to send and receive messages</p>
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
<!-- wio tracker l1 pro -->
<div class="card-bg p-6 rounded-3xl flex flex-col bg-white text-center shadow-xl">
<img src="assets/images/devices/WIO_TRACKER_L1_PRO.png" class="w-full h-40 object-contain mb-6">
<h3 class="text-gray-900 font-bold text-lg">Wio Tracker L1 Pro</h3>
<img src="assets/images/brands/seeed_studio.png" class="h-6 mx-auto mb-6">
<div class="space-y-2 mt-auto">
<a href="https://www.seeedstudio.com/Wio-Tracker-L1-Pro-for-Meshcore-p-6717.html?sensecap_affiliate=lLZqP0c&referring_service=meshcore.io" class="block py-3 bg-gray-900 hover:bg-black rounded-xl text-[10px] font-bold uppercase transition text-white shadow">
Buy from SeeedStudio
</a>
<a href="https://s.click.aliexpress.com/e/_c4K81i4D" class="block py-3 hover:bg-gray-100 border border-gray-900 rounded-xl text-[10px] font-bold uppercase transition text-gray-900">
Buy from AliExpress
</a>
<a href="https://flasher.meshcore.io/seeed-studio-wio-tracker-l1-pro/" class="inline-flex items-center justify-center gap-2 w-full py-1 text-blue-600 hover:text-blue-700 text-[11px] font-extrabold uppercase tracking-wider transition">
<i class="fas fa-zap text-sm"></i> Flash Firmware
</a>
</div>
</div>
<!-- think node m1 -->
<div class="card-bg p-6 rounded-3xl flex flex-col bg-white text-center shadow-xl">
<img src="assets/images/devices/THINKNODE_M1.png" class="w-full h-40 object-contain mb-6">
<h3 class="text-gray-900 font-bold text-lg">ThinkNode M1</h3>
<img src="assets/images/brands/elecrow.png" class="h-6 mx-auto mb-6">
<div class="space-y-2 mt-auto">
<a href="https://tidd.ly/3ROOXxM" class="block py-3 bg-gray-900 hover:bg-black rounded-xl text-[10px] font-bold uppercase transition text-white shadow">
Buy from Elecrow
</a>
<a href="https://s.click.aliexpress.com/e/_c2JERZBT" class="block py-3 hover:bg-gray-100 border border-gray-900 rounded-xl text-[10px] font-bold uppercase transition text-gray-900">
Buy from AliExpress
</a>
<a href="https://flasher.meshcore.io/elecrow-thinknode-m1/" class="inline-flex items-center justify-center gap-2 w-full py-1 text-blue-600 hover:text-blue-700 text-[11px] font-extrabold uppercase tracking-wider transition">
<i class="fas fa-zap text-sm"></i> Flash Firmware
</a>
</div>
</div>
<!-- heltec v3 -->
<div class="card-bg p-6 rounded-3xl flex flex-col bg-white text-center shadow-xl">
<img src="assets/images/devices/HELTEC_V3.png" class="w-full h-40 object-contain mb-6">
<h3 class="text-gray-900 font-bold text-lg">Heltec v3</h3>
<img src="assets/images/brands/heltec.png" class="h-6 mx-auto mb-6">
<div class="space-y-2 mt-auto">
<a href="https://heltec.org/project/wifi-lora-32-v3/" class="block py-3 bg-gray-900 hover:bg-black rounded-xl text-[10px] font-bold uppercase transition text-white shadow">
Buy from Heltec Automation
</a>
<a href="https://www.aliexpress.com/item/1005005443005152.html" class="block py-3 hover:bg-gray-100 border border-gray-900 rounded-xl text-[10px] font-bold uppercase transition text-gray-900">
Buy from AliExpress
</a>
<a href="https://flasher.meshcore.io/heltec-v3/" class="inline-flex items-center justify-center gap-2 w-full py-1 text-blue-600 hover:text-blue-700 text-[11px] font-extrabold uppercase tracking-wider transition">
<i class="fas fa-zap text-sm"></i> Flash Firmware
</a>
</div>
</div>
<!-- rak wismesh pocket -->
<div class="card-bg p-6 rounded-3xl flex flex-col bg-white text-center shadow-xl">
<img src="assets/images/devices/rak_wismesh_pocket.png" class="w-full h-40 object-contain mb-6">
<h3 class="text-gray-900 font-bold text-lg">WisMesh Pocket</h3>
<img src="assets/images/brands/rak_wireless.png" class="h-6 mx-auto mb-6">
<div class="space-y-2 mt-auto">
<a href="https://store.rakwireless.com/products/wismesh-pocket?ref=meshcore" class="block py-3 bg-gray-900 hover:bg-black rounded-xl text-[10px] font-bold transition text-white shadow">
BUY FROM RAKwireless
</a>
<a href="https://s.click.aliexpress.com/e/_c3cffcHn" class="block py-3 hover:bg-gray-100 border border-gray-900 rounded-xl text-[10px] font-bold uppercase transition text-gray-900">
Buy from AliExpress
</a>
<a href="https://flasher.meshcore.io/rak-wisblock-wismesh-rak-4631/" class="inline-flex items-center justify-center gap-2 w-full py-1 text-blue-600 hover:text-blue-700 text-[11px] font-extrabold uppercase tracking-wider transition">
<i class="fas fa-zap text-sm"></i> Flash Firmware
</a>
</div>
</div>
<!-- rak wismesh tag -->
<div class="card-bg p-6 rounded-3xl flex flex-col bg-white text-center shadow-xl">
<img src="assets/images/devices/rak_wismesh_tag.png" class="w-full h-40 object-contain mb-6">
<h3 class="text-gray-900 font-bold text-lg">WisMesh Tag</h3>
<img src="assets/images/brands/rak_wireless.png" class="h-6 mx-auto mb-6">
<div class="space-y-2 mt-auto">
<a href="https://store.rakwireless.com/products/wismesh-tag-meshtastic-gps-lora-tracker-ip66?ref=meshcore" class="block py-3 bg-gray-900 hover:bg-black rounded-xl text-[10px] font-bold transition text-white shadow">
BUY FROM RAKwireless
</a>
<a href="https://s.click.aliexpress.com/e/_c4C4rI3t" class="block py-3 hover:bg-gray-100 border border-gray-900 rounded-xl text-[10px] font-bold uppercase transition text-gray-900">
Buy from AliExpress
</a>
<a href="https://flasher.meshcore.io/rak-wismesh-tag/" class="inline-flex items-center justify-center gap-2 w-full py-1 text-blue-600 hover:text-blue-700 text-[11px] font-extrabold uppercase tracking-wider transition">
<i class="fas fa-zap text-sm"></i> Flash Firmware
</a>
</div>
</div>
</div>
</div>
<!-- repeaters -->
<div id="repeaters" class="mt-12">
<h2 class="text-3xl font-bold tracking-tight">Repeater Nodes</h2>
<p class="text-gray-400 mb-4 font-medium">Expand the range of your MeshCore network by placing a repeater in a high location</p>
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
<!-- sensecap solar node p1 pro -->
<div class="card-bg p-6 rounded-3xl flex flex-col bg-white text-center shadow-xl">
<img src="assets/images/devices/SOLAR_NODE_P1_PRO.png" class="w-full h-40 object-contain mb-6">
<h3 class="text-gray-800 font-bold text-lg">SenseCAP Solar Node P1 Pro</h3>
<img src="assets/images/brands/seeed_studio.png" class="h-6 mx-auto mb-6">
<div class="space-y-2 mt-auto">
<a href="https://www.seeedstudio.com/SenseCAP-Solar-Node-P1-Pro-for-Meshcore-p-6741.html?sensecap_affiliate=lLZqP0c&referring_service=meshcore.io" class="block py-3 bg-gray-900 hover:bg-black rounded-xl text-[10px] font-bold uppercase transition text-white shadow">
Buy from SeeedStudio
</a>
<a href="https://s.click.aliexpress.com/e/_c3hb71vB" class="block py-3 hover:bg-gray-100 border border-gray-900 rounded-xl text-[10px] font-bold uppercase transition text-gray-900">
Buy from AliExpress
</a>
<a href="https://flasher.meshcore.io/seeed-studio-sensecap-solar/" class="inline-flex items-center justify-center gap-2 w-full py-1 text-blue-600 hover:text-blue-700 text-[11px] font-extrabold uppercase tracking-wider transition">
<i class="fas fa-zap text-sm"></i> Flash Firmware
</a>
</div>
</div>
</div>
</div>
<!-- standalone devices -->
<div id="standalone" class="scroll-mt-12 pt-12">
<h2 class="text-3xl font-bold tracking-tight">Standalone Nodes</h2>
<p class="text-gray-400 mb-4 font-medium">Powered by Ripple Firmware. No phone required!</p>
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
<!-- lilygo t-deck plus -->
<div class="card-bg p-6 rounded-3xl flex flex-col bg-white text-center shadow-xl">
<img src="assets/images/devices/lilygo_tdeck_plus.png" class="w-full h-40 object-contain mb-6">
<h3 class="text-gray-900 font-bold text-lg">T-Deck Plus</h3>
<img src="assets/images/brands/lilygo.png" class="h-6 mx-auto mb-6">
<div class="space-y-2 mt-auto">
<a href="https://www.lilygo.cc/ix40vk" class="block py-3 bg-gray-900 hover:bg-black rounded-xl text-[10px] font-bold uppercase transition text-white shadow">
Buy from LilyGO
</a>
<a href="https://s.click.aliexpress.com/e/_c3QNoVB9" class="block py-3 hover:bg-gray-100 border border-gray-900 rounded-xl text-[10px] font-bold uppercase transition text-gray-900">
Buy from AliExpress
</a>
<a href="https://flasher.meshcore.io/lilygo-t-deck/" class="inline-flex items-center justify-center gap-2 w-full py-1 text-blue-600 hover:text-blue-700 text-[11px] font-extrabold uppercase tracking-wider transition">
<i class="fas fa-zap text-sm"></i> Flash Firmware
</a>
</div>
</div>
<!-- lilygo t-deck pro -->
<div class="card-bg p-6 rounded-3xl flex flex-col bg-white text-center shadow-xl">
<img src="assets/images/devices/lilygo_tdeck_pro.png" class="w-full h-40 object-contain mb-6">
<h3 class="text-gray-900 font-bold text-lg">T-Deck Pro</h3>
<img src="assets/images/brands/lilygo.png" class="h-6 mx-auto mb-6">
<div class="space-y-2 mt-auto">
<a href="https://www.lilygo.cc/skguuf" class="block py-3 bg-gray-900 hover:bg-black rounded-xl text-[10px] font-bold uppercase transition text-white shadow">
Buy from LilyGO
</a>
<a href="https://s.click.aliexpress.com/e/_c35PVCCF" class="block py-3 hover:bg-gray-100 border border-gray-900 rounded-xl text-[10px] font-bold uppercase transition text-gray-900">
Buy from AliExpress
</a>
<a href="https://flasher.meshcore.io/lilygo-t-deck-pro/" class="inline-flex items-center justify-center gap-2 w-full py-1 text-blue-600 hover:text-blue-700 text-[11px] font-extrabold uppercase tracking-wider transition">
<i class="fas fa-zap text-sm"></i> Flash Firmware
</a>
</div>
</div>
<!-- lilygo t-pager -->
<div class="card-bg p-6 rounded-3xl flex flex-col bg-white text-center shadow-xl">
<img src="assets/images/devices/lilygo_tlora_pager.png" class="w-full h-40 object-contain mb-6">
<h3 class="text-gray-900 font-bold text-lg">T-LoRa Pager</h3>
<img src="assets/images/brands/lilygo.png" class="h-6 mx-auto mb-6">
<div class="space-y-2 mt-auto">
<a href="https://www.lilygo.cc/w4petm" class="block py-3 bg-gray-900 hover:bg-black rounded-xl text-[10px] font-bold uppercase transition text-white shadow">
Buy from LilyGO
</a>
<a href="https://s.click.aliexpress.com/e/_c2yPwfl1" class="block py-3 hover:bg-gray-100 border border-gray-900 rounded-xl text-[10px] font-bold uppercase transition text-gray-900">
Buy from AliExpress
</a>
<a href="https://flasher.meshcore.io/lilygo-t-lora-pager/" class="inline-flex items-center justify-center gap-2 w-full py-1 text-blue-600 hover:text-blue-700 text-[11px] font-extrabold uppercase tracking-wider transition">
<i class="fas fa-zap text-sm"></i> Flash Firmware
</a>
</div>
</div>
<!-- lilygo t-watch s3 plus -->
<div class="card-bg p-6 rounded-3xl flex flex-col bg-white text-center shadow-xl">
<img src="assets/images/devices/lilygo_twatch_s3_plus.png" class="w-full h-40 object-contain mb-6">
<h3 class="text-gray-900 font-bold text-lg">T-Watch S3 Plus</h3>
<img src="assets/images/brands/lilygo.png" class="h-6 mx-auto mb-6">
<div class="space-y-2 mt-auto">
<a href="https://www.lilygo.cc/ppud9p" class="block py-3 bg-gray-900 hover:bg-black rounded-xl text-[10px] font-bold uppercase transition text-white shadow">
Buy from LilyGO
</a>
<a href="https://s.click.aliexpress.com/e/_c3kNi0vr" class="block py-3 hover:bg-gray-100 border border-gray-900 rounded-xl text-[10px] font-bold uppercase transition text-gray-900">
Buy from AliExpress
</a>
<a href="https://flasher.meshcore.io/lilygo-t-watch-s3-plus/" class="inline-flex items-center justify-center gap-2 w-full py-1 text-blue-600 hover:text-blue-700 text-[11px] font-extrabold uppercase tracking-wider transition">
<i class="fas fa-zap text-sm"></i> Flash Firmware
</a>
</div>
</div>
</div>
</div>
<!-- videos -->
<div id="videos" class="border-t border-gray-800 pt-12 mt-12">
<div class="text-center mb-6">
<h2 class="text-3xl font-bold mb-2">Watch the Explainer Videos!</h2>
<p class="text-gray-300">By The Comms Channel and Liam Cottle</p>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<!-- what is meshcore -->
<div class="flex">
<div class="mx-auto">
<iframe width="560" height="315" style="max-width:100%;" src="https://www.youtube.com/embed/iaFltojJrAc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>
</div>
<!-- meshcore devices -->
<div class="flex">
<div class="mx-auto">
<iframe width="560" height="315" style="max-width:100%;" src="https://www.youtube.com/embed/DNNcvm4RHSk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>
</div>
<!-- flashing firmware -->
<div class="flex">
<div class="mx-auto">
<iframe width="560" height="315" style="max-width:100%;" src="https://www.youtube.com/embed/ems9_XvdPX8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>
</div>
<!-- pairing and setup -->
<div class="flex">
<div class="mx-auto">
<iframe width="560" height="315" style="max-width:100%;" src="https://www.youtube.com/embed/PeThXmxLE4k" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>
</div>
<!-- meshcore channels -->
<div class="flex">
<div class="mx-auto">
<iframe width="560" height="315" style="max-width:100%;" src="https://www.youtube.com/embed/P1ICskazOzw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>
</div>
<!-- standalone devices -->
<div class="flex">
<div class="mx-auto">
<iframe width="560" height="315" style="max-width:100%;" src="https://www.youtube.com/embed/LC_R0vYFMKQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>
</div>
<!-- repeater flashing and config -->
<div class="flex">
<div class="mx-auto">
<iframe width="560" height="315" style="max-width:100%;" src="https://www.youtube.com/embed/axMCA7GTvt0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>
</div>
<!-- technical presentation -->
<div class="flex">
<div class="mx-auto">
<iframe width="560" height="315" style="max-width:100%;" src="https://www.youtube.com/embed/OwmkVkZQTf4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>
</div>
</div>
</div>
</main>
<!-- footer -->
<footer class="bg-gray-950 py-8 px-6 border-t border-gray-900">
<div class="max-w-7xl mx-auto flex flex-col md:flex-row justify-between items-center gap-8">
<div class="text-center md:text-left">
<img src="assets/images/meshcore.svg" alt="MeshCore" class="h-5 mb-4 mx-auto md:mx-0 opacity-75">
<div class="text-[11px] text-gray-500 font-extrabold uppercase tracking-widest leading-loose">
<div>🇳🇿 App made in New Zealand</div>
<div>🇦🇺 Firmware made in Australia</div>
</div>
</div>
<div class="flex flex-col">
<div class="flex gap-8 text-gray-500 text-sm font-semibold uppercase tracking-tighter">
<a href="https://meshcore.io" class="hover:text-white transition">Home</a>
<a href="https://blog.meshcore.io" class="hover:text-white transition">Blog</a>
<a href="https://docs.meshcore.io" target="_blank" class="hover:text-white transition">Docs</a>
<a href="https://meshcore.io/flasher" class="hover:text-white transition">Flasher</a>
<a href="https://map.meshcore.io" target="_blank" class="hover:text-white transition">Map</a>
<a href="https://merch.meshcore.io" target="_blank" class="hover:text-white transition">Merch</a>
</div>
<div class="mt-4 mx-auto flex gap-4 text-gray-500 text-2xl">
<a href="https://facebook.com/groups/meshcore" target="_blank" class="hover:text-white transition">
<i class="fab fa-facebook text-2xl"></i>
</a>
<a href="https://reddit.com/r/meshcore" target="_blank" class="hover:text-white transition">
<i class="fab fa-reddit text-2xl"></i>
</a>
<a href="https://meshcore.gg" target="_blank" class="hover:text-white transition">
<i class="fab fa-discord text-2xl"></i>
</a>
<a href="https://mastodon.social/@meshcore" target="_blank" class="hover:text-white transition">
<i class="fab fa-mastodon text-2xl"></i>
</a>
<a href="https://x.com/mesh_core" target="_blank" class="hover:text-white transition">
<i class="fab fa-x-twitter text-2xl"></i>
</a>
</div>
</div>
<p class="text-[11px] text-gray-500 font-extrabold">© 2026 Liam Cottle & Scott Powell</p>
</div>
</footer>
<script>
const announcementBannerElement = document.getElementById("announcement-banner");
function getAnnouncementId() {
return "1"; // change this when making a new announcement
}
function shouldShowAnnouncement() {
const lastSeenAnnouncementId = localStorage.getItem("last-seen-announcement-id");
return lastSeenAnnouncementId?.toString() !== this.getAnnouncementId();
}
function dismissAnnouncement() {
announcementBannerElement.classList.add("hidden");
localStorage.setItem("last-seen-announcement-id", this.getAnnouncementId());
}
if(!shouldShowAnnouncement()){
dismissAnnouncement();
}
</script>
<script>
// find elements
const menuToggle = document.getElementById("mobile-menu-toggle");
const closeBtn = document.getElementById("close-menu-btn");
const sidebar = document.getElementById("mobile-sidebar");
const overlay = document.getElementById("sidebar-overlay");
function openSidebar() {
sidebar.classList.remove("-translate-x-full");
overlay.classList.remove("hidden");
}
function closeSidebar() {
sidebar.classList.add("-translate-x-full");
overlay.classList.add("hidden");
}
// click events
menuToggle.addEventListener("click", openSidebar);
closeBtn.addEventListener("click", closeSidebar);
overlay.addEventListener("click", closeSidebar);
// close sidebar when clicking outside
document.addEventListener("click", (event) => {
const isClickOnToggle = menuToggle.contains(event.target);
const isClickInsideSidebar = sidebar.contains(event.target);
if(!isClickInsideSidebar && !isClickOnToggle && !sidebar.classList.contains("-translate-x-full")){
closeSidebar();
}
});
const canvas = document.getElementById('mesh-canvas');
const ctx = canvas.getContext('2d');
let particles = [];
let resizeTimeout;
function init() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
particles = [];
const particleCount = Math.floor((canvas.width * canvas.height) / 15000);
for(let i = 0; i < particleCount; i++){
particles.push({
x: Math.random() * canvas.width,
y: Math.random() * canvas.height,
vx: (Math.random() - 0.5) * 0.5,
vy: (Math.random() - 0.5) * 0.5,
size: 2
});
}
}
function animate() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
for(let i = 0; i < particles.length; i++){
let p = particles[i];
p.x += p.vx;
p.y += p.vy;
if (p.x < 0 || p.x > canvas.width) p.vx *= -1;
if (p.y < 0 || p.y > canvas.height) p.vy *= -1;
ctx.fillStyle = 'rgba(255, 255, 255, 0.5)';
ctx.beginPath();
ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2);
ctx.fill();
for(let j = i + 1; j < particles.length; j++){
let p2 = particles[j];
let dist = Math.hypot(p.x - p2.x, p.y - p2.y);
if(dist < 150){
ctx.strokeStyle = `rgba(255, 255, 255, ${0.2 * (1 - dist / 150)})`;
ctx.lineWidth = 0.8;
ctx.beginPath();
ctx.moveTo(p.x, p.y);
ctx.lineTo(p2.x, p2.y);
ctx.stroke();
}
}
}
requestAnimationFrame(animate);
}
// re-init mesh canvas on window resize with debounce
window.addEventListener("resize", () => {
clearTimeout(resizeTimeout);
resizeTimeout = setTimeout(init, 100);
});
init();
animate();
</script>
<!-- Cloudflare Pages Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "f50e8ce8dcc249dfb48e2a441710f50c"}'></script><!-- Cloudflare Pages Analytics --></body>
</html>
Sitemap
Кол-во: 0
XML-карта сайта для поисковиков
?
Sitemap.xml помогает поисковику быстрее находить и индексировать страницы. Особенно важен для крупных сайтов и новых страниц, на которые ещё нет входящих ссылок.
Robots.txt не содержит ссылку на карту сайта. Рекомендуется добавить карту сайта и указать ссылку на нее в robots.txt.
Внутренние ссылки
Кол-во: 2
Ссылки на другие страницы своего сайта
?
Внутренние ссылки распределяют ссылочный вес между страницами и помогают поисковику обходить сайт. Пустые анкоры и ссылки на запрещённые robots.txt страницы — типичные ошибки.
Внутренних ссылок на странице 2 оптимально.
Внутренние ссылки не запрещены к индексации в robots.txt.
На странице присутствуют изображения 1.
Показать внутренние ссылки
| Url | Анкор | Состояние |
|---|---|---|
|
Home
|
|
|
| /flasher |
Flasher
|
|
Внешние ссылки
Кол-во: 1
Ссылки на сторонние сайты
?
Исходящие внешние ссылки передают часть ссылочного веса на чужие сайты. Ссылки на авторитетные ресурсы безопасны; ссылки на мусорные сайты могут навредить репутации страницы.
Внешних ссылок на странице 1 оптимально.
На странице присутствуют ссылки на субдомены 4.
Показать внешние ссылки
| Url | Анкор |
|---|---|
| app.meshcore.nz |
<i class="fas fa-external-link text-gray-800 text-lg"></i>
<span class="hidden sm:inline">Launch App</span>
<span class="inline sm:hidden">App</span>
|
Конкуренты Готовность: 0%
Конкуренты в Яндексе
Кол-во: 0
Топ сайтов-конкурентов в Яндексе
?
Сайты, чаще всего появляющиеся в ТОПе Яндекса по запросам из семантического ядра этой страницы.
Мы не нашли у вас конкурентов в Яндексе. Сайт или очень молодой или плохо продвигается.
Конкурентов в ТОП-10 Яндекса не нашлось.
Конкуренты в Google
Кол-во: 0
Топ сайтов-конкурентов в Google
?
Сайты, чаще всего появляющиеся в ТОПе Google по запросам из семантического ядра этой страницы.
Конкуренты в Google тоже не найдены. Займитесь продвижением сайта!
Конкурентов в ТОП-10 Google не нашлось.
ЗоЗПП: права потребителей Готовность: 100%
Нарушения
Не выявлены
Признаков дистанционной продажи товаров (интернет-магазина) не обнаружено — требования ЗоЗПП о раскрытии информации продавца к сайту не применяются. Нарушений нет.
ФЗ-149: рекомендательные технологии Готовность: 100%
Нарушения
Не выявлены
Рекомендательные блоки («с этим покупают», «похожие товары» и т.п.) на сайте не обнаружены — требования ст. 10.7 ФЗ-149 к сайту не применяются. Нарушений нет.
ФЗ-38: реклама Готовность: 100%
Нарушения
Не выявлены
Рекламных тематик с обязательными оговорками (медицина, БАД, кредиты и займы, новостройки) на сайте не обнаружено. Нарушений нет.
ФЗ-436: защита детей Готовность: 100%
Нарушения
Не выявлены
Признаков информационной продукции (новости, видео, книги, игры, курсы) не обнаружено — обязательная возрастная маркировка по ФЗ-436 сайту не требуется. Нарушений нет.
Вердикт
Страница https://meshcore.io/flasher готова к продвижению на 53%. Чтобы еще улучшить страницу и попасть на первые места поисковой выдачи необходимо:
Исправьте ошибки в мета-тегах.
Исправьте ошибки оптимизации.
Поделитесь с друзьями: