KDP Paperback PDF Preflight Checker (interior and cover)
Pricing
from $50.00 / 1,000 pdf checkeds
KDP Paperback PDF Preflight Checker (interior and cover)
Checks a paperback interior or cover PDF against Amazon KDP's published print rules before you upload: page size for your trim and bleed, page count, gutter and outside margins, embedded fonts, transparency, bookmarks, annotations, 7 pt minimum type, 300 DPI images. One clear report per file.
Pricing
from $50.00 / 1,000 pdf checkeds
Rating
0.0
(0)
Developer
Ars Technis
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Security
Limited permissionsShare
KDP Paperback PDF Preflight Checker
Check a paperback interior or paperback cover PDF against Amazon KDP's published print rules before you upload it, and get one clear report per file: what passes, what fails, and on which pages.
It is built for self-publishers, puzzle- and activity-book makers, formatting services and AI agents that produce print-ready PDFs. We wrote it because our own books kept meeting these rules, and every check below is one we needed.
What it checks
Every check names the KDP help page it comes from. Statuses: pass, fail, warn (worth a look) and info.
| Check | Rule (KDP Help) |
|---|---|
| File size up to 650 MB | Paperback Submission Guidelines (G201857950) |
| Not encrypted or password-protected | G201857950 |
| Page count within KDP's limits for your trim and paper: at least 24 (72 for standard color); at most 828 white / 776 cream / 600 standard color / 828 premium color for trims up to 8 x 10 in, 800/750/600/800 for 8.25 in wide trims, 590/550/600/590 for 8.5 x 8.5 and 8.5 x 11, 780/730/-/590 for A4 (KDP's print-options table as published by third parties, October 2026; for other custom trims only the minimum is checked). An odd page count is counted as the next even number, as KDP adds a blank page. Covers: one page | GVBQ3CMEQW3W2VL6; G201953020 |
| Every page exactly your trim size, or trim + 0.125 in wide and + 0.25 in tall with bleed (the page's crop box, which is what shows, clipped to the media box as the PDF specification says; a page's UserUnit is applied; page boxes, rotation and resources that are malformed on a page are taken from the page tree above it, as Poppler reads them) | GVBQ3CMEQW3W2VL6 |
| Text inside the margins: the inside (gutter) margin for your page count (0.375 in up to 150 pages, 0.5 in up to 300, 0.625 in up to 500, 0.75 in up to 700, 0.875 in up to 828), and 0.25 in top, bottom and outside (0.375 in with bleed). Odd pages are right-hand pages, so their gutter is on the left. | GVBQ3CMEQW3W2VL6 |
| Without bleed, raster image boxes inside the margins (a warning: KDP prints to the edge only from files set up with bleed; an image clipped to a smaller frame can show here) | GVBQ3CMEQW3W2VL6 |
| All fonts embedded | G201857950 |
| No transparency (opacity below 100% where something is painted under it: stroke opacity on a stroke, fill opacity on a fill, text, shading or image, in pages, forms, tiling patterns and Type 3 glyphs; soft masks, images with an alpha channel, blend modes other than Normal); transparency groups alone are a warning | G201857950 |
| No bookmarks; no annotations (comments, links, form fields); layers (optional content) are a warning: flatten them | G201857950 |
| No text smaller than 7 pt (interior): each glyph's height across its baseline on the page, from its font size and its full transformation, so turned, slanted and squashed text is measured as printed; invisible text (render mode 3, as in a scan's OCR layer) is not printed and not measured | G201857950 |
| Images at 300 DPI or more at their printed size on both pixel axes, from the transformation that draws each image, so stretched and turned images are measured as printed (a warning below) | G201857950 |
| Blank pages: at most 4 in a row inside the book and 10 at the end. Each page's crop box is rendered as a press prints it (Poppler, CMYK with overprint, at 36 dpi; very large pages at most 1200 pixels a side); a page with no ink above 2% in any channel is blank. Clipping, shadings, spot colours, image decoding, form boxes and overprint are all followed this way; layers are seen as shown on screen (see the layers warning). Marks smaller than about one pixel at 36 dpi (0.7 mm), such as a very faint hairline, may not register | KDP blank pages (G201834260) |
Cover: height = trim height + 0.25 in; with interiorPages and paper, width = 2 x trim width + spine + 0.25 in, the spine being pages x 0.002252 in (white or standard color), 0.0025 in (cream) or 0.002347 in (premium color); without them, the spine width the cover implies | G201953020 |
What it does not check
- KDP's own previewer and review have the last word; a clean report means these rules pass, not that KDP will accept the book.
- Line weights, grey levels, colour profiles, crop marks drawn as ordinary lines, placeholder text, vector shapes in the margins and file names are not checked.
- Hardcover covers and hardcover-specific limits are not checked: this Actor follows KDP's paperback pages.
- Type size and margins are measured on the text the PDF draws: text hidden by a clipping path is left out (a clipping path is followed as the box around it), but text hidden by text clipping (render mode 7), by a layer that is switched off, or under an opaque shape is still measured. Text and images inside tiling patterns, or drawn by a Type 3 font's glyphs, are checked for embedded fonts and transparency, not for type size, margins or resolution (a Type 3 glyph is measured at its font size, through the font's FontMatrix).
- A page's UserUnit (PDF 1.6) is applied to the page size only; type size, margins and image resolution are measured in the page's own units, as Poppler renders them.
- If a page cannot be read or rendered, the checks that need it are reported as warnings ("Not checked"), not as passes.
- A glyph whose code is a simple font's space (32 or 160) counts as a space, and so does a whitespace character from a CID font; every other glyph counts as text.
Input
| Field | Default | Notes |
|---|---|---|
pdfUrls | Public links to the PDFs (up to 50 per run), each up to 650 MB. Leave empty to check a bundled 24-page 6 x 9 in sample interior instead: no per-PDF charge (only Apify's small Actor-start fee applies), and it has one planted mistake (a line in the outside margin on page 5), so you see what a failing check looks like | |
trimSize | 6x9 | Width x height in inches, as chosen in KDP, e.g. 5.5x8.5, 8.5x11 |
bleed | false | On if the interior has bleed |
fileType | interior | interior or cover |
paper | white | white, cream, standard-color or premium-color |
interiorPages | empty | For a cover: the interior's page count, to check the cover's width exactly |
Output
One dataset item per file: file, url, pages, failed and warnings (counts), and results, a list of {check, status, message, rule, pages} (the pages a problem was found on, up to 50 listed). The OUTPUT record says how many files were checked, lists any link that could not be fetched or read, and lists links left unchecked when your maximum cost per run was reached (notChecked).
Example (shortened), a 10-page test file with a standard font, small edge text, a 50% grey box, a bookmark, a link and a 30 DPI image:
fail page-count 10 pages (KDP supports 24 to 828 for paperbacks; your trim and ink may allow fewer)fail fonts-embedded Fonts not embedded: Helveticafail transparency Transparency found: opacity ca=0.5. KDP asks for flattened files.fail bookmarks The file has bookmarks (an outline); remove them.fail annotations 10 page(s) carry annotations (comments, links or form fields).fail margins-text Text runs into the margins on 10 page(s): it must keep the inside margin of 0.375 in ...fail font-size Text smaller than 7 pt on 10 page(s) (smallest 6.0 pt).warn image-resolution Images below 300 DPI at their printed size on 10 page(s) (lowest 30 DPI).
Pricing
You pay per file checked (see the pricing tab). A link that cannot be fetched, or a file that is not a PDF, is listed in OUTPUT.problems and not charged.
Privacy
The Actor downloads each PDF from your link into the run's temporary space, checks it, and deletes it; only the report is stored, in your own Apify storage. It is plain Python code (pikepdf and pdfminer.six) plus Poppler's pdftoppm for rendering pages (see CREDITS.md); it calls no AI model and no other service.