WhatsApp vs Telegram in Kenya: Why usage patterns are changing across Africa
WhatsApp vs Telegram in Kenya: Why usage patterns are changing across Africa
Read this story aloud
Listen to the clean text version of this article
Ready
6 min listen
Audio reading is not supported on this browser.
In Kenya, this distinction is becoming clearer. WhatsApp remains dominant across the general population, but Telegram is steadily growing as a niche platform for specific user groups
WhatsApp remains the most widely used messaging platform in Kenya, even as Telegram gains traction among younger users, tech communities, and interest-based groups.
However, available data shows that the “migration” narrative is more nuanced and WhatsApp is still dominant, while Telegram is growing in specific digital spaces rather than replacing it or reaching a wider range of audiences.
WhatsApp still leads in Kenya
More To Read
- WhatsApp usernames raise impersonation concerns days after rollout
- Court freezes auction as judge weighs whether WhatsApp grey ticks prove legal service
- Social media overtakes traditional media as Kenyans’ main news source – report
- Family seeks answers over whereabouts of Mombasa woman arrested in DCI national security probe
- WhatsApp announces it’s introducing usernames to boost privacy
- WhatsApp rolls out new warning feature to help users spot scammers
According to recent Communications Authority of Kenya (CA)-linked digital usage data, WhatsApp continues to dominate Kenya’s social messaging ecosystem. About 86.8 per cent of Kenyan social media users use WhatsApp as their primary messaging platform for business, work, or personal communication.
Globally, WhatsApp has established itself as the world’s dominant messaging platform, with more than 3.3 billion monthly users and handling over 150 billion messages every day, reinforcing its position as a core communication tool worldwide.
More recent CA-based reporting still places WhatsApp at the top, in Kenya, with around 53.9 per cent active usage in quarterly tracking, reflecting slight fluctuations but sustained dominance in Kenya’s digital communication space.
Latest Stories
- Judiciary to publish individual performance reports for judges in transparency push
- UNHCR warns escalating Lake Chad violence driving sharp rise in displacement
- Kenya expands Kaptagat Forest Restoration model to Mau and Cherangany
- UN to close Burkina Faso rights office in November after government suspension
Even with minor declines in usage share, WhatsApp remains deeply embedded in daily communication in Kenya.
This dominance is driven by its strong integration into everyday life, including:
Personal chats and family communication
Business and customer service interactions
School and community coordination groups
Low data consumption and ease of use
Overall, WhatsApp continues to function as the default messaging platform for most Kenyans, supported by its widespread adoption and network effect.
Telegram is growing, but in niche segments
Telegram, while smaller globally than WhatsApp, has been steadily growing in popularity due to its advanced features.
Globally:
WhatsApp has over 2 billion users worldwide, while Telegram has over 800 million monthly active users.
Telegram is especially strong in Eastern Europe and parts of Asia.
Ethiopia vs Kenya: A clear regional contrast
In Africa, its usage varies widely depending on the country context. One of the most striking differences in Africa is between Kenya and Ethiopia.
For example, in Ethiopia, Telegram is widely used for public communication and as an information-sharing platform. Early adoption in universities and digital communities helped it grow into a broader ecosystem for:
News channels
Educational content
Large public discussion groups
Business promotion networks
Some digital analyses even note that Ethiopia is one of the few countries where Telegram usage rivals or surpasses WhatsApp in certain online spaces.
In contrast, Kenya’s messaging ecosystem is more “locked in”. WhatsApp is the default app for nearly all age groups.
Telegram is now used mainly by niche communities (tech, crypto, file-sharing groups, online forums), and many people do not know how to use Telegram or its benefits.
Even so, switching costs remain high due to WhatsApp’s network effect in the country.
Why Telegram is attractive to some Kenyans
Other Topics To Read
Despite WhatsApp’s dominance, Telegram is growing among specific users for several reasons:
Larger group sizes and public channels
Easier file sharing (including large files)
Cloud-based messaging across devices
It has more privacy controls and username-based interaction, meaning you cant share your phone number, which is sensitive data information.
Advertisement
“Telegram is better for communities and learning groups. WhatsApp is for daily communication, but Telegram feels more open; I can interact with strangers and not have my phone number out with someone else. It is also not easy to screenshot messages.” Lewis Kiarie, a 24-year-old Kenyatta University student, said.
“We also use Telegram for sharing notes and files. WhatsApp is too limited for that.”
Security, privacy, and concerns
Telegram’s flexibility has also created both opportunities and challenges globally.
In countries like India, regulators have at times raised concerns about how messaging platforms can be used to coordinate fraud networks, spread misinformation, and run large-scale anonymous groups, leading to periodic scrutiny and enforcement discussions around platform accountability.
Experts increasingly argue that WhatsApp and Telegram should not be viewed as competing substitutes, but rather as platforms serving different communication needs in the digital era.
WhatsApp remains primarily focused on personal communication, with tightly controlled groups, familiar contacts, and simple messaging designed for everyday conversations. Its strength lies in reliability, simplicity, and its deep integration into social and family networks.
Telegram, however, has evolved into a platform built around large-scale communication and communities. It supports massive group sizes, communities, public channels, bots, and broadcast-style messaging, making it more suitable for content distribution, online learning groups, tech communities, and interest-based networks.
Its ability to handle large files and host information-heavy channels has also made it popular among digital creators and organised online communities.
In Kenya, this distinction is becoming clearer. WhatsApp remains dominant across the general population, but Telegram is steadily growing as a niche platform for specific user groups, particularly tech-savvy users, students, traders, and online communities that require more advanced features than traditional messaging allows.
Rather than a direct competition, the two platforms now reflect a broader shift in digital behaviour: WhatsApp as the everyday communication backbone, and Telegram as a growing ecosystem for specialised, information-driven online communities.
This makes switching platforms less about features and more about convenience.
Top Stories Today
- Judiciary to publish individual performance reports for judges in transparency push
- Benchmark food prices down for second consecutive month in June
- UNHCR warns escalating Lake Chad violence driving sharp rise in displacement
- Kenya expands Kaptagat Forest Restoration model to Mau and Cherangany
- UN to close Burkina Faso rights office in November after government suspension
- Captain Riyad Mahrez announces retirement after Algeria World Cup exit
`;
}
return “;
}
function commentActionsMarkup(comment, canComment) {
const likeLabel = comment.liked_by_me ? ‘Liked’ : ‘Like’;
const likeCount = Number(comment.like_count || 0) > 0
? “
: ”;
const likeButton = canComment && comment.status === ‘approved’
? “
: “;
const replyButton = canComment && comment.status === ‘approved’
? “
: ”;
return `
`;
}
function commentMarkup(comment, canComment, isReply = false) {
const pendingBadge = comment.status && comment.status !== ‘approved’
? “
: ”;
const edited = comment.is_edited
? “
: ”;
const repliesHtml = Array.isArray(comment.replies) && comment.replies.length
? `
`
: “;
return `
`;
}
function replyFormMarkup(commentId) {
return `
`;
}
function setNotice(widget, message, type = ‘info’) {
const notice = widget.querySelector(‘[data-role=”notice”]’);
if (!notice) return;
if (!message) {
notice.hidden = true;
notice.textContent = ”;
notice.classList.remove(‘is-error’);
return;
}
notice.hidden = false;
notice.textContent = message;
notice.classList.toggle(‘is-error’, type === ‘error’);
}
function setCount(widget, total) {
const count = widget.querySelector(‘[data-role=”count”]’);
if (!count) return;
const num = Number(total || 0);
count.textContent = num === 1 ? ‘1 comment’ : `${num} comments`;
}
function openReplyBox(widget, commentId) {
widget.querySelectorAll(‘[data-role=”reply-box”]’).forEach(box => {
box.hidden = true;
box.innerHTML = ”;
});
const targetItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (!targetItem) return;
const replyBox = targetItem.querySelector(‘[data-role=”reply-box”]’);
if (!replyBox) return;
replyBox.hidden = false;
replyBox.innerHTML = replyFormMarkup(commentId);
const textarea = replyBox.querySelector(‘textarea’);
if (textarea) textarea.focus();
}
function closeReplyBox(container) {
if (!container) return;
container.hidden = true;
container.innerHTML = ”;
}
async function initCommentsWidget(widget) {
const state = {
articleId: Number(widget.dataset.articleId),
loadUrl: widget.dataset.loadUrl,
storeUrl: widget.dataset.storeUrl,
commentsBaseUrl: widget.dataset.commentsBaseUrl,
canComment: widget.dataset.canComment === ‘1’,
page: 1,
perPage: 10,
sort: ‘newest’,
total: 0,
hasMore: false,
busy: false
};
const list = widget.querySelector(‘[data-role=”list”]’);
const loading = widget.querySelector(‘[data-role=”loading”]’);
const empty = widget.querySelector(‘[data-role=”empty”]’);
const loadMoreBtn = widget.querySelector(‘[data-role=”load-more”]’);
const sortSelect = widget.querySelector(‘[data-role=”sort”]’);
const composerForm = widget.querySelector(‘[data-role=”composer-form”]’);
async function loadComments(reset = true) {
if (state.busy) return;
state.busy = true;
setNotice(widget, ”);
loading.hidden = false;
if (reset) {
state.page = 1;
list.innerHTML = ”;
empty.hidden = true;
}
try {
const url = new URL(state.loadUrl, window.location.origin);
url.searchParams.set(‘page’, state.page);
url.searchParams.set(‘per_page’, state.perPage);
url.searchParams.set(‘sort’, state.sort);
const response = await requestJson(url.toString(), {
method: ‘GET’,
headers: {
‘Accept’: ‘application/json’,
‘X-Requested-With’: ‘XMLHttpRequest’
}
});
const items = Array.isArray(response.data) ? response.data : [];
const meta = response.meta || {};
state.total = Number(meta.total || 0);
state.hasMore = !!meta.has_more;
setCount(widget, state.total);
if (reset) {
list.innerHTML = ”;
}
if (!items.length && reset) {
empty.hidden = false;
} else {
empty.hidden = true;
list.insertAdjacentHTML(
‘beforeend’,
items.map(item => commentMarkup(item, state.canComment, false)).join(”)
);
}
loadMoreBtn.hidden = !state.hasMore;
} catch (error) {
if (!list.children.length) {
empty.hidden = false;
empty.textContent = ‘Unable to load comments right now.’;
}
setNotice(widget, error.message || ‘Unable to load comments.’, ‘error’);
} finally {
loading.hidden = true;
state.busy = false;
}
}
async function submitTopLevelComment(form) {
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘[data-role=”submit-comment”]’);
if (!textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(state.storeUrl, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
textarea.value = ”;
if (response?.data) {
list.insertAdjacentHTML(
‘afterbegin’,
commentMarkup(response.data, state.canComment, false)
);
empty.hidden = true;
if ((response.data.status || ”) === ‘approved’) {
state.total += 1;
setCount(widget, state.total);
}
}
setNotice(widget, response.message || ‘Comment posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post comment.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post comment’;
}
}
}
async function submitReply(form) {
const commentId = Number(form.dataset.commentId || 0);
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘.ev-comments__reply-submit’);
if (!commentId || !textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/reply`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
if (response?.data) {
const parentItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (parentItem) {
const repliesWrap = parentItem.querySelector(‘.ev-comments__replies’);
if (repliesWrap) {
repliesWrap.insertAdjacentHTML(
‘beforeend’,
commentMarkup(response.data, state.canComment, true)
);
}
}
}
closeReplyBox(form.closest(‘[data-role=”reply-box”]’));
setNotice(widget, response.message || ‘Reply posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post reply.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post reply’;
}
}
}
async function toggleLike(button) {
const commentId = Number(button.dataset.commentId || 0);
if (!commentId) return;
const originalHtml = button.innerHTML;
try {
button.disabled = true;
button.innerHTML = ‘Working…’;
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/like`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({})
});
const liked = !!response?.data?.liked;
const likeCount = Number(response?.data?.like_count || 0);
button.classList.toggle(‘is-liked’, liked);
button.innerHTML = `${liked ? ‘Liked’ : ‘Like’} ${likeCount > 0 ? “ : ”}`;
} catch (error) {
button.innerHTML = originalHtml;
setNotice(widget, error.message || ‘Unable to update like.’, ‘error’);
} finally {
button.disabled = false;
}
}
if (composerForm) {
composerForm.addEventListener(‘submit’, function (e) {
e.preventDefault();
submitTopLevelComment(composerForm);
});
}
if (sortSelect) {
sortSelect.addEventListener(‘change’, function () {
state.sort = this.value || ‘newest’;
loadComments(true);
});
}
if (loadMoreBtn) {
loadMoreBtn.addEventListener(‘click’, function () {
if (state.busy || !state.hasMore) return;
state.page += 1;
loadComments(false);
});
}
widget.addEventListener(‘click’, function (e) {
const likeBtn = e.target.closest(‘[data-action=”toggle-like”]’);
if (likeBtn) {
e.preventDefault();
toggleLike(likeBtn);
return;
}
const replyBtn = e.target.closest(‘[data-action=”toggle-reply”]’);
if (replyBtn) {
e.preventDefault();
openReplyBox(widget, Number(replyBtn.dataset.commentId || 0));
return;
}
const cancelReplyBtn = e.target.closest(‘[data-action=”cancel-reply”]’);
if (cancelReplyBtn) {
e.preventDefault();
closeReplyBox(cancelReplyBtn.closest(‘[data-role=”reply-box”]’));
}
});
widget.addEventListener(‘submit’, function (e) {
const replyForm = e.target.closest(‘.ev-comments__reply-form’);
if (replyForm) {
e.preventDefault();
submitReply(replyForm);
}
});
loadComments(true);
}
document.addEventListener(‘DOMContentLoaded’, function () {
document.querySelectorAll(‘.ev-comments’).forEach(initCommentsWidget);
});
})();
Trending
Judiciary to publish individual performance reports for judges in transparency pushNational
|Carolyne Kubwa
|19 minutes ago
World Met Organisation warns strong El Niño could trigger extreme weather worldwideClimate Change
|Bashir Mbuthia
|13 hours ago
Kisumu unveils six-point plan to tackle goons, bans private security at political ralliesNews
|Rachael Mutabasi
|2 days ago
Kenya expands Kaptagat Forest Restoration model to Mau and CheranganySports
|Bashir Mbuthia
|7 hours ago
MPs raise alarm over missing land records, vehicle logbooks at State Department for LabourNews
|Rachael Mutabasi
|15 hours ago
Uganda welcomes first batch of evacuees from South AfricaNews
|Mary Wambui
|19 hours ago
From burgers to batteries: Viral X trend imagines a world where everything is downloadableTechnology
|Margaret Wanjiru
|15 hours ago
UN Rights Chief Volker Türk issues ‘Red Alert’ over escalating violence in Sudan’s El ObeidNews
|Mary Wambui
|16 hours ago
KFS announces public participation on Imenti Forest airstrip despite court caseNews
|Rachael Mutabasi
|19 hours ago
Gor Mahia set for CECAFA Kagame Cup return after league title triumphSports
|Erick Kariuki
|10 hours ago
