Skip to main content

Comprehensive units of measurement dataset — 2,959 units, 121 physical quantities, conversion factors, 11 measurement systems

Project description

Units of Measurement

A comprehensive collection of units of measurement covering 121 physical quantities and 11 measurement systems. Available in both JSON and JSONL formats.

Files

The jsonl/ directory contains three JSONL files (one JSON object per line). The json/ directory contains the same datasets as JSON arrays.

units_of_measurement.jsonl (2,959 entries)

The comprehensive, merged dataset. This is the file most users will want. It combines the SI and UOM datasets below into a single superset with a unified schema covering all fields.

Fields:

Field Type Description
unit string Unit name (e.g., "kilometer", "pound")
prefix string or null SI prefix if applicable (e.g., "kilo", "milli")
symbol string Unit symbol (e.g., "km", "lb")
plural string Plural form (e.g., "kilometers", "pounds")
property string Physical quantity measured (e.g., "length", "mass")
conversion_factor number Multiplier to convert to the reference unit
conversion_offset number Additive offset for temperature conversions (present only for Celsius and Fahrenheit)
reference_unit string The SI coherent unit that conversion_factor is relative to
alternate_unit array of strings Alternate names for the unit (present only where applicable, e.g., "metre" for "meter")
system string Measurement system (see below)

si_units.jsonl (812 entries)

SI base units, SI derived units with special names, and non-SI units accepted for use with the SI (per the SI Brochure, 9th Edition). Each unit includes full SI prefix expansions (all 24 prefixes from quecto through quetta). Uses US English spellings ("meter", "liter").

Fields: unit, prefix, symbol, property, alternate_unit (optional), system

uom.jsonl (2,660 entries)

Units parsed from the Rust uom crate by Mike Boutin. Covers 117 physical quantities across multiple measurement systems, with conversion factors relative to the SI coherent unit for each quantity.

Fields: unit, symbol, plural, property, conversion_factor, conversion_offset (optional), reference_unit, system

Measurement Systems

System Description
SI International System of Units
Metric Metric units not part of SI (e.g., bar, calorie, liter, tonne)
Imperial British Imperial units (e.g., foot, pound, gallon)
CGS Centimetre-Gram-Second system (e.g., dyne, erg)
Nautical Nautical units (nautical mile, knot)
Astronomical Astronomical units (astronomical unit, light year, parsec)
Atomic/Natural Atomic and natural units (Bohr radius, hartree)
IEC IEC binary prefixes for information (kibibyte, mebibyte, etc.)
Information Information units (bit, byte, shannon, nat)
Ancient Roman Historical Roman units of length, mass, area, and volume
other Units not clearly belonging to a single system

Conversion Factors

Each entry's conversion_factor is the multiplier to convert one unit to the reference_unit for that property. For example:

  • kilometer: conversion_factor: 1000.0, reference_unit: "meter" -- 1 km = 1000 m
  • liter: conversion_factor: 0.001, reference_unit: "cubic meter" -- 1 L = 0.001 m^3
  • pound: conversion_factor: 0.4535924, reference_unit: "kilogram" -- 1 lb = 0.4536 kg

For temperature units with a conversion_offset, the conversion to the reference unit (kelvin) is: value_in_kelvin = value * conversion_factor + conversion_offset.

Usage

Install

npm install units-of-measurement   # Node.js
pip install units-of-measurement   # Python

Python

from units_of_measurement import load

units = load()  # 2,959 entries from the merged dataset

# Find all length units
length_units = [u for u in units if u["property"] == "length"]

# Convert 5 miles to meters
mile = next(u for u in units if u["unit"] == "mile")
meters = 5 * mile["conversion_factor"]  # 8046.72

# List all measurement systems
systems = sorted(set(u["system"] for u in units))

# Load a specific dataset
si = load("si_units")   # 812 SI entries
uom = load("uom")       # 2,660 uom entries

JavaScript

const { load } = require('units-of-measurement');
// or: import { load } from 'units-of-measurement';

const units = load(); // 2,959 entries from the merged dataset

// Find all mass units
const massUnits = units.filter(u => u.property === 'mass');

// Convert 10 pounds to kilograms
const pound = units.find(u => u.unit === 'pound' && u.property === 'mass');
const kg = 10 * pound.conversion_factor; // 4.535924

// Load a specific dataset
const si = load('si_units');
const uom = load('uom');

Raw Data (no package needed)

# Download as JSON array
curl -LO https://raw.githubusercontent.com/duncanscott/units-of-measurement/main/json/units_of_measurement.json

# Download as JSONL
curl -LO https://raw.githubusercontent.com/duncanscott/units-of-measurement/main/jsonl/units_of_measurement.jsonl

# Query JSON with jq — all Imperial length units
jq -c '.[] | select(.property == "length" and .system == "Imperial")' json/units_of_measurement.json

# Query JSONL with jq
jq -c 'select(.property == "length" and .system == "Imperial")' jsonl/units_of_measurement.jsonl

Data Sources

  • SI Brochure (9th Edition, 2019) -- Bureau International des Poids et Mesures (BIPM). Source for SI base units, derived units, and non-SI units accepted for use with the SI.
  • uom -- Units of Measurement Rust crate by Mike Boutin, licensed under MIT / Apache-2.0. Source for conversion factors, plurals, and extended unit coverage across multiple measurement systems. See THIRD-PARTY-LICENSES for the full license text.

License

This project is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

units_of_measurement-1.1.0.tar.gz (111.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

units_of_measurement-1.1.0-py3-none-any.whl (114.8 kB view details)

Uploaded Python 3

File details

Details for the file units_of_measurement-1.1.0.tar.gz.

File metadata

  • Download URL: units_of_measurement-1.1.0.tar.gz
  • Upload date:
  • Size: 111.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for units_of_measurement-1.1.0.tar.gz
Algorithm Hash digest
SHA256 2041bd0a97b2aba91359fa40a505417a858d25e934c7fffcdfa65d52cf8e7760
MD5 94d1e6be672e87285ea188b373a91ba3
BLAKE2b-256 ccbd1151fdba48c69cc970eb9bbd9617e4b05c55d61c035ad26b0755032de101

See more details on using hashes here.

File details

Details for the file units_of_measurement-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for units_of_measurement-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 23c3d97d5280d85540d0e7538332bb15ddf73d1bf681fb7f78941332b08af054
MD5 91e7eb9b96cd69005f70923863febea8
BLAKE2b-256 41f6acf33bc7c80ba9b84f37b468ce17d81ffcf699fb81462588c2fe2dd3232c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page