pH calculator
A hydrogen ion concentration of 1 × 10⁻⁷ mol/L is pH 7, neutral: enter [H+] in moles per litre and get the pH, an acidic, neutral or basic label and each substitution step for your notebook. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Concentration
- 0.0000001
- H plus
- 0.0000001
- Unit concentration
- mol/L
- Ph
- 7
- PH
- 7
A pH calculator turns hydrogen ion concentration into the acidity scale every chemistry lab and textbook uses. Enter [H+] in moles per litre and the tool returns pH equals minus log base ten of that concentration, a short acidity label—acidic, neutral, or basic—and step-by-step substitution you can copy into a notebook. Homework checks, titration prep, exam review, and automated graders all need that same closed formula without a spreadsheet or a full aqueous speciation package.
What pH and [H+] mean together
pH is the common logarithmic measure of how acidic or basic an aqueous solution is. By definition at standard classroom precision, pH equals the negative base-ten logarithm of the hydrogen ion concentration expressed in moles per litre: pH equals minus log ten of [H+]. When [H+] is one times ten to the minus seven moles per litre, the pure-water reference at about twenty-five degrees Celsius, pH is seven and the solution is called neutral on that scale.
Larger [H+] means a smaller pH and a more acidic solution; smaller [H+] means a larger pH and a more basic or alkaline solution. Concentrated strong acids can yield pH below zero when [H+] exceeds one mole per litre, and strongly basic solutions can push pH above fourteen when [H+] is extremely small. Those extremes are still valid under the same formula; what is never valid is a zero or negative concentration, because the logarithm is only defined for positive real numbers.
Teachers and automated graders care about that rejection as much as the happy path: a silent fallback would hide a data-entry error. The check path recomputes minus log ten of the published concentration with the same fixed rounding used for the ph field, so a successful response always ships with steps you can assert in tests or lab notebooks.
Related classroom quantities such as pOH and the water ion product Kw are intentionally out of scope here so this landing stays focused on the single search intent of converting a known [H+] into pH.
Practical tips, limits, and related searches
Keep [H+] inside the published absolute range so minus log ten of concentration cannot overflow into a non-finite pH the solver must reject. Use moles per litre consistently; if your source reports millimoles per litre or moles per cubic centimetre, convert before calling rather than mixing unit systems inside one request. Prefer this capability when you already know [H+] and only need pH; if your source is only a weak-acid Ka and concentration of undissociated acid, solve for [H+] first with the appropriate equilibrium model.
Round-trip intuition is easy: ten to the power of minus the published pH recovers the original concentration within the same twelve-decimal rounding for typical aqueous values, and confirming acidity flips correctly when you move [H+] across the pure-water reference of one times ten to the minus seven moles per litre.
What you can do with it
Homework checks for pH = −log10([H+])
Students enter textbook hydrogen ion concentrations and compare hand-written pH and acidity labels against a deterministic result before submitting.
Lab notebook conversion of meter-free [H+]
Technicians convert a known or calculated [H+] in mol/L into pH for reports when only concentration data is available.
FAQ
How do you calculate pH from hydrogen ion concentration?
Use pH = −log₁₀([H⁺]) with [H⁺] in mol/L. This tool returns the rounded pH, acidity class, and substitution steps.
Does this calculate pOH or buffer pH?
No. It only converts a known [H⁺] into pH. Use a dedicated buffer or equilibrium tool if you need those models.
Is the pH calculator free?
The browser tool is free and runs locally.
Can pH be below 0 or above 14?
Yes. A concentrated strong acid with more than 1 mol/L of hydrogen ions gives a pH below zero, and a very small concentration can push it above 14. The same formula applies; only zero or negative concentrations are rejected.
What if my concentration is in millimoles per litre?
Convert it to moles per litre first by dividing by 1000. The calculator expects mol/L and does not convert units, so a value typed in millimoles would give the wrong pH.
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/ph-from-concentration \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"concentration":1e-7}'const res = await fetch("https://api.kit.forhosting.com/chem/ph-from-concentration", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"concentration": 1e-7
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/chem/ph-from-concentration",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"concentration": 1e-7
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/chem/ph-from-concentration", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"concentration":1e-7}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"concentration":1e-7}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/chem/ph-from-concentration", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"concentration": 1e-7
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "chem.ph_from_concentration",
"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.
Limits
max_abs | 1000000000000 |
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
Zero or non-positive concentration is rejected with a clear invalid_input error so a blank cell or a negative typo never silently produces a non-finite log.
How to call the API and what comes back
The concentration must be strictly positive; values at or below one times ten to the minus fifteen are treated as zero and rejected along with any explicit negative. Send a JSON body with one required finite number: concentration (aliases h_plus, h_concentration, hydrogen_ion, hydrogen_ion_concentration, c_h, molarity_h) in moles per litre. Absolute value must stay within the published limit of one trillion so intermediate results remain finite in IEEE double precision on the Worker and in the browser. On success the response echoes rounded concentration and h_plus, sets unit_concentration to mol/L, ph and pH to the same rounded value, formula to the string pH equals minus log ten of [H+], acidity to acidic, neutral, or basic, message to a short English summary, and steps to an ordered array of substitution lines. Failed validation—missing concentration, non-finite numbers, values outside absolute limits, zero or non-positive concentration, or a non-finite computed pH—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item and zero marginal unit price. Prefer sending numeric JSON rather than pre-formatted strings when you control the client; string numbers are accepted only when they match a strict finite numeric pattern including optional scientific notation for values such as one e minus seven.
Practical tips, limits, and related searches
When teaching, pair classic examples: [H+] equals one times ten to the minus seven yields pH seven and neutral; [H+] equals zero point one for a strong monoprotic acid approximation yields pH one and acidic; [H+] equals one times ten to the minus fourteen yields pH fourteen and basic; and concentration equals zero demonstrates the hard invalid_input path. This landing targets people searching for a pH calculator, pH from hydrogen ion concentration, or minus log ten of [H+] online; it is not a buffer calculator, not a titration curve tool, and not a pOH or Kw solver. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when learners deliberately send zero.
Integration use cases
Unit tests for chemistry helpers
Generate known-good acidic, neutral, and basic pH cases plus deliberate zero-concentration rejections for coding kata and grading pipelines.
Technical questions
What happens if concentration is zero or negative?
pH is undefined for non-positive [H⁺]. The API returns invalid_input instead of taking a log of zero or a negative number.
What concentration gives pH 7?
At the pure-water reference, [H⁺] = 1×10⁻⁷ mol/L gives pH = 7 and acidity neutral.