File recovery, on the record
Your file isn’t dead.
It’s just badly zipped.
Every .xlsx, .docx and .pptx is really a ZIP full of XML, and old .xls, .doc and .ppt files work too. Drop one here and we’ll open it up, check every part against the official ECMA-376 schema, and show you exactly what broke — including the schema faults that AI-generated files trip over and plain XML checks never catch.

Drop the evidence here
.xlsx.docx.pptx.xls.doc.ppt— or click to browse
No broken file handy? Borrow one of ours:
Recovers more than Office's own repair.
384 damaged Word, Excel and PowerPoint files, new and pre-2007, given to Microsoft Office's "recover the contents" prompt, to LibreOffice and to us.
- Content recovered
- 81%
- Office's own repair: 53%. LibreOffice: 53%.
- Files that open
- 84%
- Office's own repair: 65%. Old .xls, .doc and .ppt come back as modern files.
- False alarms
- 0
- On 5,342 real workbooks Excel opens. Good files come back byte for byte.
On 234 files broken in the wild, 77% open after our repair, to 47% after Office's.
See the full benchmarkThe same checks, one API call away
- One call, one verdictok, tolerated, needs_repair, broken — plus whether Office opens it.
- Repair in the same breath/v1/repair returns the fixed file, or the same bytes if nothing was wrong.
- No false alarmsZero on 5,342 real workbooks Excel opens. Built for automated gates.
- Nothing keptFiles are processed in memory and never stored or logged.
curl https://api.ihatecorruptfiles.xyz/v1/check \
-H "Authorization: Bearer $IHCF_API_KEY" \
-F file=@report.xlsx{
"request_id": "5f0e7c1a-6f42-4f3c-9f0b-2a1d8c7e4b90",
"format": "xlsx",
"bytes": 5281,
"verdict": "needs_repair",
"opens_in_office": true,
"repairable": true,
"repair_level": "SEMANTICS",
"findings": [],
"actions": [
{
"stage": "semantics",
"code": "Sem_NumberStoredAsText",
"fix": "convert-text-to-number",
"description": "1 cell(s) held a number typed as text…: C2.",
"part": "xl/worksheets/sheet1.xml",
"location": null,
"advisory": false
}
],
"reason": null,
"engine_version": "2.0.0"
}How a repair runs
- 01Container
Rebuild a package whose ZIP directory is damaged
- 02XML
Close unbalanced tags and escape stray entities
- 03Package
Repair relationships and content types
- 04Schema
Element order, attribute values and references
- 05Gate
Withhold the file unless the Open XML SDK accepts it