Close Menu
    Facebook X (Twitter) Instagram
    • Home
    • Contact Us
    • About Us
    • Privacy Policy
    • Terms Of Service
    • Advertisement
    Thursday, July 23
    Facebook X (Twitter) Instagram Pinterest Vimeo
    ABS Africa TV
    • Breaking News
    • Trending
    • Africa News
    • World News
    • Features
    • Technology
    • More
      • Sports
      • Politics
      • Culture
      • Lifestyle
      • Travel
      • Business
      • Environment
      • Legal
      • Health
      • Cameroon
      • Ambazonia
      • AfroSingles
      • Environ/Climate
      • Editorial
      • The Leak Magazine
    • Donate
    Subscription
    ABS Africa TV
    Home»Politics»Top 10 African countries at highest risk of electoral violence in 2026–2027
    Politics

    Top 10 African countries at highest risk of electoral violence in 2026–2027

    Chukwu GodloveBy Chukwu GodloveJuly 22, 2026No Comments8 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    Share
    Facebook Twitter LinkedIn Pinterest Email
    Post Views: 14

    Listen to article

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

    Thanks for listening. Continue with a related story, or tap the speaker icon on the next page to listen.

    DCI to probe violence and armed goons in Ol Kalou by-election, says Murkomen

    Rachael Mutabasi

     · 

    2 days agoRead nextOpens a fresh page.

    Kenya ranks 16th in Africa, with a Risk Index of 43.9, indicating a lower risk than the continent’s top-ranked countries but remaining among African nations identified in the index.

    Equatorial Guinea tops Africa in the Kofi Annan Foundation’s 2026–2027 Electoral Vulnerability Index, followed by Burundi and the Republic of the Congo. Somalia, Zambia, South Sudan, Libya, Ethiopia, Nigeria and Niger complete the top 10.
    Kenya ranks 16th in Africa, with a Risk Index of 43.9, indicating a lower risk than the continent’s top-ranked countries but remaining among African nations identified in the index.
    The Electoral Vulnerability Index assesses the likelihood of election-related violence based on political, security and governance indicators, helping identify countries that may require stronger conflict prevention measures ahead of elections.

    More To Read

    • DCI to probe violence and armed goons in Ol Kalou by-election, says Murkomen
    • Ol Kalou violence: Amnesty Kenya wants CS Murkomen to account for police failure during polls
    • Government orders probe into Ol Kalou by-election violence after journalists attacked
    • IEBC defends failure to punish early campaigns, cites legal limits
    • Ol Kalou by-election: Campaigns enter final hours ahead of 6pm deadline

    Latest Stories

    • Why children learn English more easily with the help of their home language – Namibian study
    • Saudi Arabia launches one-year multiple-entry Umrah visa for pilgrims
    • Nicolas Maduro, US Justice Department propose starting trial in June 2027
    • 189 children dead, 476 infected in DRC Ebola outbreak – Save the Children

    Other Topics To Read

    • African countries at highest risk of electoral violence in 2026–2027
    • Electoral Vulnerability Index
    • Election Violence
    • electoral violence

    Top Stories Today

    • Ruto appoints Muchina to Nairobi Rivers Commission days after Ol Kalou by-election defeat
    • Kenya’s digital infrastructure won’t create jobs without human-centred innovation, experts say
    • Saudi Arabia launches one-year multiple-entry Umrah visa for pilgrims
    • Nicolas Maduro, US Justice Department propose starting trial in June 2027
    • 189 children dead, 476 infected in DRC Ebola outbreak – Save the Children
    • Judges’ association urges LSK to end boycott, warns of denied justice

    `;
    }

    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

    Kenya plans 8,000km grid expansion as it woos Chinese clean energy investorsNews
    |Margaret Wanjiru
    |4 hours ago

    Saudi Arabia launches one-year multiple-entry Umrah visa for pilgrims

    Saudi Arabia launches one-year multiple-entry Umrah visa for pilgrimsWorld
    |Farhiya Hussein
    |30 minutes ago
    Judges’ association urges LSK to end boycott, warns of denied justiceNews
    |Carolyne Kubwa
    |1 hour ago
    Ruto appoints Samuel Muchina to Nairobi Rivers Commission days after Ol Kalou by-election defeatNews
    |Rachael Mutabasi
    |1 hour ago
    Kajiado County found liable for rights violations over “shoddy” road project, High Court rulesNews
    |Carolyne Kubwa
    |2 hours ago

    Government steps up scholarship verification after students falsify family details to secure higher support

    Government steps up scholarship verification after students falsify family details to secure higher supportNews
    |Lucy Mumbi
    |1 day ago
    Top 10 African countries at highest risk of electoral violence in 2026–2027Infographics
    |Charity Pancras
    |46 minutes ago
    Sakaja’s cabinet approves construction of phase one underground rail linking CBD to EastlandsNews
    |Lucy Mumbi
    |3 hours ago
    Israeli attacks on Gaza intensify amid surge of West Bank settler violenceMiddle-East
    |UN News
    |7 hours ago
    Health unions threaten prolonged strike over Sh8.9 billion UHC workers employment planHealth
    |Charity Kilei
    |1 day ago

    African countries Electoral highest risk
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Chukwu Godlove

    Related Posts

    Kenyan Govt Orders Nationwide Crackdown on Violent Gangs

    July 23, 2026

    Ghana: Mahama urges African leaders to end aid dependence, fund healthcare from national budgets

    July 23, 2026

    Palestinian election commission announces timetable for Nov. 28 legislative vote

    July 23, 2026
    Leave A Reply Cancel Reply

    Search
    Latest Post

    Europe’s century of catastrophe need not have happened

    July 23, 2026

    Video: ‘Don’t let me die’ – ailing Nollywood actress Ngozi Nwosu appeals for help

    July 23, 2026

    12 Off-The-Beaten

    July 23, 2026

    Kenyan Govt Orders Nationwide Crackdown on Violent Gangs

    July 23, 2026

    Five key facts about Wafcon 2026

    July 23, 2026

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    • Facebook
    • Twitter
    • Pinterest
    • Instagram
    • YouTube
    • TikTok
    ABS TV and ABS Network News is a leading Pan-African 24/7 broadcasting network delivering nonstop news, talk shows, lifestyle programs, and digital media content worldwide through Satellite, Streaming Platforms, and Roku TV.
     
    Based in the United States, we connect Africa to the world while empowering creators, journalists, and brands through innovative media and broadcasting services.
    Facebook X (Twitter) Pinterest WhatsApp Instagram

    Our Picks

    Europe’s century of catastrophe need not have happened

    Video: ‘Don’t let me die’ – ailing Nollywood actress Ngozi Nwosu appeals for help

    12 Off-The-Beaten

    Most Popular

    Kenyan Govt Orders Nationwide Crackdown on Violent Gangs

    Five key facts about Wafcon 2026

    Cognizant and Gulf Edge Launch Strategic AI & Services Partnership to Accelerate Thailand’s AI Transformation

    © 2026 Copyright. All Rights Reserved by ABSAFRICATV
    • Privacy Policy
    • Terms of Services

    Type above and press Enter to search. Press Esc to cancel.

    We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.