Cara Menghitung Kata, Karakter, dan Baris pada Teks
Menghitung kata terdengar sepele sampai kamu menemui edge case: apakah kata bercetak-hubung dihitung satu atau dua? Apakah URL dihitung? Bagaimana dengan teks dalam beberapa bahasa? Panduan ini mencakup metode penghitungan akurat untuk setiap lingkungan.
Di browser
Tempel teks ke word counter dan dapatkan hitungan instan berupa kata, karakter, karakter tanpa spasi, kalimat, paragraf, dan perkiraan waktu baca. Diperbarui saat kamu mengetik — berguna ketika kamu menulis dengan batas tertentu (thread Twitter/X, aplikasi beasiswa, pengiriman artikel).
Apa yang dihitung sebagai kata?
Definisi standar: rangkaian karakter non-whitespace yang dipisahkan oleh whitespace. Dengan definisi ini:
halo dunia→ 2 katawell-known→ 1 kata (kata bercetak-hubung)C++→ 1 katahttps://example.com/path?q=1→ 1 kata"teks dalam kutipan"→ 3 kata (tanda baca melekat pada kata yang berdekatan)
Untuk kebanyakan tujuan ini sudah tepat. Jika perlu mengecualikan URL, hapus dulu sebelum menghitung.
JavaScript
Hitung kata dasar:
function wordCount(text) {
return text.trim().split(/\s+/).filter(Boolean).length;
}
console.log(wordCount("Halo dunia")); // 2
console.log(wordCount(" spasi banyak ")); // 2
console.log(wordCount("")); // 0
filter(Boolean) menghapus string kosong yang muncul dari beberapa spasi berturutan atau whitespace di awal/akhir.
Statistik lengkap:
function textStats(text) {
return {
characters: text.length,
charactersNoSpaces: text.replace(/\s/g, '').length,
words: text.trim() === '' ? 0 : text.trim().split(/\s+/).length,
sentences: (text.match(/[.!?]+/g) || []).length,
paragraphs: text.trim() === '' ? 0 : text.trim().split(/\n\s*\n/).length,
readingTimeMinutes: Math.ceil(text.trim().split(/\s+/).length / 200),
};
}
const stats = textStats("Halo dunia. Ini adalah tes.\n\nParagraf kedua.");
console.log(stats);
// {
// characters: 46,
// charactersNoSpaces: 38,
// words: 8,
// sentences: 2,
// paragraphs: 2,
// readingTimeMinutes: 1
// }
Waktu baca menggunakan 200 kata per menit (rata-rata membaca teks online yang umum dikutip; 250 kpm untuk buku).
Frekuensi kata (kata mana yang paling sering muncul):
function wordFrequency(text) {
const words = text.toLowerCase().match(/\b[a-z']+\b/g) || [];
return words.reduce((freq, word) => {
freq[word] = (freq[word] || 0) + 1;
return freq;
}, {});
}
const freq = wordFrequency("the cat sat on the mat the cat");
const sorted = Object.entries(freq).sort((a, b) => b[1] - a[1]);
console.log(sorted);
// [['the', 3], ['cat', 2], ['sat', 1], ['on', 1], ['mat', 1]]
Python
Hitung kata dan karakter:
def text_stats(text: str) -> dict:
words = text.split()
sentences = len([s for s in text.replace('!', '.').replace('?', '.').split('.') if s.strip()])
paragraphs = len([p for p in text.strip().split('\n\n') if p.strip()])
return {
'characters': len(text),
'characters_no_spaces': len(text.replace(' ', '')),
'words': len(words),
'sentences': sentences,
'paragraphs': paragraphs,
'reading_time_minutes': max(1, len(words) // 200),
}
sample = "Halo dunia. Ini adalah tes.\n\nParagraf kedua di sini."
print(text_stats(sample))
Hitung kata dalam file:
def count_words_in_file(filepath: str) -> dict:
with open(filepath, encoding='utf-8') as f:
text = f.read()
return text_stats(text)
print(count_words_in_file('esai.txt'))
Frekuensi kata:
from collections import Counter
import re
def word_frequency(text: str, top_n: int = 10) -> list[tuple[str, int]]:
words = re.findall(r"\b[a-z']+\b", text.lower())
return Counter(words).most_common(top_n)
sample = "the cat sat on the mat the cat"
print(word_frequency(sample))
# [('the', 3), ('cat', 2), ('sat', 1), ('on', 1), ('mat', 1)]
Command line
Linux/macOS:
# Hitung kata
wc -w file.txt
# Hitung baris, kata, karakter
wc file.txt
# output: baris kata karakter namafile
# Hitung kata dalam string
echo "halo dunia" | wc -w
# 2
# Hitung kata di beberapa file, dengan total
wc -w *.txt
Hitung kata unik (ukuran kosakata):
cat file.txt | tr '[:upper:]' '[:lower:]' | tr -cs '[:alpha:]' '\n' | sort | uniq -c | sort -rn | head -20
Pipeline ini: huruf kecil → satu kata per baris → urut → hitung yang unik → urut berdasarkan jumlah.
Python one-liner:
python3 -c "import sys; text=open(sys.argv[1]).read(); print(len(text.split()))" file.txt
Windows PowerShell:
(Get-Content file.txt -Raw).Split() | Where-Object { $_ } | Measure-Object | Select-Object -ExpandProperty Count
Batas karakter umum per platform
| Platform / format | Batas | Yang dihitung |
|---|---|---|
| Twitter / X | 280 karakter | Karakter (bukan kata) |
| SMS | 160 karakter | Karakter per segmen |
| Meta title (SEO) | 50–60 karakter | Karakter |
| Meta description (SEO) | 150–160 karakter | Karakter |
| Postingan LinkedIn | 3.000 karakter | Karakter |
| Caption Instagram | 2.200 karakter | Karakter |
| Artikel Medium (optimal) | 1.500–2.500 kata | Kata |
| Artikel blog (rata-rata SEO) | 1.200–2.500 kata | Kata |
Untuk judul dan deskripsi SEO, jumlah karakter lebih penting dari jumlah kata karena Google memotong berdasarkan lebar piksel (sekitar 580 px untuk judul).
Mengecualikan konten tertentu sebelum menghitung
Hitung kata sambil mengabaikan URL:
function countWordsNoUrls(text) {
const noUrls = text.replace(/https?:\/\/\S+/g, '');
return noUrls.trim().split(/\s+/).filter(Boolean).length;
}
Hitung kata sambil mengabaikan blok kode (Markdown):
import re
def count_words_no_code(markdown: str) -> int:
# Hapus fenced code blocks
no_code = re.sub(r'```[\s\S]*?```', '', markdown)
# Hapus inline code
no_code = re.sub(r'`[^`]+`', '', no_code)
return len(no_code.split())
Ringkasan
- Hitung kata:
text.split()di Python,text.trim().split(/\s+/).filter(Boolean)di JavaScript. - Hitung karakter:
len(text)di Python,text.lengthdi JavaScript. - Command line:
wc -w file.txtdi Linux/macOS. - Waktu baca: jumlah kata dibagi 200, dibulatkan ke atas.
- Untuk metadata SEO, hitung karakter bukan kata — Google memotong berdasarkan lebar piksel.