Zum Hauptinhalt springen

Kostenloses Tool

Telegram-Textformatierung, das Escaping schon erledigt

In deiner Nachricht stehen ein Preis, ein Bindestrich und ein Punkt, und die Bot API antwortet mit "can't parse entities". MarkdownV2 reserviert 18 Zeichen, und ein normaler Satz enthält meist vier oder fünf davon. Schreib die Nachricht hier, wähl fett, Spoiler oder Codeblock, und kopier die Ausgabe mit jedem dieser Zeichen bereits escaped.

Schreib deine Nachricht

Markier Text und wende einen Stil an, oder tipp die Tags selbst. Das Feld arbeitet in Telegrams HTML-Syntax, dein Entwurf ist also schon für eine der beiden Ausgaben gültig. Die Vorschau ist ein Bild der Nachricht, kein Senden-Knopf: hier verlässt nichts deinen Browser.

Zeichen 198 von 4096

Telegram zählt sichtbare Zeichen, das Markup ist also gratis. Entities und Formatierungs-Tags gehen nicht auf das Limit.

Vorschau
Release 2.4 is out.
Fixed: the CSV import dropped rows ending in a comma.
Reported by three of you on the same day.
Run npm i -g entergram@2.4 to upgrade.
The migration note is boring but mandatory.
Tipp auf einen Spoiler, um ihn aufzudecken, so wie es eine Leserin tun würde.

MarkdownV2

*Release 2\.4 is out\.*
Fixed: the CSV import dropped rows ending in a comma\.
>Reported by three of you on the same day\.
Run `npm i -g entergram@2.4` to upgrade\.
The migration note is ||boring but mandatory||\.

Mit parse_mode=MarkdownV2 senden. Jedes reservierte Zeichen im normalen Text ist escaped; innerhalb eines Code-Spans nur der Backslash und das Backtick.

HTML

<b>Release 2.4 is out.</b>
Fixed: the CSV import dropped rows ending in a comma.
<blockquote>Reported by three of you on the same day.</blockquote>
Run <code>npm i -g entergram@2.4</code> to upgrade.
The migration note is <tg-spoiler>boring but mandatory</tg-spoiler>.

Mit parse_mode=HTML senden. Weniger zu escapen, und deshalb nehmen die meisten Bibliotheken es als Standard.

Die Syntax in beiden Parse Modes

Telegram kennt drei Parse Modes. Markdown ist der alte und beherrscht vier Stile; MarkdownV2 und HTML beherrschen alle zehn. Diese Tabelle stellt MarkdownV2 und HTML nebeneinander.

