Integration · Browser
Run okra on any PDF in your browser
A Chrome extension that turns whatever PDF you're looking at into an accessible-HTML twin, clips it into okra, or audits it for accessibility — without leaving the tab.
Add to Chrome
The workflow gap it closes
PDFs show up everywhere you browse — a filing linked from a thread, a spec opened straight in the Chrome PDF viewer, a report embedded in someone's docs page. To do anything real with one, you normally download it, find the upload box, and start a job somewhere else. The extension removes that detour. It detects the PDF on the current tab and gives you three okra actions right there: open it as a streaming accessible-HTML twin, clip it into okra, or run an accessibility audit. The PDF you're already reading is the input — no save-as, no re-upload.
Install, open a PDF, click okra
The extension reads the active tab. When it finds a PDF it lights up; pick an action and okra takes the source from there.
- Add okra to Chrome from the Web Store.
- Paste your okra API key into the extension once (find or mint it at okrapdf.com/settings, tab API keys).
- Open any PDF — a direct link, an embedded viewer, or the built-in Chrome PDF viewer.
- Click the okra toolbar icon. Choose: View as accessible HTML, Clip to okra, or Run accessibility audit.
- The accessible-HTML twin streams in as it's built; the audit returns per-criterion findings; a clip lands in okra for parsing and queries.
How it finds the PDF
Detection is layered so it works whether the page is a raw file or a wrapper around one.
- Reads the response content-type to catch direct application/pdf documents.
- Scans the page for embed and object elements pointing at a PDF.
- Recognizes Chrome's built-in PDF viewer, where there's no normal <a> link to grab.
- Falls back to the tab URL when the document is the file itself.
- Sends the resolved source to okra — the same parse behind the API, so a clip yields the same clean, structured output.
Three actions, one source of truth
Each action maps to an okra surface you can also reach from the web or API, so what you click in the toolbar matches what your code does later.
- View as accessible HTML — opens the PDF as a streaming accessible-HTML twin, reading-order linearized and rendered as you watch.
- Run accessibility audit — checks the current tab's PDF against tagging, language, title, figure alt-text, and table-header criteria, with a WCAG 2.2 AA rule-area rollup.
- Clip to okra — pulls the PDF into okra as owned, structured output you can query, cite, and reuse.
- Authenticated with your own okra API key, so clips and audits run under your account, not a shared sandbox.
Who reaches for it
It's built for people who hit PDFs mid-task in the browser rather than as a planned upload. Developers sanity-check a parse against the real document before wiring up the API. Accessibility reviewers audit a published PDF in place and read the findings against the live page. Anyone reading a long PDF can flip it to an accessible-HTML twin that linearizes reading order. The extension is the fast path; the API and MCP connector are the same engine when you're ready to script it.
Frequently asked questions
Do I need an okra API key to use the extension?
Yes. The extension runs clips and audits under your account, so you paste your okra API key once. Find an existing key or mint a new one at okrapdf.com/settings under the API keys tab.
Does it work on PDFs opened in Chrome's built-in viewer?
Yes. The extension recognizes Chrome's native PDF viewer specifically, where there's no ordinary download link on the page, and falls back to the tab URL when the document is the file itself.
What does 'view as accessible HTML' actually produce?
It opens the PDF as a streaming accessible-HTML twin: the document is parsed and rendered as linearized, reading-order HTML that streams in as it's built, rather than a flat image of the page.
How is this different from the okra API?
It's the same parsing engine, reached from your browser instead of your code. A clip produces the same clean, structured output you'd get from the API. The extension is the in-tab fast path; the API and MCP connector are for automation.