Offline · DOCX and PPTX · CI-ready
Check DOCX and PPTX for accessibility issues.
officelens opens a Word or PowerPoint file, reads it directly, and points at the structure that blocks assistive technology. It runs offline and never uploads a document.
curl -fsSL https://raw.githubusercontent.com/srivtx/officelens/main/install.sh | sh
Installs the officelens binary with Bun. It is not published to npm; bunx github:srivtx/officelens#main runs it without installing.
$ officelens fixtures/bad.docx fixtures/bad.pptxfixtures/bad.docx (docx) errors:2 warnings:2 info:0ERROR DOCX-ALT-001 word/document.xml Drawing (docPr id=1) has no alt text (descr or title).WARNING DOCX-HEAD-002 word/document.xml Document contains body text but no headings.WARNING DOCX-LINK-006 word/document.xml Hyperlink text contains a raw address: "https://example.com".ERROR DOCX-TBL-005 word/document.xml Table's first row is not marked as a header (w:tblHeader).fixtures/bad.pptx (pptx) errors:1 warnings:2 info:0ERROR PPTX-ALT-001 ppt/slides/slide1.xml Missing alternative text (descr) for shape "Picture 1"WARNING PPTX-LANG-004 ppt/slides/slide1.xml No language specified on this slide's text runsWARNING PPTX-TBL-003 ppt/slides/slide1.xml Table does not have a header row (firstRow) enabled
What it catches
The failures that make a Word or PowerPoint file hard to use with a screen reader, each with a plain explanation.
- Images with no alt text
- A picture, chart, or shape that a screen reader cannot describe is announced as nothing useful.
- Documents with no headings
- Body text with no headings leaves assistive technology without an outline to navigate.
- Heading levels that jump
- A jump from one level to the next, such as H1 straight to H3, breaks the outline a screen reader relies on.
- Tables with no header row
- A table whose first row is not marked as a header cannot be navigated cell by cell.
- No document language
- Without a language set, a screen reader may mispronounce the whole document.
- Slides with no title
- A slide without a title gives a screen reader no landmark to jump to.
Quick start
Install once, then point it at a file or a directory. The exit code is the CI gate.
# install the binary$ curl -fsSL https://raw.githubusercontent.com/srivtx/officelens/main/install.sh | sh# audit one file$ officelens report.docx# audit a directory, and fail CI on warnings too$ officelens --dir docs/ --fail-on warning
Every flag, the exit codes, and the library API are in Usage.
Playground
Upload a .docx or .pptx file, or run one of the bundled samples. Everything runs in your browser; nothing is uploaded.
Runs entirely in your browser. Nothing is uploaded.
Choose or drop a document
DOCX and PPTX only. Parsed locally.
No file handy?
Audit a bundled sample with the same rules as the CLI.
No document audited yet.
| Severity | Rule | WCAG | Location | Message |
|---|
Documentation
The landing page is the pitch. The details live on four short pages.
- Rules
- Every DOCX and PPTX rule code, the OOXML parts a run reads, and the static pipeline behind it.
- Usage
- Install, every CLI flag, the exit-code scheme, JSON output, and the library API.
- CI
- SARIF 2.1.0 and GitHub code scanning, with a workflow you can paste.
- FAQ
- Scope, limitations, and how officelens compares to the checkers you already have.