Skip to content
Kembali ke Blog
Tutorial

Batas Karakter & Kata 2026: Twitter, SMS, SEO, Instagram Online

Panduan 2026 batas karakter dan kata — Twitter, SMS GSM-7/UCS-2, meta SEO, Instagram, LinkedIn — dengan logika penghitungan Unicode dan penghitung kata real-time.

13 menit baca

Batas Karakter & Kata 2026: Twitter, SMS, SEO, Instagram Online

Batas karakter (character limit) adalah jumlah maksimum titik kode (codepoint) Unicode yang diterima sebuah platform dalam satu kolom: 280 untuk satu unggahan Twitter, 160 untuk satu segmen SMS dengan GSM-7, sekitar 160 untuk meta description Google sebelum dipotong. Angka yang relevan bagi Anda tergantung pada tempat Anda menerbitkan dan apakah teks Anda mengandung emoji, kutip pintar (smart quotes), atau aksara CJK. Ketiga hal itu mengubah perhitungannya.

Panduan ini ditujukan untuk penulis media sosial, spesialis SEO, copywriter pemasaran, pengirim SMS yang ditagih per segmen, serta developer yang menulis validasi yang harus cocok dengan apa yang sebenarnya dihitung Twitter, Instagram, atau gateway SMS. Loncat ke tabel referensi cepat untuk cheat sheet 25 platform, atau periksa draf Anda secara langsung terhadap enam platform utama di Penghitung Kata; progress bar berubah merah saat Anda melewati batas.

Referensi Cepat — Batas Karakter & Kata Setiap Platform

Tabel di bawah ini mencakup 30+ kolom yang paling sering ditemui penulis dan developer. “Batas keras” adalah pagu yang ditegakkan platform; “Tampak / di atas lipatan” adalah yang dilihat pembaca sebelum titik pemangkasan; “Sweet spot” adalah rentang empiris saat konten berkinerja terbaik.

PlatformBatas kerasTampak / di atas lipatanSweet spotEmoji dihitung sebagai
Twitter / X post280 karakter28070-100 karakter1 codepoint
Twitter / X bio160 karakter1601 codepoint
Twitter / X display name50 karakter501 codepoint
X Premium long-form25.000 karakter1 codepoint
Instagram caption2.200 karakter125 pertama (lalu “more”)<125 untuk hook1 codepoint
Instagram bio150 karakter1501 codepoint
Instagram hashtagmaks 305-10
LinkedIn post3.000 karakter210 pertama (lalu “see more”)<1.3001 codepoint
LinkedIn article110.000 karakter1 codepoint
LinkedIn headline220 karakter2201 codepoint
Facebook post63.206 karakter~477 desktop / ~125 mobile<80 untuk organik1 codepoint
TikTok caption2.200 karakter~100 pertama<1501 codepoint
YouTube title100 karakter70 (pencarian)<601 codepoint
YouTube description5.000 karakter100-150 pertama di atas lipatan150 pertama untuk hook1 codepoint
YouTube comment10.000 karakter1 codepoint
Reddit title300 karakter<60 (bergantung subreddit)1 codepoint
Reddit comment10.000 karakter1 codepoint
Discord message2.000 karakter2.0001 codepoint
Discord embed description4.096 karakter1 codepoint
Slack message40.000 karakter<2.000 untuk keterbacaan1 codepoint
Pinterest pin description500 karakter50-60 pertama<1251 codepoint
Mastodon toot500 karakter (dapat dikonfigurasi)5001 codepoint
Bluesky post300 karakter3001 grapheme cluster
Threads post500 karakter5001 codepoint
SEO meta description (Google)~160 karakter desktop / ~120 mobile150-160150-1601 codepoint
SEO page title (Google)~60 karakter desktop / ~50 mobile50-6050-601 codepoint
Open Graph description~200 karakter sebelum LinkedIn/FB memotong150-200150-2001 codepoint
Twitter Card description200 karakter maks200150-2001 codepoint
SMS segmen tunggal (GSM-7)160 karakterkhusus — lihat di bawah
SMS segmen tunggal (UCS-2 / emoji)70 karakter1 codepoint
WhatsApp message text65.536 karakter1 codepoint
Email subject linetanpa batas platform~60 desktop / ~30 mobile<501 codepoint
Google Ads headline30 karakter × 15 headline30 per headline301 codepoint
Google Ads description90 karakter × 4 deskripsi90 per deskripsi901 codepoint
App Store title30 karakter30301 codepoint
App Store subtitle30 karakter30301 codepoint
App Store description4.000 karakter252 pertama di atas lipatan252 untuk hook1 codepoint
Play Store short description80 karakter80801 codepoint
Play Store long description4.000 karakter80 pertama di atas lipatan80 untuk hook1 codepoint

