How to convert scientific measurement units across excel columns in one pass
- Step 1Open the converter (Pro tier required) — Unit Converter is gated to Pro and above. Free cannot run it. Pro covers 100,000 rows; Developer removes the row cap for large screening datasets.
- Step 2Upload the instrument export — Accepts
.xlsx,.xls,.ods, and.csv. Only the first sheet is read — if the export puts metadata on sheet 1 and data on sheet 2, move the data to the first sheet first. Parsing happens in your browser. - Step 3Define a rule per measurement column — For each column: type the exact header, choose × Multiply or ÷ Divide, and enter the SI factor — nm→mm is ÷ Divide 1000000, µg→mg is ÷ Divide 1000, mM→M is ÷ Divide 1000. Multiply and divide are interchangeable inverses (÷1000000 = ×0.000001).
- Step 4Preserve raw values for reproducibility — Set a New col name (e.g.
Length_mm) to keep the raw instrument column intact next to the converted one. For a publication dataset, keeping both the raw reading and the converted value is good practice. - Step 5Stack additional rules — Click + Add rule for each further column. All rules apply together in one pass; the result metrics report changesApplied so you can confirm every expected cell converted.
- Step 6Download and verify precision — Download
units-converted.xlsx(sheetConverted). Spot-check a known value against a manual calculation. If you need a fixed reporting precision, apply ROUND() in Excel afterward — the converter keeps 10 decimals and exposes no precision control.
SI prefix conversions as rules
SI prefix steps are exact powers of ten. Divide to go from a smaller prefix to a larger one; multiply for the reverse. Factors are exact.
| Conversion | Operation | Factor | Relationship |
|---|---|---|---|
| nm → mm | ÷ Divide | 1000000 | 1 mm = 1,000,000 nm |
| µm → mm | ÷ Divide | 1000 | 1 mm = 1,000 µm |
| µg → mg | ÷ Divide | 1000 | 1 mg = 1,000 µg |
| mg → g | ÷ Divide | 1000 | 1 g = 1,000 mg |
| mM → M | ÷ Divide | 1000 | 1 M = 1,000 mM |
| mm → nm (reverse) | × Multiply | 1000000 | Smaller prefix from larger |
What converts, what doesn't
Conversion runs on parseFloat. Anything parseFloat reads as a finite number converts; everything else is skipped and copied through unchanged.
| Cell content | parseFloat result | Outcome |
|---|---|---|
450 (number) | 450 | Converted |
"1.23E-6" (text) | 0.00000123 | Converted — sci-notation parsed |
"4.5e3" (text) | 4500 | Converted |
"1,000" (text w/ comma) | 1 | Wrong — comma terminates parse |
"<LOD" / "N/A" | NaN | Skipped, copied unchanged |
#DIV/0! error / blank | NaN | Skipped, copied unchanged |
Tier limits for dataset size
Pro-gated tool. Free cannot run it. One file per run.
| Tier | Max file size | Max rows | Runs this tool? |
|---|---|---|---|
| Free | 5 MB | 10,000 | No — Pro required |
| Pro | 50 MB | 100,000 | Yes |
| Pro-media | 200 MB | 500,000 | Yes |
| Developer | 500 MB | Unlimited | Yes |
Cookbook
Rule setups for common lab conversions, including the scientific-notation and offset cases that trip people up. Values shown reflect the tool's real parsing and 10-decimal rounding.
nm → mm, keeping the raw column
Wavelength or path-length data logged in nanometres, normalised to millimetres for a downstream model, with the raw reading preserved for the methods section.
Rule: Column = Path_nm, ÷ Divide, Factor = 1000000, New col = Path_mm Input: Path_nm = 5,000,000 (stored as the number 5000000) Output: Path_nm = 5000000, Path_mm = 5 5000000 / 1000000 = 5 mm
Scientific notation stored as text
Some instruments export concentrations as text in E-notation. parseFloat reads these correctly, so no pre-cleaning is needed.
Rule: Column = Conc_M, × Multiply, Factor = 1000, New col = Conc_mM
Input cell (text): "1.23E-6"
parseFloat("1.23E-6") = 0.00000123
Output Conc_mM = 0.00123 (0.00000123 × 1000)Three columns, three SI steps, one pass
Convert a length, a mass, and a concentration column simultaneously — the typical 'normalise this export before analysis' task.
Rule 1: Size_nm ÷ Divide 1000000 → Size_mm Rule 2: Mass_ug ÷ Divide 1000 → Mass_mg Rule 3: Conc_mM ÷ Divide 1000 → Conc_M One download, three normalised columns, raw columns kept.
Below-detection-limit flags survive
Assay columns mix numbers with text flags like '<LOD'. Those skip cleanly, so the flag is preserved rather than being turned into 0 or NaN.
Rule: Conc_uM ÷ Divide 1000 → Conc_mM Input Conc_uM column: 250 → 0.25 (converted) '<LOD' → '<LOD' (skipped, unchanged) 120 → 0.12 (converted) changesApplied = 2
Offset scales need a second step
Affine conversions (a slope plus an intercept) can't be a single multiply/divide. Do the scale here, the offset in Excel, then flatten.
Example: gauge reading → calibrated value = 0.95 × raw + 1.2 Step 1 (this tool): Raw × Multiply 0.95 → Scaled Step 2 (in Excel): =Scaled + 1.2, then flatten to a value with /excel-tools/excel-formula-to-value A pure ÷/× SI conversion (no intercept) is fine in one rule.
Edge cases and what actually happens
Offset / affine conversions
Not supportedThe operation set is multiply and divide only — there is no add or subtract. Any conversion with an intercept (temperature scales, calibrated gauge readings of the form m·x + b) cannot be done in one rule. Apply the multiplicative slope here, add the intercept in an Excel formula column, then flatten with Formula to Value: /excel-tools/excel-formula-to-value
Scientific notation as a real number vs text
SupportedWhether 1.23E-6 is stored as a true number or as text, it converts correctly — parseFloat reads E-notation strings, and numeric cells arrive as numbers. The output may display the result in plain decimal or scientific notation depending on the cell's format, but the underlying value is exact to 10 decimals.
Numbers with a comma decimal (EU locale)
Invalid parseparseFloat treats . as the decimal point. A European-locale text value "3,14" parses as 3, dropping everything after the comma. If your instrument or locale uses comma decimals, convert the column to dot-decimal numbers before running, or the conversion silently uses the integer part only.
Detection-limit flags and error cells
SkippedText flags (<LOD, >ULOQ, N/A), blanks, and spreadsheet error values (#DIV/0!, #VALUE!) all return NaN from parseFloat and are skipped — copied through unchanged. This is usually what you want for a mixed column, but it means changesApplied will be lower than the row count. Locate stray error cells with the Error Locator: /excel-tools/excel-error-locator
Factor that's an inexact decimal
10-decimal roundingPowers of ten (÷1000, ÷1000000) are exact. Irrational-ish factors (unit constants with many digits) are applied as entered and the product is rounded to 10 decimal places. For analytical work this is ample; if you need more digits, do the conversion in a tool that preserves full double precision and round at report time.
Factor of exactly 1
RejectedA factor of 1 is rejected as a no-op. If two of your columns are already in the target unit and you only want to rename or copy them, that's not this tool's job — only define rules for columns that actually change scale.
Data on a non-first sheet
First sheet onlyOnly the first sheet is read; metadata or replicate tabs after it are dropped. Lab exports that put run parameters on sheet 1 and data on sheet 2 will convert the wrong sheet. Move your data table to the first sheet before uploading. Output is always a single-sheet Converted workbook.
Very large screening datasets
Tier-dependentPro caps at 100,000 rows / 50 MB. High-throughput screening files can exceed that — Pro-media reaches 500,000 rows / 200 MB and Developer removes the row cap (500 MB file limit). Free cannot run the tool at all.
Output loses original number formats and formulas
Not preservedThe output is values-only. Custom number formats (significant-figure displays), formulas, and extra sheets are not carried over — you get plain converted numbers. Re-apply any reporting format in Excel after conversion.
Negative measurements
ConvertedNegative numbers (e.g. a baseline-subtracted signal of -0.002) convert normally — the tool applies the factor regardless of sign. It does not flag physically-impossible negatives; validate the source data separately.
Frequently asked questions
What factor converts nanometres to millimetres?
÷ Divide by 1,000,000 (equivalently × Multiply by 0.000001), since 1 mm = 1,000,000 nm. SI prefix steps are exact powers of ten, so there's no rounding error introduced by the factor itself.
Does it read scientific-notation values?
Yes. parseFloat correctly reads E-notation, whether 1.23E-6 is stored as a real number or as text. The value converts exactly and the result is rounded to 10 decimal places.
Can I round the converted values to a set number of decimal places?
Not in the tool — it keeps 10 decimal places and has no precision control. Apply ROUND() in Excel or set the cell number format after conversion to get your reporting precision.
Can it handle temperature or other offset conversions?
No. The tool only multiplies or divides — there's no add/subtract step. Offset (affine) conversions like °C→°F or calibrated gauge formulas need the multiplicative part here plus the intercept added in an Excel formula, then flattened with Formula to Value (/excel-tools/excel-formula-to-value).
What happens to '<LOD' or 'N/A' flags in a numeric column?
They're skipped and preserved unchanged — parseFloat returns NaN for non-numeric text, so the cell is copied through as-is. Only true numbers convert, which means changesApplied counts fewer cells than rows in a mixed column.
My instrument exports comma decimals (3,14). Will it convert correctly?
No. parseFloat uses the dot as the decimal point, so "3,14" parses as 3. Convert the column to dot-decimal numbers before running, or the conversion silently uses only the integer part.
Can I convert several measurement columns at once?
Yes. Add one rule per column with + Add rule — a length rule, a mass rule, a concentration rule — and all apply in a single pass into one units-converted.xlsx. Use new column names to keep raw and converted values side by side.
Is my unpublished data uploaded anywhere?
No. The file is parsed by SheetJS in your browser; experimental values never reach a server. This matters for embargoed or IP-sensitive datasets — the conversion is fully local.
How precise is the conversion?
Results are rounded to 10 decimal places, which is more than sufficient for analytical chemistry and physics work. For exact SI prefix conversions (powers of ten) there's no precision loss at all.
How large a dataset can it process?
Pro handles 100,000 rows / 50 MB, Pro-media 500,000 rows / 200 MB, Developer unlimited rows / 500 MB. Free cannot run the tool. One file per run.
What does the output look like?
A single-sheet units-converted.xlsx (sheet Converted) of plain converted values. Custom number formats, formulas, and extra sheets from the source are not preserved; re-apply formatting afterward.
Can I integrate this into an analysis pipeline?
Yes. GET /api/v1/tools/excel-unit-converter returns the schema (the rules option and output type). Execution is runner-backed — files never reach JAD; the paired @jadapps/runner converts locally and returns the XLSX, keeping raw data on your machine.
Privacy first
Every JAD Excel tool runs entirely in your browser using SheetJS and ExcelJS. Your spreadsheets, formulas, and data never leave your device — verified by zero outbound network requests during processing.