Package Exports
- units-of-measurement
Readme
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 # PythonPython
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 entriesJavaScript
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.jsonlData 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.