All essentials

Drop a PDF and I'll check each page.

Free tool

Scan Check

Check each page of a PDF: does it have a text layer, and is it blank? Export the report as CSV, and remove blank pages after a preview.

Good to know

  • Blank is judged from a low-resolution render, so a faint mark or a speck-filled scan can be judged wrongly. Check the preview before you remove pages.
  • Pages with no text layer are candidates for OCR PDF.
  • A text layer can exist and still be poor. This checks only that one is there.

Your files stay on your machine

This tool runs entirely inside your browser tab. Nothing is uploaded, stored, or sent to a server — close the tab and every trace is gone.

These are the free ones — see the full suite

How big a file can it take?

There is no upload, so there is no upload limit — but the work happens in this tab, which means your browser’s memory is the budget. Nothing here will refuse a file for being large; a big enough one simply gets slow and, eventually, reloads the tab. The figures below are rules of thumb on a desktop browser, not enforced caps. On a phone or tablet, expect a good deal less.

  • A thumbnail is kept for every page from the moment the file opens, so page count binds: comfortable to about 500 pages, sluggish past 1,500.
  • Checking renders each page once more to judge blankness, which sets the time. Those renders are measured and thrown away.

Password-protected PDFs are declined whatever their size — unlock the file first. If a run does die on a long document, splitting it into volumes and working through them one at a time is the reliable way round it.

Built on open source

The Essentials tools do their work in your browser using these open-source libraries, used under the licenses below. Each remains the copyright of its authors.

  • pdf-lib — MIT · creates and edits the PDFs you download
  • pdf.js — Apache-2.0 · reads your PDF and renders the page previews
  • SheetJS (xlsx) — Apache-2.0 · reads Excel workbooks — .xlsx, .xls, .xlsb and .ods
  • hyparquet — MIT · reads Apache Parquet files
  • hyparquet-compressors — MIT · the Parquet codecs beyond Snappy — Gzip, Zstd, Brotli, LZ4
  • JSZip — MIT · bundles multi-file results into one ZIP
  • Tesseract.js — Apache-2.0 · reads the text on scanned pages in OCR PDF, with its self-hosted engine and English data
  • exifr — MIT · reads photo dates, locations and orientation
  • geotiff.js — MIT · reads GeoTIFF elevation models
  • LERC — Apache-2.0 · decodes LERC-compressed GeoTIFFs, through geotiff.js
  • zstddec (with Zstandard) — MIT, BSD-3-Clause · decodes Zstandard-compressed GeoTIFFs, through geotiff.js
  • pako — MIT, Zlib · compresses and decompresses data inside pdf-lib, JSZip, PizZip and geotiff.js
  • shpjs — MIT · reads zipped Shapefiles
  • docxtemplater — MIT · fills the fields in Word templates
  • PizZip — MIT · opens Word templates for filling
  • jsdiff — BSD-3-Clause · finds the word changes in PDF Compare
  • msgreader — Apache-2.0 · reads Outlook .msg files
  • Lucide — ISC · the icons throughout these tools
  • React — MIT · the interface itself
  • Next.js — MIT · builds and serves these pages

pdf.js ships fallback fonts contributed by Foxit Software, redistributed here as part of pdf.js. JSZip is dual-licensed; it is used here under the MIT license.