Konten yang melewati garis “sweet spot” cenderung dipotong, diturunkan peringkatnya, atau hilang dari kartu yang terlihat. X Premium long-form dan Mastodon (dapat dikonfigurasi per instance) adalah pengecualian langka yang membolehkan Anda menulis lebih dari 500 karakter tanpa penalti. Setiap perhitungan di atas, kecuali ketika aturan SMS berlaku, adalah hitungan titik kode (codepoint) Unicode: satu emoji berharga 1 karakter, bukan 2. Untuk memverifikasi sebuah draf terhadap enam batas paling umum sekaligus, tempel di Penghitung Kata; progress bar menangkap teks yang melewati batas sebelum Anda menekan publikasikan.

Bagaimana Karakter Sebenarnya Dihitung (Codepoint Unicode vs UTF-16)

Tiga alat berbeda dapat memberi Anda tiga hitungan karakter berbeda untuk string yang sama. Alasannya, “karakter” bukan satu hal tunggal. Istilah itu bisa berarti titik kode (codepoint) Unicode, unit kode (code unit) UTF-16, atau klaster grafem (grapheme cluster), dan setiap platform memilih salah satunya.

Apa itu “karakter” — codepoint vs code unit vs grapheme

Sebuah codepoint adalah nilai skalar Unicode: bilangan bulat dari U+0000 sampai U+10FFFF yang ditetapkan Unicode untuk sebuah karakter atau ditandai sebagai dicadangkan. Sebuah code unit adalah potongan terkecil sebuah pengkodean (encoding); UTF-16 menggunakan code unit 16-bit, UTF-8 menggunakan code unit 8-bit. Sebuah grapheme cluster adalah apa yang manusia rasakan sebagai satu karakter terlihat: kadang satu codepoint, kadang satu codepoint dasar ditambah tanda penggabung (combining marks), kadang urutan zero-width-joiner seperti emoji keluarga 👨‍👩‍👧‍👦 (tujuh codepoint yang digabung menjadi satu glif terlihat).

Untuk string "a🌍👨‍👩‍👧" ketiga hitungan tidak sepakat:

Metode penghitunganHasilDigunakan oleh
UTF-16 code units (JS string.length)10Kode JavaScript yang naif
Codepoint Unicode6Twitter, Instagram, gateway SMS
Grapheme cluster3Bluesky, pembaca layar, editor teks

Mengapa string.length berbohong soal emoji

JavaScript menyimpan string secara internal sebagai UTF-16. Setiap codepoint di atas U+FFFF (semua emoji, semua karakter astral-plane) dikodekan sebagai pasangan substitusi (surrogate pair), yaitu dua unit kode 16-bit. Properti .length melaporkan dua unit tersebut, bukan satu karakter.

"🌍".length              // 2   (UTF-16 code units)
[..."🌍"].length         // 1   (codepoints — what Twitter/SMS counts)
"🌍".match(/./gu).length // 1   (codepoints via regex with /u flag)

Operator spread dan flag regex /u keduanya beriterasi per codepoint, yang cocok dengan yang diukur Twitter, Instagram, dan gateway SMS terhadap batasnya. Fungsi validasi yang memakai .length mentah akan menolak tweet yang sebenarnya masih di bawah batas, atau, lebih buruk, meloloskan pesan yang akan ditolak sistem hilir Anda.

Bagaimana dengan CJK dan combining marks

Ideograf Tionghoa, Jepang, dan Korea masing-masing adalah satu codepoint dan dihitung satu karakter di setiap platform. Yang membuatnya mahal adalah pada SMS: setiap karakter non-GSM-7 mengubah seluruh pesan ke pengkodean UCS-2, menurunkan batas segmen dari 160 menjadi 70 (dibahas di bagian berikutnya).

Combining marks berperilaku berbeda. Huruf á beraksen yang ditulis sebagai á adalah satu codepoint; á yang sama ditulis sebagai a + ́ (combining acute accent) adalah dua codepoint tetapi satu grapheme cluster. Sebagian besar platform menghitung per codepoint, jadi bentuk kedua berharga satu karakter ekstra. Bluesky adalah pengecualian yang terlihat: ia menghitung grapheme cluster, jadi kedua bentuk berharga 1.

Menghitung dalam bahasa berbeda — referensi cepat

// JavaScript
[...str].length                          // codepoints
Array.from(str).length                   // codepoints

// Python 3 — len() is codepoint by default
len(s)

// Go — utf8 package
utf8.RuneCountInString(s)

// Rust — chars() iterates codepoints
s.chars().count()

// Java — codePointCount
s.codePointCount(0, s.length())

