PDF Viewer
Browser PDF viewer with zoom, rotate, page navigation, fullscreen, print. Loads via PDF.js — your file never leaves your device. Works offline.
About PDF Viewer
PDF (Portable Document Format) is the most widely used document format in the world — ISO 32000-2 standardized, immutable across platforms, and embedded in every operating system and major web browser. This viewer renders PDFs in your browser using Mozilla's PDF.js engine, which parses the raw byte stream entirely in JavaScript without uploading the file anywhere. You get full navigation (page jumps, keyboard arrows, scroll), zoom from 25% to 400% with fit-to-width and fit-to-page presets, 90-degree rotation, fullscreen and print support, and the file stays on your device. Compatible with PDF 1.4 through 2.0 specifications including text, images, forms, annotations, and embedded fonts.
How is browser PDF viewing different from Adobe Acrobat Reader?
Browser viewers (Chrome's built-in, Firefox's PDF.js, this tool) render the visual document and handle navigation, but they intentionally exclude the heavyweight features of Adobe Reader: digital signature verification with certificate trust chains, JavaScript-driven dynamic forms (XFA), full Acroform editing with field validation, document encryption/decryption with user passwords, accessibility tagging analysis, and 3D model rendering (U3D, PRC). For pure reading and printing, browser viewers are faster, lighter, and far more secure — Adobe Reader has historically been a major attack vector due to its enormous attack surface. For signing PDFs, editing complex forms, or auditing accessibility, use Adobe Acrobat Pro, PDF-XChange Editor, or Foxit. For everything else, the browser is the better choice.
Why does my PDF look different in this viewer compared to Adobe Reader?
Three common reasons: (1) Font substitution — PDFs reference fonts that may not be embedded. Adobe Reader has a built-in font database for common fonts (Helvetica, Times, Courier); PDF.js substitutes from web-safe fallbacks, which can shift text wrapping and line breaks. PDFs created with 'Embed all fonts' enabled render identically everywhere. (2) Color profiles — printed PDFs in CMYK render slightly differently from RGB in browsers; this matters for designers but not for reading. (3) Form fields and annotations may render differently because PDF.js implements a subset of the spec. For pixel-perfect rendering matching the original author's intent, view in the same software that created the file or use Adobe Reader.
Can I extract text or search inside the PDF here?
Currently this viewer focuses on visual rendering and navigation. For full-text search inside a PDF, use Ctrl+F (Cmd+F on Mac) in Chrome or Firefox's built-in PDF viewer, which supports find-in-page on text-layer PDFs. If your PDF is a scanned image with no text layer (common for archival documents), you need OCR first — try our PDF to Text or PDF to Markdown tools which run Tesseract OCR in the browser to extract searchable text from scanned PDFs. To extract specific pages, use our PDF Split or Extract PDF Pages tool. The text layer of a born-digital PDF (created from Word, LaTeX, etc.) is searchable instantly; image-based scans require OCR processing first.

What is the maximum PDF size I can view?
Our hard limit is 50 MB to ensure smooth rendering on mobile devices and slow connections. In practice, PDF.js handles much larger files (up to several hundred MB) on desktop browsers, but memory pressure grows quickly with embedded high-resolution images. The most demanding PDFs are scanned books at 300 DPI color where each page can be 5-10 MB; a 100-page book hits the 50 MB limit fast. To view larger PDFs, you can: (1) compress the PDF first using our Compress PDF tool which can reduce sizes by 50-80% with negligible quality loss; (2) split the PDF into chunks with our Split PDF tool; (3) open it in your OS's native viewer (macOS Preview, Windows Edge browser) which has no size limit.
Why do scanned PDFs render slower than digital PDFs?
A scanned PDF is fundamentally a wrapper around JPEG, PNG, or JBIG2 images — one image per page. PDF.js must decode each image at the requested zoom level, which is CPU-intensive. A born-digital PDF created from Word or InDesign stores text and vector graphics, which render almost instantly at any zoom. The performance gap can be 50-100x for visually similar pages. To speed up scanned-PDF viewing: (1) reduce image DPI from 600 to 300 before saving (300 DPI is print-quality); (2) use grayscale instead of color where possible (3x smaller); (3) run OCR which often allows the source PDF to be reauthored with searchable text and lower-resolution images via 'OCR and replace images' in Adobe Acrobat or ABBYY FineReader.
Is it possible to view password-protected PDFs?
PDF encryption uses two passwords: a user password to open the document, and an owner password to modify it (print, copy text, etc.). PDF.js supports decrypting user-password-protected PDFs but most embedded viewers (including this one) skip that feature for simplicity. To view a password-protected PDF here, first remove the password using our Unlock PDF tool, which prompts for the password locally and outputs an unlocked copy without uploading. Owner-password-only PDFs (where you can open but not edit/print) are even easier — those restrictions are advisory and most full-featured PDF tools (including Acrobat with the user password, qpdf CLI, or our Unlock PDF) bypass them in seconds. For high-security PDFs encrypted with AES-256 and an unknown password, no tool can recover the contents without the key.
Can I view PDFs with embedded JavaScript or interactive forms?
PDF.js supports static form rendering (you can see fields and their default values) and basic AcroForm interaction (clicking checkboxes, filling text fields) but does NOT execute embedded JavaScript or render XFA dynamic forms. XFA forms (used by some government, tax, and enterprise PDFs from Adobe LiveCycle) require Adobe Reader specifically — Chrome and Firefox display them as plain forms missing dynamic behavior. JavaScript in PDFs is mostly used for client-side form validation and is intentionally not executed in browser viewers for security reasons (PDF JS has been a historic source of zero-day vulnerabilities). If you receive a PDF that says 'Please open this in Adobe Reader' or shows missing fields, the document depends on XFA or PDF JavaScript and you need the official Adobe Reader to interact with it fully.
