Sexual Assaults on Campus No Longer Scrutinized as Closely Under Trump’s Education Department

An illustration of three yellow pencils forming the shape of an arrow pointing down and diagonally to the right.
Shoshana Gordon/ProPublica

The civil rights arm of the U.S. Department of Education has dramatically scaled back investigations involving schools and colleges since the second Trump administration began, even as complaints continue to pour in, a ProPublica analysis of newly obtained records found.

The analysis shows how severely the department’s Office for Civil Rights has retracted from its mission, launching an average of about 100 new investigations a month — 1,839 total from Inauguration Day in 2025 through July 2026. The OCR launched an average of 310 new investigations each month in 2024 during the Biden administration, according to data previously obtained by ProPublica.

Under President Donald Trump, the OCR abandoned the public-facing list of schools it was investigating and the reasons for those investigations, including claims of discrimination based on race, sex and disability. ProPublica sued the department to obtain internal case data. The government subsequently provided records of the OCR’s actions in the first 18 months of Trump’s return to power, and we are publishing the data so the public can search the cases.

Search for School Civil Rights Investigations

See where the U.S. Department of Education’s Office for Civil Rights under the Trump administration has launched investigations into alleged discrimination in schools and colleges or dismissed complaints without investigating. The table also includes complaints filed with the OCR during the Trump administration that the office has not yet decided to investigate. 

The OCR uses “case opened” to record when complaints were received by the agency. “Investigation start date” indicates the date the agency initiated an investigation.

Loading data…

This searchable table requires JavaScript.

