DNA concentration calculator
An A260 reading of 0.50 on a ten-fold dilution means 250 ng/µL of double-stranded DNA in your stock: absorbance times 50 times the dilution. Enter the reading and the dilution factor to get the concentration you will pipette. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Absorbance
- 0.5
- Dilution factor
- 10
- Conversion factor
- 50 ng/µL
- Wavelength nm
- 260
- Species
- dsDNA
- Concentration
- 250
A DNA concentration calculator converts a spectrophotometer reading at 260 nanometres into nanograms per microlitre using the standard double-stranded DNA identity: concentration equals A260 times 50 times the dilution factor. One absorbance unit at 260 nm in a one-centimetre path corresponds to 50 micrograms of dsDNA per millilitre, and that figure is numerically identical to 50 nanograms per microlitre, which is the unit cloning and qPCR notebooks actually pipette. If the cuvette or NanoDrop pedestal held a diluted aliquot, you multiply by the fold dilution so the result is the stock concentration, not the diluted well.
How A260 becomes nanograms per microlitre
Nucleic acids absorb ultraviolet light with a peak near 260 nanometres because the aromatic bases have conjugated double-bond systems. For double-stranded DNA the community convention, written into every molecular-cloning handbook and every NanoDrop or cuvette SOP, is that an absorbance of 1.000 at 260 nm through a one-centimetre optical path corresponds to 50 micrograms of dsDNA per millilitre. Micrograms per millilitre and nanograms per microlitre are the same number, so the working identity on the bench is concentration in ng/µL equals A260 times 50.
When the aliquot in the cuvette or on the pedestal is not the undiluted stock — a 1-in-10 dilution of a miniprep, a 1-in-50 dilution of a PCR clean-up — you multiply by that fold so the reported concentration is the stock you will pipette later, not the diluted well you just measured. A reading of 0.50 on a ten-fold dilution therefore yields 0.50 × 50 × 10 = 250 ng/µL of dsDNA stock; a reading of 0.80 on an undiluted sample, dilution factor 1, yields 40 ng/µL.
Enter the dilution factor as 1 when you measured the stock itself.
Where a DNA concentration calculator earns its keep
Teaching labs and molecular-biology courses use a DNA concentration calculator so students stop treating a raw A260 as a concentration and can show the 250 ng/µL that belongs with a 0.50 reading on a ten-fold miniprep dilution. Core facilities and plasmid-prep notebooks keep the same identity next to spectrophotometer printouts when a NanoDrop reports 0.82 on a two-fold dilution and the stock that goes into a ligation is 82 ng/µL.
High-throughput cloning scripts, qPCR standard-curve sheets, and LMS homework oracles need a deterministic parse that rejects a zero or missing absorbance instead of multiplying through and silently returning zero nanograms. Failed validation does not consume balance. Related searches for RNA concentration at 40 ng/µL per A260 or oligo factors near 33 are different intents: stay on this page when the nucleic acid is double-stranded DNA and the output unit is nanograms per microlitre.
FAQ
How do I calculate DNA concentration from A260?
Send a positive absorbance at 260 nm and a positive dilution factor. A reading of 0.50 on a ten-fold dilution is 250 ng/µL of dsDNA stock.
Why multiply by 50?
By convention, one A260 unit of double-stranded DNA in a 1 cm path equals 50 µg/mL, which is the same number as 50 ng/µL. This calculator uses that dsDNA factor. Single-stranded DNA and RNA use different factors and are different searches.
What dilution factor should I enter?
Enter the fold by which the measured aliquot was diluted relative to the stock you will pipette. Use 1 if the cuvette or pedestal held undiluted stock, 10 if one part sample sat in ten parts total, 50 for a fifty-fold dilution.
What happens if absorbance is zero or negative?
A missing, zero, or negative A260 is not a positive optical density, so the calculator will not invent a concentration of 0 ng/µL. Those failures are not billed.
Does this calculator check DNA purity or give molarity?
No. It only turns A260 into ng/µL of double-stranded DNA using the factor 50 and a one-centimetre path. Purity from A260/A280 and conversion to molarity are separate steps.
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/bio/dna-concentration \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"absorbance":0.5,"dilution_factor":10}'const res = await fetch("https://api.kit.forhosting.com/bio/dna-concentration", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"absorbance": 0.5,
"dilution_factor": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/dna-concentration",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"absorbance": 0.5,
"dilution_factor": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/dna-concentration", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"absorbance":0.5,"dilution_factor":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"absorbance":0.5,"dilution_factor":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/dna-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
{
"absorbance": 0.5,
"dilution_factor": 10
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.dna_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_absorbance | 1000000 |
max_dilution_factor | 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
How A260 becomes nanograms per microlitre
This DNA concentration calculator applies exactly that identity: it reads a positive A260 and a positive dilution factor and returns concentration = absorbance × 50 × dilution_factor in nanograms per microlitre. It does not estimate purity from A260/A280, it does not convert to molarity, and it does not choose a path length other than the one-centimetre convention already baked into the factor 50. Those are different searches.
Input contract, response shape, and error behaviour
Use 1 when the cuvette held undiluted stock, 10 when one part sample sat in ten parts total, 50 when you diluted a concentrated PCR product fifty-fold before the reading. It must also be a positive finite number. POST a JSON body with two required numbers. absorbance is the A260 optical density reported by the instrument for a one-centimetre path or a ten-millimetre-equivalent NanoDrop reading (aliases a260, od260, a_260, od, abs). It must be a finite number strictly greater than zero: a blank, a word, zero, or a negative blank-corrected reading is not a DNA concentration and fails with invalid_input that names the field. dilution_factor is the fold by which the measured aliquot was diluted relative to the stock you care about (aliases dilution, factor, df, fold). Each field may arrive as a JSON number or a decimal or scientific string. Missing required fields, empty strings, non-finite values, zeros, negatives, and values above the published ceilings fail with invalid_input. Those failures are not billed. On success the body echoes the two inputs, reports conversion_factor 50, wavelength_nm 260, and species dsDNA so a notebook can see which convention was applied, and returns concentration in ng/µL together with concentration_ug_ml, which is the same number because the units are numerically identical. formula restates concentration_ng_per_uL = absorbance × 50 × dilution_factor; formula_applied substitutes this call's numbers, for example 0.5 × 50 × 10 = 250. Pair the concentration with your own purity ratio and path-length notes; this endpoint does not compute A260/A280 or correct a short-path cuvette.
Where a DNA concentration calculator earns its keep
Keep absorbance and dilution factor inside the declared ceilings, pin concentration and formula_applied in tests, and you get reproducible 250 ng/µL answers for the textbook 0.50 / 10-fold case across a lab notebook, an LMS plugin, and a miniprep pipeline.
Integration use cases
Miniprep stock from a diluted A260
A bench scientist reads A260 = 0.50 on a 1-in-10 dilution of a plasmid miniprep and records the returned 250 ng/µL as the stock concentration for downstream cloning.
Classroom Beer-Lambert worksheets
Students check that a raw A260 is not a concentration and compare concentration against a hand-worked A260 × 50 × dilution_factor line for several positive readings.
SOP and LMS oracles
Automation pins concentration and formula_applied for the textbook 0.50 / 10-fold case and invalid_input when absorbance is missing, zero, or negative.
Technical questions
What does the DNA concentration calculator cost?
The browser tool is free. API requests use prepaid balance at $0.002 per successful call; invalid input is not billed.