StilMarkdownV2HTML
Fett*bold*<b>bold</b>
Kursiv_italic_<i>italic</i>
Unterstrichen__underline__<u>underline</u>
Durchgestrichen~strike~<s>strike</s>
Spoiler||hidden||<tg-spoiler>hidden</tg-spoiler>
Inline-Code`code`<code>code</code>
Codeblock```python code ```<pre><code class="language-python">code</code></pre>
Blockzitat>quoted line<blockquote>quoted</blockquote>
Inline-Link[text](https://example.com)<a href="https://example.com">text</a>
Custom Emoji![👍](tg://emoji?id=5368324170671202286)<tg-emoji emoji-id="5368324170671202286">👍</tg-emoji>

Unterstrichen und kursiv lassen sich in MarkdownV2 nicht einfach verschachteln, weil __ und _ an der Grenze kollidieren. Nimm HTML, wenn du beides auf demselben Textstück brauchst.

Warum MarkdownV2 deine Nachricht immer wieder ablehnt

MarkdownV2 reserviert achtzehn Zeichen, und außerhalb einer Code-Entity muss vor jedem einzelnen ein Backslash stehen, selbst dort, wo es unmöglich als Markup gelesen werden könnte. Die Liste ist _ * [ ] ( ) ~ ` > # + - = | { } . ! und, weil es das Escape-Zeichen selbst ist, der Backslash.

An zwei davon scheitern fast alle. Der Punkt beendet die meisten Sätze. Der Bindestrich steckt in Datumsangaben, Bereichen, Flags und zusammengesetzten Wörtern. Eine Release-Notiz wie "Fixed: the 2.4-rc build" hat drei reservierte Zeichen auf neun Wörter, und die API lehnt die ganze Nachricht ab, statt den Text durchzureichen.

Innerhalb einer Entity gelten andere Regeln, und das ist der zweite häufige Fehler. In einem Code-Span oder Codeblock sind nur Backslash und Backtick besonders, wer dort den Rest escaped, bekommt sichtbare Backslashes in seinen Code. In den Klammern eines Links oder eines Custom Emojis sind es nur die schließende Klammer und der Backslash. Das Tool oben wendet je Kontext die richtige Regel an, und genau das kann Suchen und Ersetzen nicht.

Wenn dich das alles nicht überzeugt, nimm HTML. Es escaped drei Zeichen, &, < und >, und es verschachtelt ohne Mehrdeutigkeiten. Der einzige Grund für MarkdownV2 ist, dass es sich in der Versionsverwaltung besser liest.

Das Limit von 4096 Zeichen zählt Text, nicht Markup

Eine Telegram-Textnachricht fasst 4096 Zeichen. Formatierung reist als Entities neben dem Text und nicht darin, also zählen die Tags, die Sternchen und die Backslashes in der Ausgabe nicht mit. Der Zähler oben zeigt die sichtbare Länge, und das ist die Zahl, die Telegram prüft.

Zwei benachbarte Limits lohnen sich, bevor du einen Sender baust. Eine Medien-Bildunterschrift fasst 1024 Zeichen, eine formatierte Nachricht, die allein locker passt, fliegt also raus, sobald du ein Bild anhängst. Eine zu lange Nachricht wird nicht gekürzt: die API gibt einen Fehler zurück und sendet nichts.

Fragen

Gilt das für Kanalbeiträge und normale Chats oder nur für Bots?

Die Syntaxtabelle gilt für alles, was über die Bot API oder eine Client-Bibliothek sendet. Wenn du selbst in Telegram tippst, hat die App ihr eigenes Formatierungsmenü und du siehst MarkdownV2 nie. Dieses Tool ist für den Fall, dass etwas anderes sendet und den Text vorformatiert braucht.

Welchen Parse Mode soll ich nehmen?

HTML, solange nichts dagegen spricht. Es escaped drei statt achtzehn Zeichen, verschachtelt vorhersehbar, und wenn es schiefgeht, siehst du meist ein sichtbares Tag statt einer abgelehnten Nachricht. MarkdownV2 liest sich in einer Quelldatei besser, und das ist das ehrliche Argument dafür.

Warum wurde meine Nachricht gesendet, aber ohne Formatierung?

Fast immer fehlt parse_mode. Ohne ihn behandelt Telegram den Text wörtlich, also tauchen Sternchen und Tags als Zeichen auf. Setz parse_mode beim Senden auf MarkdownV2 oder HTML, passend zu der Ausgabe, die du kopiert hast.

Kann ich fett in einem Link verschachteln, oder kursiv in fett?

Ja, in beiden Parse Modes, mit einer Ausnahme: unterstrichen und kursiv zusammen brauchen in MarkdownV2 einen Umweg, weil die Begrenzer kollidieren. Code-Spans und Codeblöcke vertragen in beiden Modi überhaupt keinen anderen Stil im Inneren.

Was ist die Custom-Emoji-ID und woher bekomme ich sie?

Es ist die numerische ID eines Premium-Custom-Emojis, und du liest sie aus einer Nachricht ab, die das Emoji schon enthält, nicht aus einem öffentlichen Katalog. Der Absender braucht Telegram Premium oder muss ein Bot sein, dem das Sticker-Set gehört. Alle anderen sehen das Rückfallzeichen, das du umschlossen hast.

Wird irgendetwas hochgeladen, das ich hier eintippe?

Nein. Die Umwandlung läuft in deinem Browser, und die Seite hat keinen Sendeschritt, kein Konto und keinen Speicher. Tab zu, Nachricht weg.

Weiter geht es

Ebenfalls kostenlos: Telegram Group Finder , Telegram Lead Finder , Free QR Code Generator .

Wenn die Formatierung für eine Nachricht an 200 Leute gedacht ist

Vorescapter Text ist die kleinere Hälfte eines Broadcasts. Die größere Hälfte ist, ihn von einem Konto zu senden, auf das Leute tatsächlich antworten, das Tempo so zu wählen, dass Telegram ruhig bleibt, und die Antworten irgendwo außer auf einem Handy aufzufangen. Diesen Teil übernimmt Entergram: echte persönliche Telegram-Konten statt eines Bots, jedes über seinen eigenen Proxy, und die Antworten laufen in einer Oberfläche neben dem Kontaktdatensatz ein.

Ansehen, wie Broadcasts laufen