Sebagai perbandingan, encoder Base64 mengingatkan arah sebaliknya: saat teks dikodekan ke Base64 untuk transmisi, setiap 3 byte input UTF-8 menjadi 4 karakter ASCII output, sehingga panjang yang dikodekan bergantung pada hitungan byte, bukan hitungan codepoint. Tempel satu emoji dan lihat output Base64 mengembang menjadi 8 karakter. Emoji yang sama yang berharga 1 karakter di Twitter mengambil 4 byte di UTF-8.

Untuk melihat hitungan codepoint (angka yang sebenarnya diukur Twitter) pada draf apa pun, Penghitung Kata sudah Unicode-correct secara default.

Batas Karakter SMS — GSM-7, UCS-2 & Pesan Multi-Bagian

SMS adalah satu-satunya kanal utama tempat menambahkan satu emoji bisa benar-benar menggandakan tagihan Anda. Alasannya adalah encoding, dan rumusnya sama sejak 1985.

Angka ajaib 160 karakter — sejarah GSM-7

Standar GSM-03.38 tahun 1985 menetapkan payload SMS sebesar 140 byte. Dengan pengkodean karakter 7-bit, 140 byte menampung 1.120 bit ÷ 7 = 160 karakter. Dari situlah sms character limit yang terkenal sebesar 160 berasal. Set karakter GSM-7 mencakup 128 karakter dasar plus ekstensi 10-karakter (mencakup { } [ ] | \ ~ ^ € dan form feed). Di dalam set itu Anda mendapatkan anggaran penuh 160 karakter per segmen.

