PPM to PPB converter
1.5 ppm of residual chlorine is 1500 ppb and 1500000 ppt, because each step from million to billion to trillion is a factor of 1000. Type one ppm reading and get both finer scales at once. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Ppm
- 1.5
- Ppb
- 1,500
- Ppt
- 1,500,000
- Unit ppm
- ppm
- Unit ppb
- ppb
Environmental labs, semiconductor process specs, drinking-water notices, and air-quality bulletins jump between parts per million, parts per billion, and parts per trillion depending on the analyte and the instrument. Those three scales are pure powers of one thousand: one part per million equals one thousand parts per billion and one million parts per trillion, so a correct conversion is a deterministic multiplication rather than a chemistry CAS call.
How ppm, ppb, and ppt relate and which inputs to send
Parts-per notation expresses a dimensionless ratio of amount of substance, mass, or volume depending on the reporting convention of the laboratory or standard you follow. Once a value is already stated in parts per million, moving it to parts per billion or parts per trillion is a pure scale change: multiply by one thousand to obtain ppb, and multiply by one million to obtain ppt, because each successive “parts per” tier is three orders of magnitude finer.
Ppm must be non-negative because a negative concentration is not a physical reading in this product and would confuse tables that sort and filter by magnitude. Zero is allowed and maps cleanly to zero ppb and zero ppt. Non-finite values such as NaN or Infinity are rejected as invalid input rather than being echoed.
Identical inputs always produce identical outputs because there is no network call, no model, no random seed, and no wall clock in the path. Classroom examples include converting one point five ppm of residual chlorine into fifteen hundred ppb, or turning a two ppm ozone bulletin into two million ppt for an instrument that labels its axis in trillionths.
What you can do with it
Water quality and environmental reporting
Convert ppm readings of residual chlorine, nitrate, or ozone into ppb or ppt columns for regulatory tables and public notices that mix scales.
FAQ
What happens if ppm is negative?
Negative concentrations are not accepted; only finite non-negative ppm values are converted.
How many ppb are in one ppm?
Exactly one thousand. One ppm also equals one million ppt, because each parts-per tier is three orders of magnitude finer.
Is the ppm to ppb converter free?
The browser tool runs free on your device.
Does this convert ppm to molarity?
No. This capability only scales ppm into ppb and ppt. For molarity from ppm and molar mass, use a dedicated ppm-to-molarity calculator.
Does it matter whether my ppm is by mass or by volume?
No. Depending on the convention your lab follows, parts-per values can compare masses, volumes or amounts of substance, and moving to ppb or ppt is the same factor of 1000 in every case. Just keep the same convention throughout.
Related tools
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/chem/ppm-to-ppb \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"ppm":1.5}'const res = await fetch("https://api.kit.forhosting.com/chem/ppm-to-ppb", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"ppm": 1.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/chem/ppm-to-ppb",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"ppm": 1.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/chem/ppm-to-ppb", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"ppm":1.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"ppm":1.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/chem/ppm-to-ppb", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"ppm": 1.5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "chem.ppm_to_ppb",
"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.
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. |
Technical notes
This capability accepts a non-negative concentration in ppm, returns the matching ppb and ppt values with stable rounding, and fails with invalid_input when the concentration is negative so pipelines never publish a signed “concentration” by mistake. Homework checkers, LIMS scripts, teaching apps, and compliance dashboards can pin the same JSON in tests without reimplementing scale factors in every language.
How ppm, ppb, and ppt relate and which inputs to send
Send a JSON object with the required field ppm as a finite number or numeric string; aliases such as parts_per_million, concentration_ppm, c_ppm, and value are accepted when documented by the SDK so client code can speak laboratory English.
Reading the response: ppb, ppt, factors, and formula
The factors object documents the exact integers used—one thousand from ppm to ppb, one million from ppm to ppt, and one thousand from ppb to ppt—so auditors and curriculum authors can verify the scale without reading source. Use ppb alone when a regulatory sheet expects billionths; use ppt when an analytical method or air-quality instrument reports trillionths; use factors and formula together when a report must state the conversion rule for reviewers. Validation failures for negative ppm mention that negative values are not allowed so technicians can correct a sign error or a delta column that was wired into the concentration field by mistake. The unit_ppm, unit_ppb, and unit_ppt fields carry the short labels ppm, ppb, and ppt so front ends can caption columns without hard-coding strings. Formula restates the two multiplications in a single human-readable line, and method is always ppm_to_ppb so downstream routers can branch without sniffing response shapes. Missing fields and non-finite numbers also raise invalid_input and are not charged after the engine rejects the request.
API usage, pricing, lab workflows, and practical limits
Call the free in-browser ppm to ppb converter for homework checks, lecture demos, and quick bench unit changes without installing a spreadsheet formula library. Authors shipping SDKs can map the single field into a labeled input Concentration ppm with ppb and ppt cells auto-filled—the same columns students write when they convert parts per million by hand on paper. Send a JSON body with ppm as a number or numeric string. Use the prepaid API when a LIMS integration, tutoring platform, water-quality dashboard, or process-control bridge needs a stable contract under KIT balance at $0.002 per successful item; validation failures never consume balance after the engine rejects the request. Pair this endpoint with a ppm-to-molarity calculator when the next step is converting a mass-based concentration into moles per liter using molar mass, or with dilution tools when you are scaling stock solutions after unit conversion. This product does not reinterpret ppm as milligrams per liter with density correction, nor does it convert mass percent or volume percent under non-standard industrial definitions—those are separate intents with different inputs.
Integration use cases
Homework and exam verification
Students convert a single ppm value into ppb and ppt, compare structured JSON, and receive a clear error when a negative concentration is submitted.
LIMS and instrument bridge scripts
Pipelines normalize instrument outputs that speak different parts-per units into one prepaid contract instead of reimplementing scale factors per language.
Technical questions
How do I convert ppm to ppb and ppt?
Send JSON with ppm set to a non-negative number (for example ppm: 1.5). The response returns ppb = ppm × 1000 and ppt = ppm × 1_000_000.