Attacks on people with albinism in Tanzania: African court holds government responsible – Why it matters
Attacks on people with albinism in Tanzania: African court holds government responsible – Why it matters
Read this story aloud
Listen to the clean text version of this article
Ready
7 min listen
Audio reading is not supported on this browser.
They are additionally subjected to extreme forms of violence that include killings, abductions, mutilations and infanticide
By Charlotte Baker
People with albinism face widespread discrimination in many sub-Saharan African countries. In Tanzania, this minority has been subjected to extreme forms of violence. The government’s failure to protect their rights prompted the filing of a case before the African Court on Human and Peoples’ Rights. The case was brought by Tanzanian and international civil rights groups against the government of Tanzania. They were seeking more robust legal protections from the state for people with albinism.
***
More To Read
- Saba Saba organisers notify police of planned peaceful demonstration to Parliament
- IPOA to investigate alleged police brutality, abductions during June 25 commemoration protests
- Family seeks answers over whereabouts of Mombasa woman arrested in DCI national security probe
- Activists demand accountability over alleged police brutality and enforced disappearances
- NPS pledges probe into enforced disappearances, confirms Davis Lichuma missing report
- Tanzania bans political gatherings over fears of planned protests
In February 2025, the court delivered a landmark judgment, holding Tanzania accountable for human rights violations against persons with albinism. Charlotte Baker, who has researched sociocultural aspects of albinism in sub-Saharan Africa, explains the significance of the ruling.
What is the background to the case?
Albinism is a relatively rare genetically inherited condition. It occurs in all countries of the world. In sub-Saharan Africa, an estimated 1 in 4,000 people have albinism. The condition results in a lack of pigmentation in the hair, skin and eyes, causing vulnerability to skin cancer and visual impairment.
Latest Stories
- Nigeria demands probe after two citizens killed in South Africa amid rising xenophobia concerns
- Stephen Yiembe makes history as first Kenyan referee appointed for UEFA Super Cup
- Zamzam fires warning over ODM nomination as Mombasa succession politics intensify
- Nairobi restaurant gunpoint robbery renews calls for tougher security measures
Human rights violations and abuses against people with albinism in Tanzania are common. They include discrimination, verbal abuse and bullying. People with albinism also face exclusion from public services, including education and health.
They are additionally subjected to extreme forms of violence that include killings, abductions, mutilations and infanticide. Even after a person with albinism has died, their graves are at risk of exhumation to obtain body parts for sale.
A range of traditional and more modern beliefs drive the oppression of people with albinism. However, structural reasons related to social inequities have created a market in the body parts of people with albinism. These are used for the production of “charms” by “witchdoctors” who promise they’ll bring wealth and success.
A few societies are more accepting of albinism and venerate people with the condition, such as the Bamiléké in Cameroon. However, the majority experience discrimination.
International attention
The first media reports of attacks on people with albinism in Tanzania emerged in 2007, bringing international attention to the issue.
Since then, over 700 attacks and killings in 28 countries have been reported to the Canadian NGO Under the Same Sun, although many more go unrecorded. The organisation works to end discrimination and violence against persons with albinism.
In Tanzania, there have been 209 reports of attacks since 2007. Most recently, on 25 June 2024, a two-year-old girl with albinism was abducted and killed in the Kagera region, about 1,500km from the capital Dar es Salaam.
What does the court ruling mean for persons with albinism?
Under international human rights law, the fundamental human rights of persons with albinism must be protected under the UN’s Universal Declaration of Human Rights. These include a right to:
• life
• adequate standards of living and social protection
• equality and non-discrimination
• freedom from exploitation, violence and abuse
• education, health, work and employment.
Upholding the rights of people with albinism would ensure that they were treated fairly and with respect.
The African Court on Human and Peoples’ Rights found that, although some steps have been taken in the right direction, Tanzania has violated the right to life of persons with albinism by not protecting them as required under Article 4 of the African Charter.
It also found the state violated the right to non-discrimination by failing to put enough measures in place to fight myths and stereotypes relating to albinism.
This ruling sets a legal precedent across Africa. It’s a signal to other states of their obligations under the African charters on human rights and children’s welfare.
What does the Tanzanian government need to do?
The court determined that superstitions and harmful beliefs had led to discrimination and the targeted killings of persons with albinism. It ordered the government of Tanzania to make provision for nationwide awareness campaigns for at least two years to combat myths and superstitions about albinism.
The court requires the Tanzanian government to amend the 1928 Witchcraft Act to criminalise attacks against persons with albinism. This is in response to UN Resolution 47/8 on the elimination of harmful practices related to accusations of witchcraft and ritual attacks.
The government of Tanzania is also ordered to implement its national action plan on the protection of persons with albinism. This is in line with the African Union Plan of Action to End Attacks and Other Human Rights Violations Targeting Persons with Albinism. The national action plan should address stigma and structural issues that lead to discrimination.
The government must also ensure the right to health protection. This includes access to skin and eye health services. Providing protective clothing and sunscreens can be lifesaving.
Other Topics To Read
Meeting the needs of children with albinism in educational settings must be a priority for the Tanzanian government. This can mean minor adaptions to classroom layouts and access to visual aids. Most importantly, it requires a change in attitudes among teaching staff and other pupils.
Tanzania has also been ordered to establish a compensation fund and compensate persons with albinism who have been victims of violent attacks.
What power does the court have to ensure enforcement?
The African Court on Human and Peoples’ Rights has instructed Tanzania to publish the judgment on government websites within three months. It should remain accessible for at least a year.
The government must also submit a report on the implementation of the ruling within two years.
Advertisement
If it hasn’t fully complied within three years, a hearing will be held. However, the court has a non-compliance crisis and there are no built-in consequences in its protocol.
The partners involved in bringing the case will monitor Tanzania’s compliance with the court’s orders.
The Institute for Human Rights and Development in Africa has called on civil society organisations, policymakers and human rights defenders to support efforts to protect the rights of people with albinism in Tanzania and beyond.
Charlotte Baker is a professor of French and Critical Disability Studies at Lancaster University
Top Stories Today
- Saba Saba organisers notify police of peaceful march to Parliament
- Why scaling innovation is the missing link in global food security
- Abuja warns of diplomatic fallout after killing of Nigerians in South Africa
- Kenya’s Stephen Yiembe lands historic UEFA Super Cup officiating role
- Mombasa ODM politics heat up as Zamzam alleges plot to block her ticket
- Nairobi insecurity fears rise after gunmen rob Westlands restaurant
`;
}
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
Taita Taveta County unveils cooperative fund to boost rural access to creditCoast
|Farhiya Hussein
|2 hours ago
Nigeria demands probe after two citizens killed in South Africa amid rising xenophobia concernsAfrica
|Rachael Mutabasi
|23 minutes ago
Government releases Sh4 billion to settle NHIF hospital claimsHealth
|Lucy Mumbi
|8 hours ago
Egypt end 92-year wait to reach World Cup last 16News
|Erick Kariuki
|1 day ago
Zamzam fires warning over ODM nomination as Mombasa succession politics intensifyPolitics
|Farhiya Hussein
|1 hour ago
Eight arrested in Marsabit over Sh1.2 million SIM swap fraudNorthern Kenya
|Bashir Mbuthia
|1 day ago
Weekly new Ebola cases reach highest level since outbreak began: WHODemocratic Republic of Congo
|XINHUA
|1 day ago
2026 FIFA World Cup claims seven national team coachesInfographics
|Charity Pancras
|7 hours ago
Beginner’s guide to decluttering your closet: Simple steps to create more space, less stressLifestyle
|Margaret Wanjiru
|1 day ago
Clean mobility gains ground in trucks and buses, but fossil fuels still dominate at 94 per cent – reportClimate Change
|Alfred Onyango
|1 day ago