Format teks Telegram: tebal, miring, spoiler, MarkdownV2
Ketik dengan tebal, miring, garis bawah, coret, spoiler, kode, link, dan kutipan, pantau pratinjaunya, lalu salin teks persis seperti yang diminta Telegram: MarkdownV2 dengan setiap simbol di-escape, HTML, atau entities dengan offset UTF-16.
Markup: **tebal**, __miring__, ++garis bawah++, ~~coret~~, ||spoiler||, `kode`, pagar ``` di barisnya sendiri untuk blok kode, [teks](url), baris yang diawali > untuk kutipan dan >> untuk kutipan yang bisa diperluas. Garis miring terbalik membuat simbol tetap apa adanya. Ctrl atau Cmd dengan B, I, dan U juga jalan.
Pratinjau
Kami mengirim ke seluruh dunia mulai Senin.
Untuk bot dan Bot API
*Hari peluncuran\.* _Koleksi_ baru sudah tersedia: ~49~ 29 USD, dan 50 pesanan pertama gratis ongkir\. ||Kode diskon: FIRST50|| Detail: [di toko](https://example.com/shop) >Kami mengirim ke seluruh dunia mulai Senin\.
Kirim dengan parse_mode=MarkdownV2. Setiap karakter khusus sudah di-escape.
<b>Hari peluncuran.</b> <i>Koleksi</i> baru sudah tersedia: <s>49</s> 29 USD, dan 50 pesanan pertama gratis ongkir. <tg-spoiler>Kode diskon: FIRST50</tg-spoiler> Detail: <a href="https://example.com/shop">di toko</a> <blockquote>Kami mengirim ke seluruh dunia mulai Senin.</blockquote>
Kirim dengan parse_mode=HTML. Tanda <, >, dan & di teks Anda sudah diganti.
[
{
"type": "bold",
"offset": 0,
"length": 16
},
{
"type": "italic",
"offset": 17,
"length": 7
},
{
"type": "strikethrough",
"offset": 46,
"length": 2
},
{
"type": "spoiler",
"offset": 95,
"length": 20
},
{
"type": "text_link",
"offset": 124,
"length": 7,
"url": "https://example.com/shop"
},
{
"type": "blockquote",
"offset": 132,
"length": 43
}
]Kirim teks polos sebagai text dan array ini sebagai entities, tanpa parse_mode. Offset dan panjang dalam unit UTF-16.
Batas dihitung dari teks setelah markup dibuang: 4.096 karakter per pesan, 1.024 per keterangan. Cara penghitungannya
Format di Telegram bukan tipografi, melainkan data. Sebuah kata tebal adalah entity: tipe, offset, dan panjang yang ditempelkan pada teks polos. Aplikasi menggambarnya, bot mengirimnya, dan semua yang salah pada pesan berformat terjadi di titik saat teks diubah menjadi entities.
Sepuluh gaya, satu markup
Kolom di atas menerima markup kecil dan mengubahnya menjadi entities sambil Anda mengetik: **tebal**, __miring__, ++garis bawah++, ~~coret~~, ||spoiler||, sepasang tanda petik terbalik untuk kode dalam baris, pagar ``` di barisnya sendiri untuk blok kode (tulis bahasanya setelah pagar pembuka), [teks](url) untuk link, dan baris yang diawali > untuk kutipan atau >> untuk kutipan yang bisa diperluas. Garis miring terbalik di depan simbol mana pun membuatnya tetap teks. Gaya bisa bersarang, jadi link boleh berada di dalam tebal dan tebal di dalam kutipan; kode tidak memuat apa pun, dan kutipan tidak memuat kutipan lain maupun blok kode. Itu persis aturan penyarangan yang diterapkan Telegram, bukan batasan halaman ini.
Pratinjau menunjukkan makna entities, bukan bagaimana satu aplikasi tertentu menggambarnya piksel demi piksel. Spoiler tetap tersembunyi sampai Anda mengetuknya. Penghitung di bawah kolom mengukur teks tanpa markup, karena itulah teks yang diukur Telegram.
MarkdownV2: escape yang merusak bot
parse_mode=MarkdownV2 adalah format yang ditunjukkan kebanyakan tutorial dan yang ada di balik kebanyakan error «can’t parse entities». Aturannya pendek dan tanpa ampun: di luar kode, setiap karakter _ * [ ] ( ) ~ ` > # + - = | { } . ! harus didahului garis miring terbalik, begitu pula garis miring terbalik itu sendiri. Satu titik tanpa escape di akhir kalimat sudah cukup membuat API menolak seluruh pesan. Di dalam code dan pre hanya petik terbalik dan garis miring terbalik yang di-escape; di dalam bagian alamat sebuah link hanya kurung tutup dan garis miring terbalik.
Ada satu jebakan lagi. Dua garis bawah selalu dibaca sebagai garis bawah, dengan rakus, dari kiri ke kanan, jadi miring yang berakhir tepat di tempat garis bawah berakhir tidak bisa ditulis begitu saja. Solusi yang didokumentasikan: tutup miringnya, sisipkan entity tebal kosong ** sebagai pemisah, baru tutup garis bawahnya. Keluaran MarkdownV2 di atas mengerjakan semuanya, termasuk pemisah itu, dan karena itulah lebih baik disalin daripada diketik ulang.
HTML: tiga karakter yang di-escape
parse_mode=HTML adalah pilihan yang lebih tenang. Telegram mendukung daftar tag yang tetap: b, i, u, s, tg-spoiler, a, code, pre (dengan code class="language-…" bersarang untuk menyebut bahasanya), dan blockquote, biasa atau expandable. Hanya tiga karakter di teks Anda yang butuh perhatian: <, >, dan &, diganti dengan <, >, dan &. Sisanya, termasuk titik dan tanda hubung yang membuat MarkdownV2 rapuh, dikirim apa adanya. Inilah format yang dipakai AdminHub sendiri saat menerbitkan postingan, dan yang sebaiknya dipilih untuk bot mana pun yang ditulis dari nol.
Entities, kalau Anda tidak mau meng-escape sama sekali
Keluaran ketiga adalah array entities. Kirim bersama teks polos tanpa parse_mode, dan tidak ada yang perlu di-escape, karena tidak ada yang diurai. Satu-satunya hal yang perlu diketahui adalah satuannya: offset dan panjang dihitung dalam unit UTF-16, jadi emoji atau karakter apa pun di luar Basic Multilingual Plane dihitung dua. Tepat karena itu penghitung menampilkan angka tersebut secara terpisah.
Seberapa panjang sebuah pesan
Sebuah pesan menampung 4.096 karakter dan keterangan media 1.024, keduanya «setelah entities diurai»: markup, tag, dan garis miring escape tidak dihitung, hanya teks yang dilihat pembaca. Batas dinyatakan dalam karakter, yang oleh konfigurasi klien Telegram dihitung sebagai code point, jadi emoji tebal adalah satu karakter terhadap batas walau entity-nya sepanjang dua unit. Penghitung di atas mengikuti aturan itu dan berganti di antara dua batas; pembuat font menjelaskan perbedaan yang sama untuk huruf Unicode bergaya.
Yang tidak dilakukan alat ini
Emoji kustom dan entity tanggal tg-time membutuhkan bot dengan hak tertentu dan tidak dimasukkan. Mode Markdown lama sengaja dilewatkan: ia tidak bisa bersarang, tidak bisa menyatakan garis bawah, coret, spoiler, atau kutipan, dan dokumentasi Telegram sendiri mengarahkan ke MarkdownV2. Judul, tabel, dan daftar juga bukan bagian dari format pesan biasa: Telegram memperkenalkannya pada Juli 2026 sebagai editor teks kaya terpisah untuk pengguna Premium, dan untuk bot semuanya adalah pesan kaya Bot API 10.1, yaitu yang dihasilkan editor postingan AdminHub. Untuk gaya di halaman ini, setiap klien Telegram menampilkan hasil yang sama.
Sumber, diperiksa September 2026: Bot API, Formatting options untuk aturan escape MarkdownV2, daftar tag HTML, aturan penyarangan, dan batas «setelah entities diurai»; Bot API, MessageEntity untuk offset dan panjang dalam unit UTF-16; Styled text with message entities tentang cara klien menghitung panjang entity; blog Telegram, 14 Juli 2026 tentang editor teks kaya dan ketersediaannya hanya untuk Premium.
Yang biasanya ditanyakan
- Bagaimana cara membuat teks tebal di Telegram?
- Tulis di sini di antara dua bintang ganda, atau pilih teksnya dan tekan Tebal, lalu salin hasilnya dalam bentuk yang Anda butuhkan. Untuk bot, kirim teks sebagai <b>tebal</b> dengan parse_mode=HTML, atau sebagai *tebal* dengan parse_mode=MarkdownV2, yang mengharuskan semua karakter khusus lainnya di-escape. Halaman ini membahas apa yang didokumentasikan Bot API, bukan tombol di tiap aplikasi.
- Kenapa bot saya mendapat error can't parse entities?
- Karena pesan dikirim dengan parse_mode=MarkdownV2 dan memuat karakter khusus yang tidak di-escape, paling sering titik, tanda hubung, tanda seru, atau tanda kurung, atau ada gaya yang dibuka tapi tidak pernah ditutup. Dengan HTML error yang sama datang dari tag yang tidak ditutup atau tidak didukung, atau dari < atau & telanjang di teks. Tempel teksnya di sini dan salin keluaran MarkdownV2 atau HTML: escape dan penutupannya sudah beres.
- HTML atau MarkdownV2: mana yang dipakai untuk bot?
- HTML, kecuali Anda punya alasan lain. Ia meng-escape tiga karakter, bukan delapan belas, tidak punya kerancuan antara garis bawah dan miring, dan itulah format yang dikirim AdminHub ke Telegram untuk setiap postingan berformat. MarkdownV2 tidak masalah kalau pustaka Anda yang menyusunnya atau kalau Anda menyalinnya dari alat seperti ini.
- Bagaimana menyembunyikan teks di balik spoiler?
- Bungkus dengan dua garis tegak ganda, ||seperti ini||, atau pilih teksnya dan tekan Spoiler. Di MarkdownV2 spoiler ditulis dengan cara yang sama, di HTML ia adalah tag tg-spoiler, dan sebagai entity tipenya spoiler. Pembaca melihat blok buram sampai mengetuknya.
- Bisakah memakai judul, tabel, atau daftar di pesan Telegram?
- Dengan format pesan biasa tidak bisa, dan alat ini tidak membuatnya. Telegram menambahkan judul, tabel, dan daftar pada Juli 2026 sebagai editor teks kaya terpisah, hanya untuk pengguna Premium; untuk bot semuanya termasuk pesan kaya Bot API 10.1, dan begitulah editor postingan AdminHub mengirimnya. Semua gaya di halaman ini jalan di obrolan mana pun.
- Seberapa panjang pesan berformat boleh dibuat?
- 4.096 karakter untuk pesan dan 1.024 untuk keterangan media, dihitung dari teks setelah markup dibuang: tag, bintang, dan garis miring escape tidak dihitung. Penghitung di bawah kolom memakai aturan yang sama dan bisa berganti di antara dua batas itu.
- Kenapa panjang entity berbeda dari jumlah karakter?
- Offset dan panjang entity dihitung dalam unit UTF-16, sehingga emoji atau karakter apa pun di luar bidang dasar dihitung dua, sementara batas pesan dihitung dalam karakter. Penghitung menampilkan keduanya: angka pertama menentukan apakah pesan muat, angka kedua yang masuk ke array entities.