Karakter yang berada di luar GSM-7 dan memaksa peralihan:

  • Semua emoji
  • Kutip lengkung / pintar (" " ' '); perhatikan, ini berbeda dari kutip lurus ASCII " '
  • Sebagian besar huruf Latin beraksen di luar 35 yang ada di GSM-7 (é á ñ ü ø dll.; GSM-7 hanya mencakup ä ö å æ ø à è ì ò ù dan beberapa lainnya)
  • Tanda baca lebar penuh (full-width), aksara CJK, Arab, Ibrani, Yunani huruf kecil, Sirilik
  • Backtick ` dan tilde ~ (tilde ada di tabel ekstensi GSM-7, jadi ia berharga 2 dari 160 karakter Anda)

Jebakan UCS-2 — satu emoji menjatuhkan Anda dari 160 ke 70

Begitu satu karakter non-GSM-7 muncul di mana pun dalam pesan, seluruh pesan beralih ke pengkodean UCS-2. UCS-2 menggunakan 16 bit per karakter, jadi 140 byte ÷ 2 = 70 karakter per segmen. Contoh nyata:

"Hello, your code is 12345"            → 26 chars, GSM-7, 1 segment
"Hello, your code is 12345 ✓"          → 28 chars, GSM-7 (✓ in extension), 1 segment
"Hello, your code is 12345 ✅"          → 28 chars, UCS-2 (emoji), 1 segment (under 70)
"Hello, "your" code is 12345 ✅"        → smart quotes + emoji → UCS-2
"Hi 你好"                                → CJK → UCS-2, 1 segment (5 chars)

Contoh terakhir “Hi 你好” itulah jebakannya: hanya 5 karakter tetapi terkena tarif UCS-2 dan 65 karakter berikutnya yang Anda tambahkan akan muat di satu segmen, lalu segmen 2 dimulai.

Segmen SMS multi-bagian (concatenation)

Setelah Anda melewati 160 (GSM-7) atau 70 (UCS-2), pesan terpecah menjadi beberapa segmen. Setiap segmen membawa User Data Header (UDH) 7 karakter yang dipakai untuk perakitan ulang, sehingga payload tersedia per segmen turun:

  • GSM-7 multi-bagian: 153 karakter per segmen
  • UCS-2 multi-bagian: 67 karakter per segmen

Ponsel penerima merakit ulang segmen-segmen itu secara tak terlihat bagi penerima, tetapi penagihan dilakukan per segmen, bukan per pesan. Pesan GSM-7 sepanjang 161 karakter berharga 2 segmen. Pesan GSM-7 sepanjang 1.000 karakter berharga 7 segmen (153 × 6 = 918, segmen ke-7 membawa 82 terakhir).

Hitungan biaya — kapan satu emoji menggandakan tagihan Anda

Pertimbangkan pesan pemasaran teks biasa sepanjang 80 karakter:

  • Teks biasa: 80 karakter → GSM-7 → 1 segmen dengan harga X
  • Tambahkan satu emoji: 80 karakter → UCS-2 → 80 > 70 → 2 segmen dengan harga 2X

Tagihan menjadi dua kali lipat karena satu emoji itu nyata dan ia berskala. Kampanye 100.000 pesan dengan $0,0075 per segmen berbiaya $750 di GSM-7 vs $1.500 di UCS-2; emoji seharga $750. Setiap penyedia SMS besar (Twilio, Bandwidth, AWS SNS, MessageBird, Vonage) menagih dengan cara ini. Aturan encoding adalah standar GSM, bukan kebijakan vendor. Sejarah lebih lengkap tentang trade-off encoding di level byte, dan mengapa ASCII / UTF-8 / UCS-2 ada sebagai standar terpisah, dibahas di Understanding Base64, yang merupakan keluarga masalah “bit menjadi karakter” yang sama, diterapkan ke email alih-alih SMS.

Cara menjaga pesan tetap di GSM-7

  • Gunakan kutip lurus ASCII " ', bukan kutip pintar
  • Gunakan tanda hubung ASCII -, bukan em-dash atau en-dash
  • Tulis lengkap (c) dan (R), bukan © dan ®
  • Hindari emoji kecuali anggaran kampanye sudah memperhitungkan biaya UCS-2
  • Konsol penyedia (Twilio, Bandwidth, MessageBird) menampilkan “encoding: GSM-7” atau “UCS-2” di samping pratinjau; verifikasi sebelum disiarkan

Pemeriksaan tercepat saat menyusun draf adalah progress bar SMS pada Penghitung Kata; ia melapor terhadap baseline 160-karakter. Jika teks Anda memicu UCS-2, bagi mental hitungan karakter Anda dengan 2,29 untuk memperkirakan jumlah segmen di bawah aturan 70-karakter.

Batas SEO — Meta Description, Title Tag, OG, Twitter Card

Batas karakter SEO lebih lunak daripada batas platform. Google tidak akan menolak halaman Anda jika meta description mencapai 300 karakter, tetapi aturan pemangkasan yang praktis tetap penting untuk click-through rate. Berikut angka-angka yang masih berlaku di 2026.

Meta description — sweet spot 150-160 karakter

Hasil pencarian desktop Google memotong meta description di sekitar 155-165 karakter; mobile memangkas antara 100 dan 120. Titik pemangkasan tepatnya bervariasi karena Google mengukur piksel tampilan, bukan karakter. Deskripsi penuh dengan glif W dan M mencapai piksel pemangkasan lebih awal daripada yang penuh dengan i dan l.

Aturan penulisan praktis:

  • Targetkan total 150-160 karakter
  • Letakkan pesan inti di 120 karakter pertama (aman di mobile)
  • Awali dengan kata kunci meta description character limit untuk halaman tersebut di 30 karakter pertama
  • Akhiri dengan CTA di 30 karakter terakhir, agar terbaca bahkan jika desktop memotong bagian tengah

Pada periode 2017-2018, Google sempat memperluas tampilan meta description menjadi 320 karakter, dan satu generasi tutorial SEO masih mengutip angka itu. Google kembali ke 160 pada pertengahan 2018. Menulis melebihi 200 karakter hari ini hanya menyembunyikan paruh keduanya.

Mode kegagalan berbeda: deskripsi di bawah 120 karakter sering diganti seluruhnya. Google memutuskan deskripsi Anda tidak melayani kueri secara penuh dan menarik bagian lain dari isi halaman; Anda kehilangan kendali CTR tanpa peringatan.

Title tag — 60 desktop, 50 mobile

Title tag dipotong di sekitar 60 karakter di desktop dan 50 di mobile. Pemangkasan berbasis piksel yang sama dengan deskripsi, peringatan yang sama tentang glif lebar.

Sweet spot: 50-60 karakter, dengan kata kunci target dalam 30 karakter pertama agar selamat dari pemangkasan apa pun. Sufiks merek panjang (| Brand Name) sebaiknya di akhir, di mana pemangkasan paling tidak menyakitkan.

Lebar piksel vs hitungan karakter — aturan Google yang sebenarnya

Kontainer deskripsi SERP Google lebarnya sekitar 920 piksel di desktop. Lebar karakter rata-rata sekitar 6,5 piksel, menghasilkan target empiris 140-160 karakter. Tapi sebaran per karakter lebar: i ditampilkan sekitar 3 piksel, M sekitar 11. Deskripsi yang seluruhnya huruf besar (“BEST WIDGETS FOR WINTER WEDDINGS”) dipotong jauh lebih awal daripada padanan huruf kecil.

Pratinjau pra-publikasi memakai simulator SERP yang akurat piksel lebih andal daripada penghitung karakter untuk copy SEO.

OG description & Twitter Card description

og:description dari protokol Open Graph adalah yang dirender Facebook, LinkedIn, Slack, dan Discord di bawah pratinjau tautan yang dibagikan. Batas tampilan bervariasi per platform: sebagian besar memotong sekitar 200 karakter, sebagian sampai 300. twitter:description dari Twitter Card dibatasi keras 200 karakter di parser Twitter.

Default yang masuk akal:

  • 150-200 karakter untuk OG maupun Twitter Card
  • Boleh sama dengan meta description Anda, tetapi OG boleh sedikit lebih panjang karena panjang OG tidak memengaruhi peringkat pencarian
  • Validasi pilihan structured-data Anda (terutama yang tertarik ke OG secara tidak sengaja) menggunakan pola di Security Best Practices, di mana metadata OG yang tidak tepercaya adalah vektor phishing yang umum

Apa arti “tanpa batas karakter” sebenarnya

Tag H1, isi body, dan slug URL tidak punya batas karakter SEO yang ditegakkan platform, tetapi batas lunak tetap berlaku:

  • H1 > 70 karakter merusak hierarki visual dan kemudahan dipindai (skim)
  • Slug URL secara teknis tidak terbatas; Google menampilkan sekitar 90 karakter di SERP, sisanya kosmetik
  • Isi body tidak punya pagu panjang, tetapi Google memeringkat konten yang membantu di atas pengisi; hitungan kata saja bukan sinyal peringkat

Penghitung Kata melacak meta description (160) dan title tag (60) secara langsung saat Anda menyusun draf, dengan progress bar yang berubah kuning lalu merah saat draf mendekati piksel pemangkasan.

Platform Sosial — Twitter/X, Instagram, LinkedIn, Facebook & Lainnya

Setiap plafon karakter platform punya cerita di baliknya dan sweet spot di bawah batas keras tempat konten benar-benar berkinerja.

Twitter / X — 280, premium 25.000, aturan substitusi URL

Twitter character limit standar adalah 280 karakter, dilipatgandakan dari 140 pada November 2017. Pelanggan X Premium dapat memposting konten long-form sampai 25.000 karakter dengan format kaya, tetapi unggahan 280 karakter masih bentuk dominan untuk jangkauan organik.

Aturan yang tidak kasat mata adalah substitusi URL. Twitter membungkus setiap URL, sepanjang apa pun, dalam short link t.co 23 karakter saat publikasi. Biaya 23 karakter itu tetap.

published_length = raw_length − URL_length + 23

Contoh: draf seperti "Check this: https://example.com/very-long-path?id=12345" adalah 53 karakter mentah. URL tersebut 38 karakter, jadi diganti dengan tautan t.co 23 karakter, dan panjang yang dipublikasikan menjadi 53 − 38 + 23 = 38 karakter. Anda menghemat 15 karakter yang tidak Anda sadari.

Untuk menempel URL panjang ke dalam draf, URL encoder/decoder adalah cara cepat memverifikasi apa yang dihitung sebagai URL (Twitter mengenali URL berdasarkan pola RFC 3986, termasuk query string dan fragment). Subdomain, skema, port, path, query, dan fragment semuanya ditelan oleh substitusi 23 karakter.

Kolom Twitter lain: display name 50 karakter, bio 160 karakter, handle 15 karakter. Threads (padanan Twitter dari Meta) memakai batas 500 karakter.

Instagram — 2.200 caption, 30 hashtag, hook 125 karakter

Caption Instagram membolehkan 2.200 karakter, tetapi feed hanya menampilkan 125 karakter pertama sebelum melipat sisanya di balik ketukan ”… more”. Lebih dari setengah pembaca tidak pernah menekannya. Instagram caption limit yang berarti untuk engagement adalah 125, meskipun batas kerasnya tetap 2.200.

Batas 30 hashtag bersifat keras: mencoba hashtag ke-31 akan menggagalkan unggahan. Rentang 5-10 hashtag cenderung berkinerja terbaik; di atas 11, dorongan discovery mendatar dan unggahan mulai terlihat seperti spam bagi algoritma.

Kolom lain: bio 150 karakter, display name 30 karakter, DM 1.000 karakter.

LinkedIn — 3.000 post, sweet spot 1.300, lipatan “see more”

LinkedIn character limit untuk unggahan adalah 3.000, tetapi feed hanya menampilkan 210 karakter pertama sebelum lipatan “see more”. Unggahan dalam rentang 1.200-1.500 karakter cenderung memenangkan engagement di LinkedIn (banyak studi Buffer dan Hootsuite menyatu di sekitar 1.300 sebagai puncaknya); cukup panjang untuk menunjukkan nilai, cukup pendek agar tidak melelahkan saat di-scroll.

LinkedIn Articles (permukaan publikasi long-form) membolehkan 110.000 karakter, secara efektif tak terbatas. Headline profil dibatasi 220, teks bagian about 2.600.

Facebook — 63.206 karakter, sweet spot organik 80 karakter

Batas unggahan Facebook 63.206 karakter sebagian besar hanya trivia; dalam praktiknya unggahan di bawah 80 karakter mendapatkan sekitar 30% lebih banyak engagement organik daripada yang lebih panjang (HubSpot konsisten melaporkan ini bertahun-tahun). Di atas lipatan, desktop menampilkan sekitar 477 karakter; mobile memotong sekitar 125.

Maksimum komentar 8.000 karakter. Reaksi, share, dan klik semuanya condong ke unggahan yang lebih pendek; copy panjang sebaiknya diletakkan di artikel yang ditautkan, bukan di caption Facebook.

Platform yang lebih baru — Bluesky, Mastodon, Threads, TikTok

  • Bluesky unggahan dibatasi 300 karakter dan merupakan kasus tak biasa: Bluesky menghitung grapheme cluster, jadi emoji keluarga tujuh codepoint 👨‍👩‍👧‍👦 berharga 1 karakter, bukan 7
  • Mastodon default 500 karakter per toot, tetapi admin instance bisa menaikkan menjadi 5.000 atau bahkan tak terbatas; cek instance tempat Anda memposting
  • Threads memakai batas 500 karakter gaya Twitter dengan penghitungan codepoint
  • TikTok caption membolehkan 2.200 karakter dengan sekitar 100 yang ditampilkan di atas lipatan

Reddit, Discord, Slack — long-form & default komunitas

  • Reddit judul 300 karakter (moderator subreddit sering menegakkan <60 via AutoModerator); komentar 10.000 karakter
  • Discord pesan standar 2.000 karakter; deskripsi embed 4.096; Nitro menaikkan ke 4.000 pada pesan biasa
  • Slack pesan 40.000 karakter; di atas 2.000 keterbacaan turun tajam dan banyak penerima mengabaikan pesan panjang

Target Hitungan Kata Berdasarkan Jenis Konten

Batas karakter mendominasi sosial dan SEO; hitungan kata mendominasi yang lain: kerja akademik, penagihan, content marketing, naskah. Tabel di bawah memberi rentang target dan estimasi waktu baca (230 wpm, median meta-analisis bacaan diam Brysbaert 2019) untuk setiap jenis konten umum.

Jenis kontenTarget kataWaktu baca @ 230 wpmCatatan
Tweet30-40 kata10 detikoptimalkan untuk karakter, bukan kata
LinkedIn post (sweet spot)170-250 kata1 menitdi atas lipatan
Instagram caption (hook)20-25 kata<10 detik125 karakter pertama
Blog post — pendek500-700 kata2-3 menitlisticle, berita, hot take
Blog post — standar1.000-1.500 kata4-7 menittutorial, panduan mendalam
Blog post — panjang2.000-3.000 kata9-13 menitpanduan komprehensif
Halaman pilar SEO2.500-5.000 kata11-22 menitotoritas topikal
Esai akademik (SMA)500-1.500 kata2-7 menitbervariasi per tugas
Esai akademik (S1)1.500-3.000 kata7-13 menitper tugas
NaNoWriMo harian1.667 kata/hari50K kata dalam 30 hari
Novel — pendek50.000-70.000 kataYA, misteri
Novel — standar80.000-100.000 katafiksi dewasa
Talk konferensi (12 mnt @ 130 wpm)1.500-1.600 kataberbicaralatih untuk konfirmasi
Episode podcast (30 mnt @ 130 wpm)3.900 kataberbicarabagian yang berskrip

Waktu baca adalah satuan target yang lebih berguna untuk content marketing; pembaca merespons label “5 menit baca” lebih andal daripada label “1.150 kata”. Hitungan kata tetap menjadi satuan untuk penagihan (penerjemahan ditagih per kata sumber), kepatuhan platform (50K NaNoWriMo, batas akademik 2.000 kata), dan ketentuan kontrak. Penghitung Kata menampilkan keduanya secara real-time saat Anda mengetik, ditambah waktu bicara pada 130 wpm untuk talk dan podcast.

6 Kesalahan Penghitungan yang Membobol Aplikasi Nyata

Berikut kegagalan berulang yang terlihat di kode yang sudah dikirim dan kampanye pemasaran yang sudah berjalan. Setiap kasus dipasangkan dengan gejala, akar penyebab, dan perbaikannya.

Kesalahan 1: Memakai string.length untuk validasi batas karakter

Gejala: Seorang pengguna menempel tweet berisi tiga emoji yang sebenarnya 270 codepoint. Validasi front-end Anda menampilkan 276 dan menolak submit. Atau, lebih buruk, kode Anda menerima draf 285 codepoint karena anggaran emoji saling membatalkan, dan Twitter menolaknya di server.

Akar penyebab: String.prototype.length di JavaScript mengembalikan UTF-16 code unit. Setiap emoji adalah pasangan substitusi (surrogate pair), berharga 2 unit. Setiap karakter astral-plane (simbol matematika, aksara kuno) sama saja.

Perbaikan: Iterasi per codepoint dengan operator spread atau Array.from.

// ❌ wrong
function isUnderTwitterLimit(text) {
  return text.length <= 280;
}

// ✅ correct
function isUnderTwitterLimit(text) {
  return [...text].length <= 280;
}

Untuk pola iterasi codepoint berbasis regex yang lebih dalam (termasuk penanganan grapheme cluster), Regex Cheat Sheet membahas flag /u dan /v serta Unicode property escapes.

Kesalahan 2: Memecah teks CJK pada spasi untuk hitungan kata

Gejala: Artikel berbahasa Mandarin 500 karakter dilaporkan sebagai 1 kata. Kutipan harga penerjemahan berdasarkan itu meleset 500x.

Akar penyebab: Bahasa CJK tidak memakai spasi-kata. text.split(/\s+/) mengembalikan satu token yang berisi seluruh esai.

Perbaikan: Hitung setiap ideograf CJK sebagai satu kata. Itu konvensi yang dipakai Microsoft Word, Google Docs, dan setiap pengolah kata CJK asli.

function countWordsMixed(text) {
  const cjk = (text.match(/[一-鿿぀-ヿ가-힯]/g) || []).length;
  const latin = (text
    .replace(/[一-鿿぀-ヿ가-힯]/g, ' ')
    .match(/[A-Za-z0-9]+(?:['’-][A-Za-z0-9]+)*/g) || []).length;
  return cjk + latin;
}

Rentang Unicode mencakup CJK Unified Ideographs (U+4E00 sampai U+9FFF), Hiragana dan Katakana (U+3040 sampai U+30FF), dan Hangul Syllables (U+AC00 sampai U+D7AF); empat blok yang dihitung sebagai ideograf oleh hitungan kata Microsoft Word.

Kesalahan 3: Melupakan substitusi 23-karakter URL Twitter

Gejala: Sebuah draf menunjukkan 320 karakter di penghitung Anda, termasuk URL 80 karakter. Anda menghabiskan 10 menit memotongnya, hanya untuk menyadari Twitter akan menerima yang asli pada 263 karakter.

Akar penyebab: Twitter mengganti setiap URL dengan tautan t.co 23 karakter saat publikasi. Penghitung mentah Anda tidak tahu.

Perbaikan: Pra-hitung panjang yang dipublikasikan menggunakan raw − URL_length + 23 untuk setiap URL. Untuk draf dengan beberapa URL, jumlahkan koreksinya. Deteksi URL pada konten yang dipublikasikan mengikuti RFC 3986, aturan parsing yang sama yang ditelusuri panduan URL Encoding & Decoding.

Kesalahan 4: Menulis meta description sampai 320 karakter (panduan lama)

Gejala: Anda menyusun meta description 280 karakter dengan CTA di akhir. Di hasil pencarian Google, deskripsi terpotong di tengah kalimat pada karakter 158 dan CTA tidak pernah muncul.

Akar penyebab: Antara Desember 2017 dan Mei 2018, Google sebentar memperluas tampilan meta description menjadi 320 karakter. Banyak tutorial SEO masih mengutip angka itu. Google kembali ke ~160 pada pertengahan 2018 dan tetap di sana sejak itu.

Perbaikan: Tulis sampai 150-160 karakter. Letakkan kata kunci utama di 30 karakter pertama dan CTA di 30 karakter terakhir. Pakai simulator SERP yang akurat piksel untuk halaman bertaruh tinggi; glif lebar (W, M, K) menggerogoti anggaran lebih cepat daripada yang sempit (i, l, t).

Kesalahan 5: Mencampur 280 karakter dengan 280 kata

Gejala: Seseorang di tim menulis “kita butuh tweet 280 kata” dan menghasilkan 1.500 karakter prosa yang sebenarnya baik. Tweet tersebut tidak bisa diposting.

Akar penyebab: Kebingungan karakter vs kata. Kedua satuan berbeda sekitar 5-6x untuk prosa Inggris.

Perbaikan: Patok aturan per platform. Twitter, SMS, dan meta SEO menghitung karakter. NaNoWriMo, tugas akademik, kontrak penerjemahan, dan sebagian besar brief content-marketing menghitung kata. Jika ragu, periksa penghitung platform itu sendiri (kotak komposisi Twitter, Review > Word Count di Word) sebelum mengunci spek.

Kesalahan 6: Menempel kutip pintar yang tanpa sadar mengalihkan SMS ke UCS-2

Gejala: Anda menyalin template tanda terima pelanggan dari Google Doc ke pengirim SMS Anda. Aslinya 145 karakter dan terkirim sebagai satu segmen GSM-7. Setelah ditempel, masih 145 karakter yang sama tetapi ditagih sebagai 2 segmen UCS-2. Biaya menjadi dua kali lipat di kampanye sejuta pesan.

Akar penyebab: Google Docs dan Word otomatis mengubah " dan ' menjadi kutip tipografer " " dan ' '. Kutip itu tidak ada di set karakter GSM-7, yang mengalihkan seluruh pesan ke UCS-2.

Perbaikan: Normalkan sebelum mengirim:

function toGsm7Quotes(s) {
  return s
    .replace(/[“”]/g, '"')   // " " → "
    .replace(/[‘’]/g, "'")   // ' ' → '
    .replace(/[–—]/g, '-');  // – — → -
}

Jalankan ini sebelum pengiriman yang sensitif terhadap penagihan. Twilio, MessageBird, dan Bandwidth semuanya mengekspos field encoding di respons; log itu dan beri peringatan saat UCS-2 muncul di template yang Anda maksudkan sebagai GSM-7.

FAQ

Apa perbedaan antara hitungan karakter dan hitungan kata?

Hitungan karakter menghitung setiap karakter termasuk spasi, tanda baca, dan emoji, diukur per titik kode (codepoint) Unicode di sebagian besar platform modern. Hitungan kata menghitung token yang dipisahkan spasi untuk aksara Latin dan dihitung ideograf demi ideograf untuk CJK. Twitter, SMS, dan meta description SEO memakai hitungan karakter. Esai akademik, naskah NaNoWriMo, dan invoice penerjemahan memakai hitungan kata.

Mengapa Twitter menghitung emoji sebagai 1 karakter tetapi JavaScript menghitungnya 2?

Twitter mengukur per titik kode (codepoint) Unicode: setiap emoji satu codepoint, satu karakter. string.length di JavaScript mengukur unit kode UTF-16. Sebagian besar emoji berada di atas U+FFFF dan dikodekan sebagai pasangan substitusi (surrogate pair) di UTF-16, jadi mereka memakan dua code unit dan .length mengembalikan 2. Pakai [...text].length atau Array.from(text).length untuk mendapatkan hitungan codepoint yang sebenarnya dihitung Twitter.

Mengapa batas karakter SMS kadang 160 dan kadang 70?

SMS memakai pengkodean 7-bit GSM-7 secara default, memberi 160 karakter dalam payload 140 byte. Jika pesan mengandung karakter non-GSM-7 (emoji, kutip pintar, CJK, Latin beraksen di luar set kecil), seluruh pesan beralih ke pengkodean UCS-2 16-bit dan batas per segmen turun menjadi 70 karakter. Satu emoji di mana pun dalam pesan memicu peralihan.

Berapa panjang meta description ideal di 2026?

Targetkan 150-160 karakter. SERP desktop Google memotong sekitar 155-165 tergantung lebar piksel tampilan; mobile memangkas antara 100 dan 120. Di bawah 120 karakter Google sering mengganti deskripsi Anda seluruhnya dengan bagian dari isi halaman. Awali dengan kata kunci utama di 30 karakter pertama dan akhiri dengan CTA di 30 karakter terakhir, agar pesan tetap aman dari pemangkasan di kedua arah.

Apakah batas karakter mencakup spasi dan emoji?

Ya, di hampir setiap platform. Spasi, line break, tanda baca, dan emoji masing-masing dihitung sebagai satu codepoint Unicode. Dua pengecualian yang perlu diketahui: SMS, di mana emoji memicu peralihan encoding seperti di atas, dan Bluesky yang menghitung grapheme cluster sehingga emoji multi-codepoint seperti keluarga 👨‍👩‍👧‍👦 berharga 1 karakter alih-alih 7.

Bagaimana hitungan kata dihitung untuk teks Tionghoa, Jepang, Korea?

Setiap ideograf CJK dihitung sebagai satu kata: konvensi yang dipakai hitungan kata mode Tionghoa Microsoft Word, Google Docs, editor CJK asli, dan setiap sistem translation memory komersial. Esai Mandarin 500 karakter dilaporkan sebagai 500 kata. Teks campuran menghitung ideograf CJK per karakter dan token Latin per spasi, lalu menjumlahkan keduanya.

Bagaimana Twitter menangani panjang URL dalam batas 280 karakter?

Twitter otomatis membungkus setiap URL ke dalam short link t.co 23 karakter saat publikasi, sepanjang apa pun aslinya. Panjang yang dipublikasikan mengikuti rumus published = raw − URL_length + 23 per URL. Draf 320 karakter yang berisi satu URL 100 karakter dikirim sebagai 243 karakter. Twitter mengenali URL berdasarkan pola RFC 3986, jadi query string dan fragment terserap ke dalam token URL.

Bacaan terkait

Artikel Terkait

Lihat semua artikel