Duplex pages to sheets calculator
The duplex pages to sheets calculator tells you how many physical pieces of paper a document needs when both sides of every sheet can be printed.
Run — free
Enter the document's page count and receive the required sheet count, the number of printed sides, and whether the final sheet leaves one side blank. Odd page totals are rounded up automatically, making the result useful for print estimates, supply planning, classroom handouts, office jobs, and production checks without uploading or changing the document itself.
Convert logical pages into physical paper sheets
A document page is a logical unit of content, while a sheet is the physical piece of paper that passes through a printer. In duplex printing, one sheet can hold two pages: one on the front and one on the back. Enter the total number of pages in the document, and the calculator divides that count by two and rounds upward to the next whole sheet. A ten-page document therefore needs five sheets, while an eleven-page document needs six. The upward rounding matters because half a physical sheet cannot be loaded, purchased, mailed, or counted as finished output. The result reports the original pages and the calculated sheets so that both quantities remain explicit in an automated workflow. It also reports printed_sides, which equals the page count, and blank_sides, which shows whether an unused reverse remains. The calculation assumes ordinary duplex output with one document page on each printed side. It does not place multiple pages on one side, rearrange pages, or inspect a PDF file.
Understand even and odd page counts
Even page counts fill every required sheet completely when the job starts with page one on the front. For example, twenty-four pages occupy twelve sheets and leave zero blank sides. Odd page counts always require one additional sheet for the final page. A twenty-five-page document occupies thirteen sheets: twelve sheets carry two printed pages each, and the thirteenth carries page twenty-five on one side while its other side remains blank. The blank_sides field makes this edge case visible instead of hiding it inside the rounded result. Its value is always zero for an even page count and one for an odd page count under this calculator's assumptions. This distinction can matter when checking whether a chapter ends on a preferred side, estimating impressions separately from paper consumption, or explaining why an odd total increased the material requirement. The tool does not insert a blank document page or alter pagination; it only describes the physical capacity left unused after the supplied pages are assigned sequentially to fronts and backs.
Use the result in print estimates and workflows
Use sheets when estimating paper stock, package thickness, printer tray loads, or the number of physical handouts produced from a known page total. Multiply the returned sheet count by the number of copies outside this calculator if you need stock for a full run. Keeping copies separate makes the result unambiguous: this capability answers the sheet requirement for one copy of the document, while your workflow can apply any production quantity, spoilage allowance, cover stock, or finishing rule appropriate to the job. The input must be a safe whole number greater than zero because documents cannot contain fractional or negative pages, and unsafe integers could lose precision in JavaScript. Invalid values are rejected instead of silently rounded. No PDF bytes are uploaded, parsed, stored, or rewritten; only the numeric page count is processed. The same input always produces the same output because the algorithm uses no network, randomness, or clock. Automated API requests cost $0.002, and the browser version can be used for quick individual checks.
What you can do with it
Estimate paper stock
Convert a known document page total into the sheets needed for one duplex-printed copy before ordering or loading paper.
Check an odd final page
Confirm that an odd page count needs one extra sheet and leaves one side of the final sheet blank.
Prepare print job calculations
Feed the per-copy sheet count into a larger workflow that applies copies, waste allowances, packaging, or finishing rules.
FAQ
How is the number of sheets calculated?
The page count is divided by two and rounded up to a whole number because each duplex sheet has two printable sides.
What happens when the document has an odd number of pages?
The final page uses one side of an additional sheet, so blank_sides is 1 and the sheet count is rounded up.
Does the calculator include multiple copies?
No. It returns the sheets for one copy. Multiply sheets by the required copy count in your print workflow.
Does this upload or modify my PDF?
No. It accepts only a page count and performs arithmetic; it does not read, upload, store, or change a document.
What does an API request cost?
Each API request costs $0.002. The calculation is also available in the browser.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/pdf/duplex-pages-to-sheets \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pages":7}'const res = await fetch("https://api.kit.forhosting.com/pdf/duplex-pages-to-sheets", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pages": 7
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/duplex-pages-to-sheets",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pages": 7
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/duplex-pages-to-sheets", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pages":7}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pages":7}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/duplex-pages-to-sheets", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"pages": 7
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.duplex_pages_to_sheets",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_mb | 25 |
max_pages | 200 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |