PDF → HTML
Advanced extraction · Pixel-accurate or semantic output
Drop your PDF here
or
Every path, colour change (RGB/CMYK/gray/transparent) and CTM matrix transform is traced with full graphics state stack.
showText operators are intercepted; the active fill colour at that exact point becomes the text colour — per character.
H/V lines are clustered into a grid. Missing interior segments are detected and output as colspan/rowspan.
X-density histogram analysis detects multi-column layouts. Semantic output correctly flows text per column.
Bullet characters and numbered patterns are detected. Line spacing analysis groups lines into paragraphs.
Sub/superscript text is detected by font size and Y-position and rendered with correct HTML sup/sub tags.
Positioned: pixel-exact absolute layout. Semantic: headings, paragraphs, lists — clean, accessible, responsive HTML.
100% Private
Parsing runs in your browser via PDF.js. Nothing uploaded, ever.
Free forever
No signup, no page cap, no watermark on the HTML.
Clean markup
Semantic mode emits headings, paragraphs, lists and tables — no inline junk.
Frequently Asked Questions
Semantic or positioned — which do I want?
Use semantic when you want reflowable, accessible HTML for a website or content system. Use positioned when you need the visual layout preserved to the pixel — good for archival or side-by-side comparison.
Does it work on scanned PDFs?
Only if they already have a text layer. For pure image scans, run our Searchable PDF (OCR) tool first.
How are columns detected?
We build an x-density histogram of every text run and find the vertical gaps between clusters. Those gaps mark column boundaries and each column is flowed independently.
What about tables?
Border-based tables are detected by clustering horizontal and vertical lines into a grid. Rules-less tables fall back to spaced-cell heuristics inside paragraphs.
Can I self-host the output?
Yes — everything is embedded in a single .html file with inline CSS. Drop it anywhere: static host, CDN, or an email.