.graphic-embed-trump-ocr-activity-table {
font-family: var(–p-fonts-sans, system-ui, sans-serif);
color: var(–p-color-text-body, #31302d);
}

.graphic-embed-trump-ocr-activity-table .ocr-status {
font-size: var(–p-scale-3, 0.875rem);
color: var(–p-color-text-dek, #5f5e59);
}

.graphic-embed-trump-ocr-activity-table .ocr-controls {
margin-bottom: var(–p-spacing-4, 1rem);
}

.graphic-embed-trump-ocr-activity-table .ocr-label {
display: block;
font-size: var(–p-scale-2, 0.75rem);
font-weight: 700;
margin-bottom: 0.25rem;
}

.graphic-embed-trump-ocr-activity-table .ocr-input,
.graphic-embed-trump-ocr-activity-table .ocr-select {
width: 100%;
font-family: inherit;
/* 16px minimum: anything smaller makes iOS Safari zoom in when the
field gets focus */
font-size: var(–p-scale-4, 1rem);
color: var(–p-color-text-body, #31302d);
background-color: transparent;
border: 1px solid
light-dark(
var(–p-color-gray-02, #c8c6c0),
var(–p-color-gray-05, #31302d)
);
border-radius: 0;
padding: var(–p-spacing-2, 0.5rem);
transition: box-shadow 0.2s;
}

.graphic-embed-trump-ocr-activity-table .ocr-input:focus,
.graphic-embed-trump-ocr-activity-table .ocr-input:hover,
.graphic-embed-trump-ocr-activity-table .ocr-select:focus,
.graphic-embed-trump-ocr-activity-table .ocr-select:hover {
box-shadow: 0 0 2px var(–p-dyn-color-blue-02, #52a7e0);
}

.graphic-embed-trump-ocr-activity-table .ocr-input {
margin-bottom: var(–p-spacing-3, 0.75rem);
}

.graphic-embed-trump-ocr-activity-table .ocr-selects {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: var(–p-spacing-3, 0.75rem);
}

/* The filter toggle only exists on small screens; on desktop the
selects are always visible. */
.graphic-embed-trump-ocr-activity-table .ocr-filter-toggle {
display: none;
align-items: center;
gap: 0.4rem;
font-family: inherit;
/* 16px minimum: anything smaller makes iOS Safari zoom in when the
control gets focus */
font-size: var(–p-scale-4, 1rem);
color: var(–p-color-text-body, #31302d);
background-color: transparent;
border: 1px solid
light-dark(
var(–p-color-gray-02, #c8c6c0),
var(–p-color-gray-05, #31302d)
);
border-radius: 0;
padding: var(–p-spacing-2, 0.5rem) var(–p-spacing-3, 0.75rem);
cursor: pointer;
}

.graphic-embed-trump-ocr-activity-table
.ocr-filters-open
.ocr-filter-toggle,
.graphic-embed-trump-ocr-activity-table .ocr-filter-toggle:hover {
background-color: light-dark(
var(–p-color-gray-01, #e3e2dd),
var(–p-color-gray-06, #22221f)
);
}

@media (max-width: 740px) {
.graphic-embed-trump-ocr-activity-table .ocr-filter-toggle {
display: inline-flex;
}

.graphic-embed-trump-ocr-activity-table .ocr-selects {
display: none;
grid-template-columns: repeat(2, 1fr);
margin-top: var(–p-spacing-3, 0.75rem);
}

.graphic-embed-trump-ocr-activity-table
.ocr-controls.ocr-filters-open
.ocr-selects {
display: grid;
}
}

@media (max-width: 420px) {
.graphic-embed-trump-ocr-activity-table .ocr-selects {
grid-template-columns: 1fr;
}
}

.graphic-embed-trump-ocr-activity-table .ocr-count {
font-size: var(–p-scale-2, 0.75rem);
color: var(–p-color-text-dek, #5f5e59);
margin: 0 0 var(–p-spacing-2, 0.5rem);
}

.graphic-embed-trump-ocr-activity-table .ocr-clear {
font-family: inherit;
font-size: inherit;
color: var(–p-dyn-color-blue-03, #006eb7);
background: none;
border: none;
padding: 0;
margin-left: var(–p-spacing-2, 0.5rem);
text-decoration: underline;
cursor: pointer;
}

.graphic-embed-trump-ocr-activity-table .ocr-table-scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}

.graphic-embed-trump-ocr-activity-table .ocr-table {
min-width: 860px;
}

.graphic-embed-trump-ocr-activity-table .ocr-td-nowrap {
white-space: nowrap;
}

.graphic-embed-trump-ocr-activity-table .ocr-sort-btn {
font: inherit;
font-weight: 700;
color: inherit;
background: none;
border: none;
padding: 0;
text-align: inherit;
cursor: pointer;
}

.graphic-embed-trump-ocr-activity-table .ocr-sort-btn:hover,
.graphic-embed-trump-ocr-activity-table .ocr-sort-btn:focus {
text-decoration: underline;
}

.graphic-embed-trump-ocr-activity-table .ocr-sort-ind {
font-weight: 400;
}

.graphic-embed-trump-ocr-activity-table .ocr-empty {
text-align: center;
color: var(–p-color-text-dek, #5f5e59);
}

.graphic-embed-trump-ocr-activity-table .ocr-pagination {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.25rem;
margin-top: var(–p-spacing-3, 0.75rem);
}

.graphic-embed-trump-ocr-activity-table .ocr-page-btn {
font-family: inherit;
font-size: var(–p-scale-2, 0.75rem);
color: var(–p-color-text-body, #31302d);
background-color: transparent;
border: 1px solid
light-dark(
var(–p-color-gray-02, #c8c6c0),
var(–p-color-gray-05, #31302d)
);
padding: 0.25rem 0.6rem;
cursor: pointer;
}

.graphic-embed-trump-ocr-activity-table .ocr-page-btn:hover:not(:disabled) {
background-color: light-dark(
var(–p-color-gray-01, #e3e2dd),
var(–p-color-gray-06, #22221f)
);
}

.graphic-embed-trump-ocr-activity-table .ocr-page-btn–current,
.graphic-embed-trump-ocr-activity-table
.ocr-page-btn–current:hover:not(:disabled) {
background-color: var(–p-dyn-color-warm-black, #111110);
border-color: var(–p-dyn-color-warm-black, #111110);
color: var(–p-dyn-color-white, #fff);
}

.graphic-embed-trump-ocr-activity-table .ocr-page-btn:disabled {
opacity: 0.4;
cursor: default;
}

.graphic-embed-trump-ocr-activity-table .ocr-ellipsis {
font-size: var(–p-scale-2, 0.75rem);
color: var(–p-color-text-dek, #5f5e59);
padding: 0 0.2rem;
}

/*
* WARNING: WordPress entity-encodes ampersand characters inside this
* inline script when the embed is rendered in an article, which breaks
* the JavaScript. NOTHING in this script may contain a literal
* ampersand: no AND operators (rewrite “a AND b” as nested ifs, early
* returns, or with not/or per De Morgan), no HTML entities in strings
* (use literal Unicode characters), no bitwise AND, none in comments.
* See README.md.
*/
(function () {
var PER_PAGE = 15;

var IS_LOCAL_DEV =
[“localhost”, “127.0.0.1”].indexOf(window.location.hostname) > -1;
/* Production data lives on static.propublica.org (flat, no data/
subdir), per graphics-pipeline convention; local dev is served by
the repo’s vite dev server from the repo root. */
var DATA_URL = IS_LOCAL_DEV
? “/graphics/2026/trump-ocr-activity/table/data/trump_ocr_activity.csv.gz”
: “https://static.propublica.org/projects/graphics/2026-trump-ocr-activity/trump_ocr_activity.csv.gz”;

var STATE_NAMES = {
AK: “Alaska”, AL: “Alabama”, AR: “Arkansas”, AS: “American Samoa”,
AZ: “Arizona”, CA: “California”, CO: “Colorado”, CT: “Connecticut”,
DC: “District of Columbia”, DE: “Delaware”, FL: “Florida”,
GA: “Georgia”, GU: “Guam”, HI: “Hawaii”, IA: “Iowa”, ID: “Idaho”,
IL: “Illinois”, IN: “Indiana”, KS: “Kansas”, KY: “Kentucky”,
LA: “Louisiana”, MA: “Massachusetts”, MD: “Maryland”, ME: “Maine”,
MI: “Michigan”, MN: “Minnesota”, MO: “Missouri”,
MP: “Northern Mariana Islands”, MS: “Mississippi”, MT: “Montana”,
NC: “North Carolina”, ND: “North Dakota”, NE: “Nebraska”,
NH: “New Hampshire”, NJ: “New Jersey”, NM: “New Mexico”,
NV: “Nevada”, NY: “New York”, OH: “Ohio”, OK: “Oklahoma”,
OR: “Oregon”, PA: “Pennsylvania”, PR: “Puerto Rico”,
RI: “Rhode Island”, SC: “South Carolina”, SD: “South Dakota”,
TN: “Tennessee”, TX: “Texas”, UT: “Utah”, VA: “Virginia”,
VI: “U.S. Virgin Islands”, VT: “Vermont”, WA: “Washington”,
WI: “Wisconsin”, WV: “West Virginia”, WY: “Wyoming”, XX: “Unknown”,
};

function stateName(code) {
return STATE_NAMES[code] || code;
}

var INST_TYPES = { 1: “K-12”, 2: “Postsecondary” };

// The source CSV writes missing values as the literal string “NA”.
function missing(value) {
return value === “NA” ? “” : value;
}

// Recipient names are mostly ALL CAPS (“MCHENRY COMM H S DIST
// 156”); title-case those for display. Names that already have
// lowercase letters are someone’s deliberate casing — left alone.
var KEEP_UPPER = {
AISD: 1, BOCES: 1, CISD: 1, CUNY: 1, CUSD: 1, ESC: 1, ESD: 1,
II: 1, III: 1, ISD: 1, IU: 1, IV: 1, KIPP: 1, MSAD: 1, RSU: 1,
SAU: 1, STEM: 1, SUNY: 1, UFSD: 1, USD: 1,
};
// Vowel-less abbreviations that read as words, not initialisms.
var TITLE_ABBR = {
BD: 1, BLVD: 1, CTR: 1, JNT: 1, MT: 1, SCH: 1, SR: 1, ST: 1,
TWP: 1,
};
var SMALL_WORDS = {
a: 1, an: 1, and: 1, at: 1, for: 1, in: 1, of: 1, on: 1,
the: 1, to: 1,
};

function capitalize(word) {
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
}

function titleCaseWord(word, isFirst) {
var bare = word.replace(/.$/, “”);
if (KEEP_UPPER[bare]) return word;
// Initialisms with periods (“U.S.D.”) and anything with a
// digit (“1J”, “R-1”) stay as they are.
if (/^([A-Z].)+[A-Z]?.?$/.test(word)) return word;
if (/d/.test(word)) return word;
if (!TITLE_ABBR[bare]) {
if (/^[^AEIOUY]{2,5}$/.test(bare)) return word;
}
var lower = word.toLowerCase();
if (!isFirst) {
if (SMALL_WORDS[lower]) return lower;
}
if (/^MC[A-Z]{2,}/.test(word)) {
return “Mc” + capitalize(word.slice(2));
}
if (/^[OD]'[A-Z]/.test(word)) {
return word.charAt(0) + “‘” + capitalize(word.slice(2));
}
return capitalize(word);
}

function titleCaseName(name) {
if (name !== name.toUpperCase()) return name;
return name.replace(/[A-Za-z0-9.’]+/g, function (word, offset) {
// Start of the name, or of a segment after ” – ” / “(“.
var isFirst = /(^|[-:(]s*)$/.test(name.slice(0, offset));
return titleCaseWord(word, isFirst);
});
}

function normalizeResolution(value) {
return value || “Pending”;
}

function formatDate(value) {
if (!value) return “—”;
if (value === “NA”) return “—”;
var parts = value.split(“-“);
if (parts.length !== 3) return value;
return (
Number(parts[1]) + “/” + Number(parts[2]) + “/” + parts[0]
);
}

var fmt = new Intl.NumberFormat(“en-US”);

var els = {
status: document.getElementById(“g-ocr-status”),
app: document.getElementById(“g-ocr-app”),
controls: document.getElementById(“g-ocr-controls”),
filterToggle: document.getElementById(“g-ocr-filter-toggle”),
filterToggleLabel: document.getElementById(
“g-ocr-filter-toggle-label”,
),
search: document.getElementById(“g-ocr-search”),
state: document.getElementById(“g-ocr-state”),
inst: document.getElementById(“g-ocr-inst”),
issue: document.getElementById(“g-ocr-issue”),
resolution: document.getElementById(“g-ocr-resolution”),
count: document.getElementById(“g-ocr-count”),
tbody: document.getElementById(“g-ocr-tbody”),
pagination: document.getElementById(“g-ocr-pagination”),
};

var rows = [];
var query = “”;
var page = 1;

/* Sorting. Dates default to newest-first on first click; everything
else defaults to ascending. Missing dates always sort last. */
var SORT_TYPES = {
docket: “number”,
recipient: “string”,
state: “string”,
inst: “string”,
issue: “string”,
opened: “date”,
resolved: “date”,
resolution: “string”,
};
var sortKey = “opened”;
var sortDir = -1;

function isMissingDate(value) {
if (!value) return true;
return value === “NA”;
}

function tiebreak(a, b) {
return Number(a.docket) – Number(b.docket);
}

function compareRows(a, b) {
var va = a[sortKey];
var vb = b[sortKey];
var type = SORT_TYPES[sortKey];
var result;
if (type === “date”) {
var aMissing = isMissingDate(va);
var bMissing = isMissingDate(vb);
if (aMissing) {
if (bMissing) return tiebreak(a, b);
return 1;
}
if (bMissing) return -1;
result = va.localeCompare(vb);
} else if (type === “number”) {
result = Number(va) – Number(vb);
if (isNaN(result)) {
result = String(va).localeCompare(String(vb));
}
} else {
result = String(va).localeCompare(String(vb));
}
if (result === 0) return tiebreak(a, b);
return result * sortDir;
}

function sortRows() {
rows.sort(compareRows);
}

function updateSortIndicators() {
var buttons = document.querySelectorAll(
“#g-ocr-thead [data-sort]”,
);
Array.prototype.forEach.call(buttons, function (btn) {
var th = btn.parentNode;
var ind = btn.querySelector(“.ocr-sort-ind”);
if (btn.getAttribute(“data-sort”) === sortKey) {
/* No-break space keeps the arrow glued to the label’s
last word so it never wraps to its own line. */
ind.textContent =
sortDir === 1 ? “u00a0↑” : “u00a0↓”;
th.setAttribute(
“aria-sort”,
sortDir === 1 ? “ascending” : “descending”,
);
} else {
ind.textContent = “”;
th.removeAttribute(“aria-sort”);
}
});
}

function getFiltered() {
var state = els.state.value;
var inst = els.inst.value;
var issue = els.issue.value;
var resolution = els.resolution.value;
return rows.filter(function (r) {
if (state !== “”) {
if (r.state !== state) return false;
}
if (inst !== “”) {
if (r.inst !== inst) return false;
}
if (issue !== “”) {
if (r.issue !== issue) return false;
}
if (resolution !== “”) {
if (r.resolution !== resolution) return false;
}
if (query !== “”) {
if (r.haystack.indexOf(query) === -1) return false;
}
return true;
});
}

function hasFilters() {
return Boolean(
query ||
els.state.value ||
els.inst.value ||
els.issue.value ||
els.resolution.value,
);
}

/* Windowed page list: first, last, current plus/minus 2, nulls as
ellipses. */
function pageList(current, total) {
var all = [];
var i;
if (total <= 7) {
for (i = 1; i <= total; i++) all.push(i);
return all;
}
var pages = [1, total];
for (var p = current – 2; p <= current + 2; p++) {
if (p total) continue;
if (pages.indexOf(p) !== -1) continue;
pages.push(p);
}
pages.sort(function (a, b) {
return a – b;
});
var out = [];
for (var j = 0; j 0) {
if (pages[j] – pages[j – 1] > 1) out.push(null);
}
out.push(pages[j]);
}
return out;
}

function addCell(tr, text, extraClasses) {
var td = document.createElement(“td”);
td.className = extraClasses
? “p-table__td ” + extraClasses
: “p-table__td”;
td.textContent = text;
tr.appendChild(td);
}

function pageButton(label, target, disabled, current) {
var btn = document.createElement(“button”);
btn.type = “button”;
btn.className = current
? “ocr-page-btn ocr-page-btn–current”
: “ocr-page-btn”;
btn.textContent = label;
btn.setAttribute(“data-page”, String(target));
if (disabled) btn.disabled = true;
if (current) btn.setAttribute(“aria-current”, “page”);
return btn;
}

function render() {
var filtered = getFiltered();
var totalPages = Math.max(
1,
Math.ceil(filtered.length / PER_PAGE),
);
if (page > totalPages) page = totalPages;

var start = (page – 1) * PER_PAGE;
var pageRows = filtered.slice(start, start + PER_PAGE);

var activeFilters = 0;
[els.state, els.inst, els.issue, els.resolution].forEach(
function (select) {
if (select.value !== “”) activeFilters++;
},
);
els.filterToggleLabel.textContent =
activeFilters > 0
? “Filters (” + activeFilters + “)”
: “Filters”;

els.count.textContent = “”;
var countText;
if (filtered.length === 0) {
countText = “No records match.”;
} else {
countText =
“Showing ” +
fmt.format(start + 1) +
“–” +
fmt.format(Math.min(start + PER_PAGE, filtered.length)) +
” of ” +
fmt.format(filtered.length) +
” records”;
}
els.count.appendChild(document.createTextNode(countText));
if (hasFilters()) {
var clear = document.createElement(“button”);
clear.className = “ocr-clear”;
clear.type = “button”;
clear.textContent = “Clear all filters”;
els.count.appendChild(document.createTextNode(” “));
els.count.appendChild(clear);
}

els.tbody.textContent = “”;
if (pageRows.length === 0) {
var emptyTr = document.createElement(“tr”);
var emptyTd = document.createElement(“td”);
emptyTd.className = “p-table__td ocr-empty”;
emptyTd.colSpan = 9;
emptyTd.textContent = “No records match your search.”;
emptyTr.appendChild(emptyTd);
els.tbody.appendChild(emptyTr);
} else {
pageRows.forEach(function (r) {
var tr = document.createElement(“tr”);
addCell(
tr,
r.docket,
“p-table__td–numeric ocr-td-nowrap”,
);
addCell(tr, r.recipient, “”);
addCell(tr, r.state, “ocr-td-nowrap”);
addCell(tr, r.issue, “”);
addCell(tr, formatDate(r.opened), “ocr-td-nowrap”);
addCell(tr, formatDate(r.investigationStartDate), “ocr-td-nowrap”);
addCell(tr, formatDate(r.resolved), “ocr-td-nowrap”);
addCell(tr, r.resolution, “”);
addCell(tr, r.inst, “”);
els.tbody.appendChild(tr);
});
}

els.pagination.textContent = “”;
if (totalPages <= 1) {
els.pagination.hidden = true;
return;
}
els.pagination.hidden = false;
els.pagination.appendChild(
pageButton("← Prev", page – 1, page === 1, false),
);
pageList(page, totalPages).forEach(function (p) {
if (p === null) {
var span = document.createElement("span");
span.className = "ocr-ellipsis";
span.textContent = "…";
els.pagination.appendChild(span);
} else {
els.pagination.appendChild(
pageButton(fmt.format(p), p, false, p === page),
);
}
});
els.pagination.appendChild(
pageButton("Next →", page + 1, page === totalPages, false),
);
}

function fillSelect(select, values, labelFn) {
values.forEach(function (value) {
var option = document.createElement("option");
option.value = value;
option.textContent = labelFn ? labelFn(value) : value;
select.appendChild(option);
});
}

function uniqueSorted(key, compare) {
var seen = {};
rows.forEach(function (r) {
seen[r[key]] = true;
});
return Object.keys(seen).sort(compare);
}

function init() {
fillSelect(
els.state,
uniqueSorted("state", function (a, b) {
return stateName(a).localeCompare(stateName(b));
}),
stateName,
);
fillSelect(els.issue, uniqueSorted("issue"));
fillSelect(els.resolution, uniqueSorted("resolution"));

document
.getElementById("g-ocr-thead")
.addEventListener("click", function (event) {
var btn = event.target.closest("[data-sort]");
if (!btn) return;
var key = btn.getAttribute("data-sort");
if (key === sortKey) {
sortDir = -sortDir;
} else {
sortKey = key;
sortDir = SORT_TYPES[key] === "date" ? -1 : 1;
}
sortRows();
page = 1;
updateSortIndicators();
render();
});

els.filterToggle.addEventListener("click", function () {
var isOpen =
els.controls.classList.toggle("ocr-filters-open");
els.filterToggle.setAttribute(
"aria-expanded",
isOpen ? "true" : "false",
);
});

var debounceTimer;
els.search.addEventListener("input", function () {
clearTimeout(debounceTimer);
debounceTimer = setTimeout(function () {
query = els.search.value.trim().toLowerCase();
page = 1;
render();
}, 150);
});
[els.state, els.inst, els.issue, els.resolution].forEach(
function (select) {
select.addEventListener("change", function () {
page = 1;
render();
});
},
);
els.pagination.addEventListener("click", function (event) {
var btn = event.target.closest("[data-page]");
if (!btn) return;
if (btn.disabled) return;
page = Number(btn.getAttribute("data-page"));
render();
});
els.count.addEventListener("click", function (event) {
if (!event.target.closest(".ocr-clear")) return;
els.search.value = "";
query = "";
els.state.value = "";
els.inst.value = "";
els.issue.value = "";
els.resolution.value = "";
page = 1;
render();
});

els.status.hidden = true;
els.app.hidden = false;
updateSortIndicators();
render();
}

fetch(DATA_URL)
.then(function (res) {
if (!res.ok) throw new Error("HTTP " + res.status);
return res.arrayBuffer();
})
.then(function (buf) {
var bytes = new Uint8Array(buf);
/* If the CDN already decoded the gzip (Content-Encoding),
the magic bytes will not match and the body is plain
text. */
var isGzip = false;
if (bytes[0] === 0x1f) {
if (bytes[1] === 0x8b) isGzip = true;
}
if (isGzip) {
return new Response(
new Blob([buf])
.stream()
.pipeThrough(new DecompressionStream("gzip")),
).text();
}
return new TextDecoder().decode(buf);
})
.then(function (text) {
rows = d3
.csvParse(text)
.map(function (d) {
var row = {
docket: d["docket_no"],
recipient: titleCaseName(d["recipient"]),
state: missing(d["recipient_state"]) || "XX",
inst: INST_TYPES[d["institution_type"]] || "Unknown",
issue:
missing(d["issue_description"]) ||
"Not specified",
issueCode: missing(d["issue_code"]),
opened: missing(d["case_open"]),
investigationStartDate: missing(d["investigation_start_date"]),
resolved: missing(d["resolved"]),
resolution: normalizeResolution(
missing(d["resolution_type"]),
),
};
row.haystack = [
row.docket,
row.recipient,
row.state,
stateName(row.state),
row.issue,
row.issueCode,
row.investigationStartDate,
row.resolution,
row.inst,
]
.join(" ")
.toLowerCase();
return row;
});
sortRows();
init();
})
.catch(function (err) {
els.status.textContent =
"Sorry, the data could not be loaded. (" +
err.message +
")";
});
})();

Source: U.S. Department of Education Office for Civil Rights, as of July 2026. Note: The data includes complaints closed and investigations opened from Jan. 20, 2025, through July 2026, as well as open complaints received from Jan. 20, 2025, through May 26, 2026. This data was derived from two files covering complaints received by the OCR and investigation notices it sent to institutions. If a case was present in both, the table displays the case information from the complaint file. Some cases do not stem from a complaint but are initiated by the agency. In those cases, “case open” indicates when the case was launched internally. For more on our methodology, see here.

ken schwencke/propublica

The decline in investigations is especially dramatic for cases involving sex discrimination. More than 200 new complaints were filed with the office related to schools’ handling of sexual violence — rape, assault and abuse. But the Trump administration launched investigations in only 29 of them, finding fault with a school district only once, according to the newly obtained data. It’s typical for there to be at least 60 sexual violence investigations opened each year.

The department addressed fewer of these cases despite continued concerns about the persistence of the problem — as demonstrated by the intense public scrutiny over how Cornell University addressed a student’s report of a 2024 gang rape.

Beyond that, the OCR launched only two investigations into discrimination based on sexual orientation.

“They’re barely doing anything to protect women and girls, including survivors of sexual violence,” said Shiwali Patel, an attorney who previously worked at the OCR and is now with the National Women’s Law Center. “They just don’t care about women and girls.”

The organization and more than 120 other advocacy, civil rights and education groups sent a letter on Tuesday to Congress’ ranking education committee leaders urging them to hold the OCR accountable for “its failure to enforce civil rights law and protect students from sexual violence.”

With OCR’s online database idle since Trump took office, the only way to know where the agency has launched investigations has been through selective department press releases, when OCR employees provided internal data to reporters or from schools and colleges that acknowledged that their institutions had become targets of the investigations.

The data ProPublica received as a result of our lawsuit can now fill that gap on the more than 1,800 civil rights investigations that the department initiated from Jan. 20, 2025, to July 29 of this year. The database also reflects the 24,000 new complaints logged through May and the nearly 17,000 new and old cases the department closed — almost always by dismissing them. 

The agency is dismissing complaints more frequently than in prior years, the records show. And fewer than 700 cases opened by the administration were resolved with a finding of wrongdoing.

The data does not include investigations that had been opened before Trump retook power but that are pending decisions by OCR — a backlog of more than 10,000 cases.

In response to questions from ProPublica, an Education Department spokesperson blamed the Biden administration for leaving office with 19,000 unresolved cases, which the Trump administration has worked to address.

“Spare us the crocodile tears as the Trump Administration is working to restore OCR to its original purpose: enforcing the law to ensure all students can receive an education free from discrimination,” spokesperson Sabin Sidney wrote.

He added that the administration “treats any form of discrimination on the basis of race or sex as illegal.” And he criticized the prior administration for endorsing policies that allowed transgender girls and women to compete in women’s athletics and use women’s restrooms.

The data disclosure comes as the administration is moving forward with efforts to shut down the department and move the OCR under the Department of Justice. Disability rights advocates and others have been critical of the move, while the administration says it will lead to more efficiency and do a better job protecting students’ rights. The majority of cases before the OCR involve students with disabilities, as has been the case historically.

In the early months of Trump’s second term, Education Secretary Linda McMahon fired hundreds of employees and closed seven regional OCR offices, leaving the department severely diminished. Its remaining civil rights workers have described untenable case loads and pressure to dismiss complaints.

The remaining attorneys “are navigating pure chaos,” said Rachel Gittleman, president of the American Federation of Government Employees Local 252, the union that represents OCR staff. “They are being asked to use the tools they have used for their entire careers not for good, not to protect students, but to harm students. You see it in the case dismissals, the cases that target trans students or people of color.”

In examining the new records, ProPublica found the extent to which the agency has shifted its focus, as the OCR places a new emphasis on complaints that men faced discrimination. The agency launched 172 investigations into alleged “discrimination against males,” compared with 104 cases of alleged “discrimination against females” in the period examined.

It also has investigated allegations that campus programs or scholarships excluded men. For example, it investigated a complaint against Skyline College in California that had been filed in 2023 but that President Joe Biden’s administration had not acted on, according to records from the university. The complaint alleged that Skyline discriminated against men by listing scholarships on its website that are exclusively for women and for promoting a program for women.

The civil rights office opened the investigation in mid-April, and two weeks later the community college agreed that it would remove the scholarships from its website and add language that the program was open to all students. A Skyline College spokesperson did not respond to questions from ProPublica.

At the same time, the agency chose to open fewer than 370 new investigations involving racial discrimination, even though about 5,000 complaints were filed.

Of those new investigations, about 11% involved allegations of discrimination against white students. Over the summer, the department announced investigations into five medical schools’ admissions policies.

“They are not allocating their resources to racial discrimination complaints, to sexual assault complaints, to the types of complaints that really often speak to systematic discrimination and problems,” said Johnathan Smith, managing director of education at the nonprofit National Center for Youth Law.

That organization also has sued the Education Department for similar information obtained by ProPublica; the lawsuit is pending.

Help Us Report on How the Department of Education Is Handling Civil Rights Cases

Have you recently filed a civil rights complaint or do you have a pending case? We need your help to get a full picture of how the dismantling of the Office for Civil Rights is affecting students, parents, school employees and their communities.

The post Sexual Assaults on Campus No Longer Scrutinized as Closely Under Trump’s Education Department appeared first on ProPublica.

Leave a Reply

Your email address will not be published. Required fields are marked *

error: Content is protected !!