Kenya climbs to sixth place in Africa’s digital rights ranking

Kenya climbs to sixth place in Africa’s digital rights ranking

AI chip. Africa needs AI legislation. (Photo: Magnific)

Read this story aloud

Listen to the clean text version of this article

Ready
4 min listen
Audio reading is not supported on this browser.

The report, regarded as the most comprehensive assessment of digital rights and inclusion in Africa, evaluated 29 countries across Central, East, North, South and West Africa

Kenya has climbed three places to rank sixth in Africa in the latest Digital Rights and Inclusion in Africa (Londa) Report.
The ranking underscores the country’s growing influence in advancing internet freedoms, digital inclusion and technology governance across the continent.
The report, regarded as the most comprehensive assessment of digital rights and inclusion in Africa, evaluated 29 countries across Central, East, North, South and West Africa.

More To Read

  • Google to ban chrome extensions that ‘jailbreak’ AI chatbots
  • Anthropic launches Claude Science AI platform to accelerate scientific research
  • UNICEF cautions that children are adopting AI three times faster than adults
  • Cloudflare sets deadline for AI bots as newspaper publishers push for fair compensation
  • Young Africans are turning to AI for emotional support: Is policy keeping up?
  • UN report: World risks losing control as artificial intelligence advances at breakneck speed

Kenya improved from ninth position in the 2024 rankings to sixth place in the 2025 edition, placing it among the continent’s leading performers in the digital space.
According to the report compiled by Paradigm Initiative, South Africa retained its position as Africa’s leading digital rights-respecting country for the second consecutive year.
Ghana, Namibia, Senegal, Egypt and Zambia occupied the positions ahead of Kenya, while Rwanda, Malawi and Nigeria completed the top ten rankings.

Latest Stories

  • Somali Embassy hosts Kenya leaders, diplomats for 66th Independence Day celebrations
  • UN reviews impact as US ends support for AUSSOM logistics
  • Protest victims decry exclusion from government compensation programme despite registration
  • Nyaribari Chache MP Zaheer Jhanda summoned as police widen probe into Kisii political violence

Kenya scored 37 out of a possible 60 points, representing a three-point improvement from last year.
The score places the country in the category of nations that are moderately compliant with international digital rights standards, although it remains below South Africa’s benchmark score of 47 points.
The report notes that Kenya continues to stand out for its vibrant media environment despite ongoing challenges facing journalists and media practitioners.
“Kenya’s media landscape is among the most vibrant on the continent, though journalists face harassment and intimidation, and press-freedom restricting laws remain on the books,” reads the report.
Within East Africa, only Kenya and Rwanda featured among the continent’s top ten performers.
Rwanda maintained its score of 36 out of 60, benefiting from strong infrastructure and e-government performance but recording weaker results in areas such as freedom of expression and arbitrary arrests.
Kenya was found to perform slightly better overall, particularly in judicial independence and emerging technology strategy.
Despite the improved ranking, the report highlights several areas requiring urgent attention.
It calls on the Kenyan government to halt internet throttling and disruptions during protests, review provisions of the Computer Misuse and Cybercrimes Amendment Act 2024, strengthen the enforcement capacity of the Office of the Data Protection Commissioner and develop a comprehensive regulatory framework for Artificial Intelligence.
The report also urges authorities to address the persistent digital divide between urban and rural communities.
Further recommendations include establishing harmonised regulations governing cross-border data transfers, data localisation and cloud service contracts to safeguard public and sensitive data under Kenyan law.
The report also advocates for expanded affordable internet access through increased investment in infrastructure targeting rural, informal and marginalised areas.
Named after the Zulu word “Londa,” meaning “to protect or defend,” the annual report serves as a benchmark for measuring progress and setbacks in digital rights protection across Africa.
This while drawing attention to emerging risks and opportunities in the continent’s digital transformation journey.

Other Topics To Read

Top Stories Today

  • Nyaribari Chache MP Zaheer Jhanda summoned as police widen probe into Kisii political violence
  • Somali Embassy hosts Kenya leaders, diplomats for 66th Independence Day celebrations
  • UN reviews impact as US ends support for AUSSOM logistics
  • Protest victims decry exclusion from government compensation programme despite registration
  • Machakos Mitumba Market traders suffer heavy losses after midnight fire
  • Kenyans urged to join Saba Saba march to honour victims of alleged abductions, killings

`;
}

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

Nyaribari Chache MP Zaheer Jhanda summoned as police widen probe into Kisii political violenceNews
|Lucy Mumbi
|1 hour ago
Kenyans urged to join Saba Saba march to honour victims of alleged abductions, killingsNews
|Lucy Mumbi
|2 hours ago
Mbappé fires France past Paraguay into World Cup quarter-finalsSports
|Erick Kariuki
|5 hours ago
Serena Williams withdraws from Wimbledon doubles after knee injury, ending Venus reunion plansSports
|Bashir Mbuthia
|13 hours ago

UN reviews impact as US ends support for AUSSOM logisticsSomalia
|Abdirahman Khalif
|47 minutes ago
Cherotich, Odira shine as Kenya dominates Prefontaine Classic despite rare Kipyegon defeatSports
|Erick Kariuki
|5 hours ago

Protest victims decry exclusion from government compensation programme despite registrationNews
|Lucy Mumbi
|1 hour ago
Messi makes history as Argentina survive Cape Verde’s unforgettable World Cup fightNews
|Erick Kariuki
|1 day ago

Report records 83 harassment incidents against Christians in Israel over three monthsMiddle-East
|Bashir Mbuthia
|14 hours ago

Weight-loss drug Wegovy approved in UK for MASH-related liver fibrosisNews
|Charity Kilei
|22 hours ago

Share.
Leave A Reply

Exit mobile version