TgFormat

Как перенести Markdown в Telegram

Telegram не умеет Markdown в том виде, в каком его отдают ChatGPT, Claude и Notion. Разбираем, что именно ломается и как перенести текст за один шаг.

Вставьте текст слева — справа появится готовый вариант.
Нажмите «Копировать» и вставьте в Telegram: форматирование сохранится.

Текст обрабатывается в браузере и никуда не отправляется.

Почему Telegram не сохраняет форматирование

Причин две, и они разные. Первая: Markdown — это соглашение о том, что решётка означает заголовок, а звёздочки — жирный шрифт. Само по себе это просто текст. Telegram применяет часть разметки при ручном наборе, но при вставке из буфера разбирает не её, а HTML — то, что положило туда приложение-источник.

Вторая: набор форматирования в Telegram намеренно узкий. Есть жирный, курсив, подчёркнутый, зачёркнутый, моноширинный код, скрытый текст и ссылка. Нет заголовков, нет таблиц, нет списков как структуры. Поэтому HTML из Notion, где заголовок — это тег h2, а таблица — table, при вставке теряет ровно то, для чего эти теги нужны.

Итог знаком всем: из аккуратного отчёта получается стена текста со звёздочками, а таблица превращается в кашу из символов.

Что делает конвертер

Конвертер не пытается впихнуть в мессенджер то, чего в нём нет. Он пересобирает документ под возможности Telegram — и кладёт в буфер сразу два представления: форматированное (его подхватывают Telegram Desktop, Web и мобильные приложения) и текстовое как запасной вариант.

Заголовки

Решётки убираются, строка становится жирной. Чтобы разделы не сливались в поток, к заголовку добавляется маркер: 📌 для первого уровня и ▪️ для остальных. Эмодзи отключаются переключателем, если для вашей переписки они лишние.

Таблицы

Каждая строка таблицы становится отдельной карточкой: первая ячейка — жирный заголовок, остальные — строки «Колонка: значение». Подробнее этот случай разобран в гайде про таблицы.

Списки и ссылки

Маркированные списки получают «•», нумерованные сохраняют номера, вложенность передаётся отступами. Ссылка печатается как «текст (адрес)»: подпись, за которой прячется URL, в обычное сообщение не вставляется, а терять адрес нельзя. Если текст ссылки и так равен адресу, он печатается один раз.

Код и цитаты

Блоки кода остаются в тройных обратных кавычках, инлайновый код — в одинарных: Telegram показывает и то, и другое моноширинным шрифтом. Цитаты получают префикс ❝, горизонтальная линия — «———».

Откуда обычно копируют

Из ChatGPT и Claude. Ответ нейросети — это Markdown. Если копируете мышкой из окна чата, используйте вкладку «HTML / Вставка»: в буфер попадёт HTML. Если забираете ответ через API — вкладку «Markdown».

Из Notion. Копирование мышкой даёт HTML со стилями Notion, включая таблицы и вложенные списки. Вкладка «HTML / Вставка» разбирает их корректно.

Из Google Docs. Жирный и курсив там заданы инлайновыми стилями, а не тегами. Конвертер читает и такой вариант.

Частые вопросы

Понимает ли Telegram Markdown при вставке?
Частично. При наборе вручную Telegram распознаёт **жирный**, __курсив__, ~~зачёркнутый~~ и обратные кавычки для кода. Но решётки заголовков, синтаксис таблиц и вложенные списки он не обрабатывает никогда — они останутся видимым текстом. Полноценный Markdown понимают только боты через параметр parse_mode, а не обычные сообщения.
Что такое MarkdownV2 и нужен ли он мне?
MarkdownV2 — это формат для Bot API: бот отправляет сообщение с parse_mode=MarkdownV2, и Telegram применяет разметку. В нём около двадцати служебных символов, которые нужно экранировать обратным слешем, иначе API вернёт ошибку. Если вы просто пишете сообщение руками, MarkdownV2 вам не нужен — нужен готовый текст, как его отдаёт этот конвертер.
Почему после вставки из ChatGPT остаются звёздочки?
ChatGPT отдаёт ответ в Markdown. Если скопировать его как обычный текст, звёздочки попадут в сообщение буквально, потому что Telegram парсит разметку только при ручном наборе, а не при вставке. Конвертер убирает лишнее и кладёт в буфер уже форматированный вариант.
Сохранятся ли вложенные списки?
Да, иерархия передаётся отступами. Списки любой глубины становятся маркерами «•» со сдвигом на каждый уровень, нумерованные сохраняют нумерацию. Это единственный способ показать вложенность в мессенджере, где списков как сущности не существует.