Opens in a new tab

Paper Size Data and API

Every dimension on this site is open data with a free API. No key, no account, no rate limit worth worrying about. Use it in a spreadsheet, an app, a classroom or a print-room wall chart.

Download the whole dataset

The dataset covers 324 sizes across 23 series: ISO A, B and C, US and ANSI, ARCH, envelopes, photo prints, business and ID cards, book trim sizes, newspapers, billboards, and regional standards from Japan, China, France, Canada, Colombia and the British Imperial system.

The API

Base URL: https://papersizes.guide/wp-json/papersizes/v1. Every response is JSON, sent with Access-Control-Allow-Origin: * so it works from browser code, and cached for an hour.

Every size

GET /sizes

Optional parameters: fields=full adds centimetres, inches, points, pixels at six resolutions, aspect ratio, area and diagonal. series=a filters to one series. format=csv returns a spreadsheet instead of JSON.

curl "https://papersizes.guide/wp-json/papersizes/v1/sizes?series=a&fields=full"

One size

GET /size/{slug}

Returns a single size with everything derived. The slug is the last segment of its page URL, so A4 is a4 and No. 10 envelope is 10-envelope.

curl "https://papersizes.guide/wp-json/papersizes/v1/size/a4"

Identify a size from measurements

GET /find?w=210&h=297&unit=mm

Returns the nearest matches ranked by difference, each with a diff_mm and a rotated flag. Units accepted: mm, cm, in, pt. Orientation does not matter.

curl "https://papersizes.guide/wp-json/papersizes/v1/find?w=8.5&h=11&unit=in"

The series list

GET /series

Each series with its slug, display name, governing standard, URL path and how many sizes it holds.

What a response looks like

Every response carries the same envelope: a dataset version dated to the last edit, the generation timestamp, and the licence.

{
  "version": "2026.09.07",
  "generated": "2026-09-10T12:53:41+00:00",
  "licence": "CC BY 4.0",
  "attribution": "papersizes.guide",
  "source": "https://papersizes.guide/data/",
  "size": {
    "slug": "a4",
    "name": "A4",
    "series": "a",
    "series_name": "ISO A series",
    "std": "ISO 216",
    "w": 210,
    "h": 297,
    "width_in": 8.27,
    "height_in": 11.69,
    "pixels": { "300": [2480, 3508], "600": [4961, 7016] },
    "ratio_label": "1:√2",
    "area_m2": 0.0624,
    "url": "https://papersizes.guide/a/a4/"
  }
}

Using it

A few starting points. Nothing here needs a library beyond what ships with the language.

JavaScript

const res = await fetch('https://papersizes.guide/wp-json/papersizes/v1/size/a4');
const { size } = await res.json();
console.log(size.pixels['300']); // [2480, 3508]

Python

import urllib.request, json

url = 'https://papersizes.guide/wp-json/papersizes/v1/sizes?series=a&fields=full'
data = json.load(urllib.request.urlopen(url))
for s in data['sizes']:
    print(s['name'], s['width_mm'], 'x', s['height_mm'], 'mm')

Shell

curl -s "https://papersizes.guide/wp-json/papersizes/v1/find?w=216&h=356" 
  | jq -r '.matches[0] | "(.name): (.w) x (.h) mm"'

Licence and attribution

The dataset is released under Creative Commons Attribution 4.0. You may use it commercially, modify it and redistribute it. The only condition is credit.

To cite it:

PaperSizes.guide paper size dataset, version 2026.09.07.
https://papersizes.guide/data/ — CC BY 4.0

The dimensions themselves are published facts drawn from ISO 216, ISO 217, ISO 269, ANSI/ASME Y14.1, JIS P 0138, GB/T 148 and the trade standards named on each size page. Facts are not copyrightable; the licence covers the compilation, the naming and the cross-references.

How the numbers are checked

ISO and ANSI values are generated from the standard formulas rather than typed in, so they cannot drift. Regional and historical sizes are cross-checked against at least two published references, and any size whose sources disagree carries a note on its own page saying so.

The full process is on the methodology page. If you find an error, tell us and it will be corrected with the correction noted.

Stability

The /sizes response shape is used by this site’s own tools, so it will not change incompatibly. New fields may be added; existing ones will not be removed or renamed without a new version prefix in the path.