DETAINED.us
The Pursuit of Liberty is Not a Crime
Updated Daily
People in US Immigration Detention — Right Now
73,000+
the highest in American history

A record-breaking detention crisis, in real time.

As of February 2026, ICE holds more than 73,000 people in immigration detention — an 84% increase from January 2025. Over 73% have no criminal conviction.

The U.S. government aims to expand detention to 100,000+ people. Congress has authorized $45 billion to build more capacity through 2029.

Sources: TRAC, CBS News, American Immigration Council, USAFacts
73.6%
have no criminal conviction, held solely for civil immigration violations
212
detention facilities now active — up from 104 in January 2025
14.3:1
people deported from custody for every one person released (was 1.6:1 in Dec 2024)
Detention Population Over Time

People in ICE Detention, 2024–Present

View live data at TRAC →
Recent News
Live · Loading...
Resources for Families & Immigrants
Legal Help
AILA — Find an Immigration Lawyer
American Immigration Lawyers Association referral directory.
Emergency Hotline
Vera Institute — Deportation Defense
Know Your Rights resources for people in immigration detention and their families.
Family Support
RAICES — Rapid Response Network
Support for detained immigrants and their families, including bond assistance.
Know Your Rights
ACLU — Immigration Rights
Know Your Rights guides for encounters with ICE, in multiple languages.
Data & Research
TRAC Immigration — Live Data
Real-time detention statistics updated weekly from government data.
Advocacy
American Immigration Council
Research, policy advocacy, and resources on the detention system.
Legal Help
CLINIC — Catholic Legal Immigration Network
Free & low-cost immigration legal services across the US.
Take Action

Contact Your Representatives

Your elected officials work for you. Enter your zip code to find your Senators and House Representative with direct contact information.

