What LocalPress converts, and what survives
Pictures, text and spreadsheets. Eight picture formats (JPG, PNG, HEIC, WEBP, AVIF, GIF, BMP and SVG) and four text ones: plain text, Markdown, HTML and CSV. A PDF can be dropped in too, though it is not converted: it is already the output format, so its pages are carried into a combined document as they are. Office documents are being built and are deliberately not offered yet.
Text and tables
Text keeps its structure
A converted document holds real text rather than an image of it. You can search it, select it, copy out of it and let a screen reader read it, which is most of what a PDF is for and the first thing lost by converters that rasterise the page.
Markdown keeps its headings, its lists and its tables. A table is most of why anyone reaches for a converter, and flattening one into a line of text with the pipes still in it is the commonest way this goes wrong. HTML keeps its structure too, and is stripped of everything that executes or loads: script, styles, frames and remote images never reach the page.
Images inside an HTML file are dropped rather than fetched. This page is forbidden a network connection, so a remote image could not load even if it were kept, and a document with silent holes where pictures should be is worse than one that says it carries none.
A spreadsheet stays a table
A CSV becomes a real table with its first row as the heading, repeated at the top of every page. A twelve-page export whose headings appear only on page one is unreadable by page three. The delimiter is worked out from the file, so a semicolon export, which is what most of Europe produces because the comma is their decimal separator, is read without being told. Tab-separated files, which is what you get from copying out of a spreadsheet, are read the same way.
Quoted fields are read properly. An address with a comma in it, a price written with a thousands separator, a sentence with a line break inside it: all stay in one cell. Splitting a CSV on its commas, which is the quick way to do this, corrupts every file that contains one.
A table too wide for the page is split, never trimmed
Thirty columns do not fit across A4 at any readable size. The obvious answer is to let the table shrink to fit, and it does not work: measured, a thirty-column table rendered that way came out with eighteen columns and the other twelve silently gone, drawn past the edge of the paper. Nothing in the file says so: it opens, the table looks complete, and the last columns are simply not there.
So a table wider than the page is broken down its columns into blocks that do fit, each with its own heading row and a caption saying which columns it holds. Every cell survives. The cost is that a wide table is read in blocks rather than across one line, and choosing landscape or a larger page size puts more columns in each block.
The encoding is detected before decoding
A text file written on Windows is often not UTF-8, and reading it as though it were turns every accent and curly quote into a replacement character. LocalPress checks for a byte order mark, tries UTF-8 strictly, and falls back to Windows-1252 when that fails, which is where Word's apostrophes and dashes live. UTF-16 is recognised too, with or without its mark.
What it will not do
What it will not pretend to draw
The font that ships with the converter covers Latin, Greek and Cyrillic, so most European languages convert as they are, accents and all. Chinese, Japanese, Arabic and Hebrew need a font pack, and the row that needs one says so before converting: it names the script and offers the pack with its measured size written on the button, so nothing downloads until you press it. Arrows and mathematical symbols have a pack of their own.
Korean, Thai and Devanagari are refused outright, because no pack here draws them. Emoji are reported the same way. A refusal is the point: converting a file the font cannot draw produces a PDF of blank pages that only reveals itself when you open it, by which time the original may be gone.
Pictures
SVG stays a drawing
An SVG is not turned into pixels. It is written into the PDF as vectors, so a logo or a diagram stays sharp at any zoom and prints at whatever resolution the printer has. Converters that rasterise an SVG to fit a page throw away the one property that made the format worth keeping, and the loss only becomes obvious later, on paper.
Photographs come out the right way up
A phone held sideways does not rotate the picture it records. It stores the pixels the way the sensor saw them and writes a tag saying which way up the result should be. Software that ignores that tag prints the photograph on its side. LocalPress reads it, and then measures the page against the size the picture is actually drawn at rather than the size it happens to be stored at, which is the part that is easy to get half right.
HEIC, which your browser cannot read
An iPhone photograph is usually a HEIC, and no browser except Safari can decode one. That is why the camera roll so often has to be exported before it can be used anywhere. LocalPress decodes it here, on your machine, usinglibheif compiled to WebAssembly. The decoder is 1.4MB and is downloaded only when you actually drop a HEIC, so nobody else pays for it.
It is one of several libraries this converter runs, and none of them is an analytics or advertising script. pdfmake builds the document, pdf-lib merges PDFs that arrived as PDFs, markdown-it and DOMPurify read Markdown and HTML, Papa Parse reads CSV, bidi-shaper shapes Arabic and Hebrew, and libheif decodes iPhone photographs. Every one of them runs in your tab under the policy that forbids this page a network connection, so none of them can send anything anywhere whatever it was written to do.
libheif is the one published under theLGPL-3.0 rather than the MIT licence the rest carry, so the exact build ships unmodified as its own file, itsfull licence and notices ship with it, and its source is public.
A photograph taken with the phone held sideways is stored the way the sensor saw it, with a rotation recorded beside it in the file. That rotation is honoured, so the picture arrives on the page the way it looked on the phone.
Small pictures are not blown up
An icon dropped onto an A4 page is printed at its own size and centred on the sheet. Enlarging it would only add soft edges. Anything larger than the page is scaled down to fit, and keeps its proportions exactly.
Questions about formats
Can I convert a Word or Excel document?
Not yet. Office formats are being built and are deliberately not offered, because a chip promising a format the converter refuses on drop is worse than one promising less. Save as PDF from the application, or export to Markdown or CSV, and this will take either.
What happens to a spreadsheet with more columns than fit on a page?
It is split down its columns into blocks that each fit, and every block gets its own header row and a caption naming the columns it carries. It is never trimmed. Giving each column an equal share does not make a wide table fit: a thirty-column table rendered as one block came out with eighteen columns and the other twelve silently gone.
Does converted text stay selectable?
Yes. A converted document holds real text rather than an image of it, so you can search it, select it, copy out of it and let a screen reader read it. That is most of what a PDF is for and the first thing lost by converters that rasterise the page.
Why can this read HEIC when my browser cannot?
An iPhone photograph is HEIC, and no browser except Safari decodes one. LocalPress carries a decoder that arrives only when you drop a HEIC file, a 1.4MB chunk that everyone else never downloads. It is libheif, the one library here published under the LGPL rather than the MIT licence, and it ships unmodified with its licence text.
Will my photograph come out rotated?
No. A photograph taken on its side carries an EXIF orientation flag rather than rotated pixels, and a converter that ignores it produces a sideways page. The orientation is read and applied, and HEIC files are handled by the decoder, which honours the rotation recorded in the container.
Does an SVG come out as a picture of itself?
No. An SVG is drawn as vectors, so it stays sharp at any zoom rather than becoming a blurred bitmap at the size it happened to be placed.
What happens to a file in a script the bundled font cannot draw?
It is refused before converting, with the script named. Converting it would produce pages of blanks that look successful until you open the file. Where a font pack would fix it, the pack is offered with its size written on the button, and nothing is downloaded until you press it.
Convert something
The converter is on the home page. Drop a file on it, or readhow to check that nothing is uploaded first. It takes about a minute with the network panel open, and it is the whole reason this tool exists rather than one of the dozen that ask you to upload the file instead.