Kenya among fastest deteriorating food insecurity hotspots as 4.1 million face hunger

Millions of Kenyans face severe food and water shortages as a nationwide drought worsens. (Photo: Kenya Red Cross)

Listen to article

5 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.

Hunger worsens in Kenya as 3.3 million face acute food insecurity

Alfred Onyango

 · 

2 months agoRead nextOpens a fresh page.

Among the affected countries, Kenya recorded one of the largest increases in food insecurity during the second quarter of 2026.

At least 4.1 million people in Kenya are facing acute food insecurity, placing the country among Eastern Africa’s fastest deteriorating humanitarian hotspots as climate shocks, rising prices and regional conflicts continue to worsen the crisis.
A new report by the United Nations Office for the Coordination of Humanitarian Affairs (OCHA) shows that Eastern Africa remains one of the world’s most severe humanitarian hotspots, with 48.5 million people expected to require assistance in 2026.
Among the affected countries, Kenya recorded one of the largest increases in food insecurity during the second quarter of 2026.

More To Read

  • Hunger worsens in Kenya as 3.3 million face acute food insecurity

“Conflict, displacement, climate shocks, disease outbreaks, and food insecurity continue to drive needs, while the potential cross-border spread of Ebola from the DRC poses an additional regional risk,” reads the report.
Kenya was expected to recover from years of climate-related hardship after improved rainfall, recovering livestock herds and better harvest prospects raised hopes that food insecurity would decline.
However, millions of Kenyans continue to struggle to access enough food, with the country now listed among nations that recorded the largest rise in food insecurity during the second quarter alongside South Sudan, Sudan and Tanzania.

Latest Stories

  • Community mediators trained to resolve disputes before they reach court
  • Kenya-Tanzania rail link moves closer as Voi–Taveta project hits 70 per cent
  • ECOWAS backs Ghana’s anti-xenophobia push at AU, endorses reparatory justice agenda
  • Kindiki says political differences should not destroy national unity, urges Kenyans to reject division

The findings show that food emergencies in Eastern Africa are no longer limited to conflict-affected countries, with Kenya becoming part of a wider hunger crisis stretching from northern Tanzania through Kenya and into southern Ethiopia.
Although the number of acutely malnourished children aged between six and 59 months declined from nine million to 8.3 million, OCHA said malnutrition levels remain critically high.
The report shows that Kenya’s food insecurity crisis is being driven by several factors beyond drought, including climate change, rising costs of living, regional conflicts and pressure on food systems.
OCHA also warned that the projected 2026 El Niño cycle could worsen humanitarian conditions across Eastern Africa.
The report said below-average rainfall and extreme heat are expected through September, followed by possible flooding during the October to December rainy season.
“The changing weather patterns are threatening livelihoods, food production, water supplies, infrastructure and essential services,” reads the report.
For pastoralist and farming communities in counties such as Turkana, Marsabit, Wajir, Garissa and Mandera, repeated climate shocks have created a cycle of losses.
The report highlights that livestock weakened by drought remain vulnerable to disease and water shortages, while crops that survive dry conditions may later be destroyed by floods.
It also emphasised that improved rainfall alone does not guarantee food security, as many low-income households continue to struggle with high prices for food, transport and agricultural inputs.
Disruptions linked to the crisis in the Middle East are also increasing fuel, transport and food costs across the region, putting more pressure on already fragile economies and food systems.
“For households already using a large share of their income to buy food, even small price increases can make it harder to meet daily needs,” OCHA said.
Conflict remains one of the main drivers of humanitarian needs across Eastern Africa.
According to the report, instability in Sudan, South Sudan and other parts of the region continues to affect trade routes, livelihoods and population movements.
OCHA reported that internal displacement reduced slightly from 16.9 million to 16.7 million people, mainly due to returns in Sudan. However, nearly 13,000 people were newly displaced in Burundi, mostly because of climate-related hazards.
The regional refugee population increased from 5.9 million to six million people, mainly due to increases in South Sudan, Uganda and Kenya.
The movement of people continues to put pressure on food systems, local services and humanitarian resources.
Food systems across the East African Community (EAC) are connected through trade, migration and shared climate risks.
Northern Tanzania supplies maize to Kenyan markets during shortages, while livestock trade links pastoralist communities across Kenya, Ethiopia and Tanzania.
OCHA said investments in climate-smart agriculture, irrigation, water infrastructure, regional food trade and social protection programmes will be important in reducing future food insecurity.

Other Topics To Read

Top Stories Today

  • Kindiki urges Kenyans to reject division and protect national unity
  • Professional mediators trained to ease court case backlog
  • Voi–Taveta railway upgrade hits 70 per cent completion
  • ECOWAS backs Ghana’s anti-xenophobia push at AU
  • US praises Somalia after suspect in Sh32 billion Covid fraud is extradited
  • DCI investigates violence and armed goons in Ol Kalou mini-poll

`;
}

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

Kenyans withdraw billions from Boma Yangu despite growth in housing savingsNews
|Lucy Mumbi
|14 hours ago

Katiba Institute, Muite demand answers over alleged quarantine of seven Americans at Laikipia Air BaseNews
|Rachael Mutabasi
|1 day ago

Kenya-Tanzania rail link moves closer as Voi–Taveta project hits 70 per centNews
|Rachael Mutabasi
|1 hour ago

Lamu Leaders, residents back Sh2.2 trillion Dangote-linked oil refinery, demand local inclusionCoast
|Farhiya Hussein
|11 hours ago

<img src="https://publish.eastleighvoice.co.ke/mugera_lock/uploads/2026/07/eastleighvoice-co-ke-2026-july-19-164834.webp" alt="Sh32 billion Covid relief fraud suspect flown to US as Somalia deepens law enforcement cooperation”>

Sh32 billion Covid relief fraud suspect flown to US as Somalia deepens law enforcement cooperationSomalia
|Abdirahman Khalif
|2 hours ago

UN humanitarians step up Ebola response amid growing violence in DR CongoRegional
|XINHUA
|1 day ago

Kindiki says political differences should not destroy national unity, urges Kenyans to reject divisionPolitics
|Rachael Mutabasi
|2 hours ago

Shadows of past political violence shape lives of young Africans for years: A study of nine countriesAfrica
|The Conversation
|4 hours ago

Kenya Pipeline crowned KVF Women’s League champions after beating Kenya PrisonsFootball
|Erick Kariuki
|5 hours ago

Ol Kalou violence: Amnesty Kenya wants CS Murkomen to account for police failure during pollsNews
|Lucy Mumbi
|10 hours ago

Share.
Leave A Reply

Exit mobile version