View a PDF online without downloading software

Viewing a PDF in the browser means decoding the file and drawing each page as pixels on screen, with no separate reader application involved. This page renders every page of a PDF you pick (up to the first 100 pages) onto canvases directly in the page, entirely on your device; the file is never uploaded and no plugin or external app is invoked. That makes it a practical way to inspect an attachment you do not fully trust before opening it anywhere else.

View as PDF — runs on your device

How it works

A PDF is not an image format — it is a container of numbered objects: a page tree, font programs, image XObjects, and per-page content streams written in a small PostScript-derived operator language (Tj places text, re draws rectangles, Do paints an image). Something has to interpret those operators to produce anything you can look at. Normally that something is a desktop reader or the browser's built-in plugin; here it is pdf.js, a PDF interpreter written in JavaScript that ships with this page.

When you pick a file, the browser reads it into an ArrayBuffer in local memory — there is no upload step anywhere in the pipeline. The parser locates the cross-reference table at the end of the file, resolves the page tree, then walks each page's content stream. Text operators are shaped using the embedded font programs, vector operators become canvas path calls, and embedded JPEG or JBIG2 images are decoded and composited. The output for each page is a plain <canvas> element: a flat grid of pixels at roughly 1.5–2× CSS resolution so text stays crisp on high-DPI screens.

This rasterization step is exactly why the viewer is a good first stop for suspicious attachments. Malicious PDFs typically rely on being opened by a full-featured reader: they carry embedded JavaScript actions, launch actions, or exploit code aimed at a specific desktop application. Here, none of that machinery runs — the interpreter only executes drawing operators inside the browser's sandbox, embedded document scripts are ignored, and the result you interact with is inert pixels. No file association is triggered, no helper app starts, and closing the tab discards everything.

The one deliberate limit is the 100-page cap. A rendered Letter-size page at 2× scale is about 1275×1650×4 bytes ≈ 8 MB of uncompressed bitmap. Rendering a 500-page contract would ask the tab for several gigabytes; stopping at the first 100 pages keeps peak memory around 800 MB worst case and the scroll experience smooth.

Worked example: previewing a 2.4 MB invoice attachment

An email arrives with Invoice_7741.pdf attached — 2.4 MB, 6 pages, from a sender you do not recognize. Instead of double-clicking it (which would hand it to your desktop reader with full privileges), you save it and drop it into this viewer. Parsing takes about 0.3 seconds; rendering all 6 pages at 2× scale takes roughly 1.5 seconds on a mid-range laptop and holds about 48 MB of bitmap memory. You can now read the whole document: in this case, a generic template demanding payment to an unfamiliar account — enough to delete the email without the file ever touching a PDF application. A legitimate 38-page, 11 MB board report loaded the same way renders in about 6 seconds and scrolls as one continuous column of pages, well under the 100-page cap.

Frequently asked questions

Can I view a PDF online without downloading any software?

Yes. This page decodes the PDF with JavaScript already included in the page and paints each page onto a canvas element. You never install a reader, and the file itself never leaves your device.

Is it safe to open a suspicious PDF attachment here?

It is one of the safer ways to look at one. The file is rasterized to inert pixels inside the browser sandbox, JavaScript embedded in the PDF is not executed, and no desktop reader application is launched. Links inside the document are not clickable in the rendered image.

Is my PDF uploaded to a server when I view it?

No. The file is read with the browser FileReader API into local memory and rendered there. You can load this page, disconnect from the internet, and the viewer still works.

Why does the viewer stop at 100 pages?

Each rendered page is held as an uncompressed bitmap in memory, roughly 8 MB per Letter-size page at 2x resolution. Capping display at the first 100 pages keeps memory use under about 1 GB so the tab stays responsive on ordinary hardware.

Can I select or copy text from the viewed pages?

No, because each page is drawn as a flat image rather than live text. If you need the text itself, use the PDF to Text tool, which extracts the selectable text layer instead of rendering pixels.

Will a password-protected PDF open in this viewer?

Encrypted PDFs that require a password to open cannot be rendered here, because the page content streams are encrypted with a key derived from that password. Remove the password first with a tool where you can supply it, then view the result.

Related tools