// ============================================================ // LIVE NEWS — Guardian API + AIC + NILC RSS feeds // Paste your Guardian API key below between the quotes // ============================================================ const GUARDIAN_KEY = 'af54c603-cd64-438d-8a9f-e2dbb4bc5578'; const DETENTION_QUERIES = [ '"ICE detention"', '"immigration detention"', '"detained immigrants"', '"immigrant detainees"', ]; const RSS2JSON = 'https://api.rss2json.com/v1/api.json?rss_url='; const RSS_FEEDS = [ { key: 'aic', label: 'American Immigration Council', url: 'https://immigrationimpact.com/feed/' }, { key: 'nilc', label: 'NILC', url: 'https://www.nilc.org/feed/' }, ]; const FALLBACK_NEWS = [ { source: 'Washington Post', headline: "DHS issues memo directing ICE to arrest and indefinitely detain refugees who haven't yet received green cards", date: 'Feb 19, 2026', url: 'https://www.washingtonpost.com/immigration/2026/02/18/trump-immigrants-refugees-minnesota-memo/', feedKey: 'guardian' }, { source: 'NPR', headline: 'Refugees in the US could be arrested under new DHS immigration memo', date: 'Feb 19, 2026', url: 'https://www.npr.org/2026/02/19/g-s1-110721/trump-administration-refugees-memo-arrest', feedKey: 'guardian' }, { source: 'CBS News', headline: 'ICE detainee population hits record high of 73,000 — an 84% increase from January 2025', date: 'Jan 16, 2026', url: 'https://www.cbsnews.com/news/ices-detainee-population-record-high-of-73000/', feedKey: 'guardian' }, { source: 'American Immigration Council', headline: '2025 was the deadliest year for ICE detention on record', date: 'Jan 14, 2026', url: 'https://www.americanimmigrationcouncil.org/press-release/report-trump-immigration-detention-2026/', feedKey: 'aic' }, { source: 'NILC', headline: 'Two leaked ICE memos encourage officers to violate the Constitution', date: 'Feb 17, 2026', url: 'https://www.nilc.org/resources/rapid-response-update-on-bond-eligibility-for-undocumented-immigrants/', feedKey: 'nilc' }, { source: 'TRAC Immigration', headline: '73.6% of the 68,289 people in ICE detention have no criminal conviction', date: 'Feb 7, 2026', url: 'https://tracreports.org/immigration/quickfacts/', feedKey: 'guardian' }, ]; let allArticles = []; let activeTab = 'all'; function formatDate(iso) { try { return new Date(iso).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }); } catch(e) { return ''; } } function renderNewsItems(items) { const feed = document.getElementById('newsFeed'); const filtered = activeTab === 'all' ? items : items.filter(i => i.feedKey === activeTab); if (filtered.length === 0) { feed.innerHTML = `
No stories loaded for this source.
`; return; } feed.innerHTML = ''; filtered.forEach((item, i) => { const a = document.createElement('a'); a.className = 'news-item'; a.href = item.url; a.target = '_blank'; a.rel = 'noopener noreferrer'; a.style.animationDelay = (i * 0.06) + 's'; a.innerHTML = `
${item.source}
${item.headline}
${item.date}
`; feed.appendChild(a); }); } function switchTab(tab) { activeTab = tab; document.querySelectorAll('.news-tab').forEach(btn => { btn.classList.toggle('active', btn.getAttribute('onclick').includes(`'${tab}'`)); }); renderNewsItems(allArticles.length ? allArticles : FALLBACK_NEWS); } function updateTimestamp() { const now = new Date(); document.getElementById('lastUpdate').textContent = now.toLocaleDateString('en-US', { month: 'short', day: 'numeric' }) + ', ' + now.toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit' }); } async function fetchGuardian() { const requests = DETENTION_QUERIES.map(q => fetch(`https://content.guardianapis.com/search?q=${encodeURIComponent(q)}&order-by=newest&page-size=5&api-key=${GUARDIAN_KEY}`) .then(r => r.json()).catch(() => null) ); const results = await Promise.all(requests); const seen = new Set(); const articles = []; results.forEach(result => { if (!result || result.response?.status !== 'ok') return; result.response.results.forEach(item => { if (!seen.has(item.id)) { seen.add(item.id); articles.push({ source: 'The Guardian', headline: item.webTitle, date: formatDate(item.webPublicationDate), dateRaw: new Date(item.webPublicationDate), url: item.webUrl, feedKey: 'guardian', }); } }); }); return articles; } async function fetchRSS(feed) { const res = await fetch(`${RSS2JSON}${encodeURIComponent(feed.url)}&count=10`); const data = await res.json(); if (data.status !== 'ok') return []; return (data.items || []).map(item => ({ source: feed.label, headline: item.title, date: formatDate(item.pubDate), dateRaw: new Date(item.pubDate), url: item.link, feedKey: feed.key, })); } async function loadAllFeeds() { document.getElementById('newsFeed').innerHTML = `
Loading latest detention news...
`; try { const [guardianResult, ...rssResults] = await Promise.allSettled([ fetchGuardian(), ...RSS_FEEDS.map(f => fetchRSS(f)), ]); const guardian = guardianResult.status === 'fulfilled' ? guardianResult.value : []; const rss = rssResults.flatMap(r => r.status === 'fulfilled' ? r.value : []); allArticles = [...guardian, ...rss] .sort((a, b) => (b.dateRaw || 0) - (a.dateRaw || 0)) .slice(0, 30); if (allArticles.length === 0) throw new Error('No articles'); renderNewsItems(allArticles); updateTimestamp(); } catch(err) { allArticles = FALLBACK_NEWS; renderNewsItems(FALLBACK_NEWS); document.getElementById('lastUpdate').textContent = 'Feb 2026'; } } loadAllFeeds(); // Animated counter for main number function animateCount(el, target, duration) { const startTime = performance.now(); function tick(now) { const elapsed = now - startTime; const progress = Math.min(elapsed / duration, 1); const eased = 1 - Math.pow(1 - progress, 3); const current = Math.round(target * eased); el.textContent = current.toLocaleString() + '+'; if (progress < 1) requestAnimationFrame(tick); } requestAnimationFrame(tick); } const mainCount = document.getElementById('mainCount'); setTimeout(() => { animateCount(mainCount, 73000, 2200); }, 400); // ============================================================ // REPRESENTATIVE LOOKUP via Google Civic Information API // ============================================================ async function lookupReps() { const zip = document.getElementById('zipInput').value.trim(); const errorEl = document.getElementById('repsError'); const resultsEl = document.getElementById('repsResults'); errorEl.style.display = 'none'; resultsEl.style.display = 'none'; if (!/^\d{5}$/.test(zip)) { errorEl.textContent = 'Please enter a valid 5-digit zip code.'; errorEl.style.display = 'block'; return; } resultsEl.style.display = 'grid'; resultsEl.innerHTML = '
  Looking up your representatives...
'; try { const url = `https://civicinfo.googleapis.com/civicinfo/v2/representatives?address=${zip}&levels=country&roles=legislatorUpperBody&roles=legislatorLowerBody&key=AIzaSyB-LL40DuaS9F5cHgqVbI2hqzJAYcUZCcY`; const res = await fetch(url); const data = await res.json(); if (data.error || !data.officials) { throw new Error(data.error?.message || 'No results found'); } const reps = []; (data.offices || []).forEach(office => { if (!office.levels?.includes('country')) return; (office.officialIndices || []).forEach(idx => { const official = data.officials[idx]; if (official) reps.push({ office: office.name, ...official }); }); }); if (reps.length === 0) throw new Error('No federal representatives found for this zip code.'); resultsEl.innerHTML = ''; reps.forEach((rep, i) => { const party = rep.party || ''; const partyClass = party.toLowerCase().includes('democrat') ? 'dem' : party.toLowerCase().includes('republican') ? 'rep' : 'ind'; const phone = rep.phones?.[0] || null; const website = rep.urls?.[0] || null; const email = rep.emails?.[0] || null; const card = document.createElement('div'); card.className = 'rep-card'; card.style.animationDelay = (i * 0.1) + 's'; card.innerHTML = `
${rep.office}
${rep.name}
${party || 'Independent'}
${phone ? `
Phone${phone}
` : ''} ${website ? `
Web${website.replace(/^https?:\/\/(www\.)?/,'').replace(/\/$/,'')}
` : ''} ${email ? `
Email${email}
` : ''} ${!phone && !website && !email ? '
No contact info available
' : ''}
`; resultsEl.appendChild(card); }); } catch (err) { resultsEl.style.display = 'none'; errorEl.textContent = 'Could not find representatives for that zip code. Please try again.'; errorEl.style.display = 'block'; } } document.getElementById('zipInput').addEventListener('keydown', function(e) { if (e.key === 'Enter') lookupReps(); });