dsDNA ng/µL calculator from A260 absorbance
This dsDNA concentration calculator converts an absorbance reading at 260 nm into nanograms per microliter and corrects the result for dilution.
Run — free
It applies the conventional factor for double-stranded DNA: an A260 of 1.0 corresponds to 50 ng/µL when measured with a 1 cm optical path. Enter the observed A260 and the total dilution factor to recover the estimated concentration of the original sample. The calculation is deterministic, transparent, and intended for routine nucleic acid quantification workflows.
Enter the reading that the instrument actually measured
Use the absorbance reported at 260 nm for the aliquot placed in the spectrophotometer or microvolume instrument. The calculator expects a nonnegative numeric value and assumes that the reading is equivalent to a 1 cm optical path, which is the convention behind the standard dsDNA conversion factor. Many microvolume instruments already normalize their displayed absorbance to that path length; check the instrument output or method if you are uncertain. Do not enter a concentration reported by the instrument, because this calculator starts from absorbance itself. If the sample was measured without dilution, leave the dilution factor at 1. A blank-corrected reading is preferable, since absorbance from the buffer, cuvette, or measurement surface can otherwise inflate the estimate. Negative readings are rejected rather than converted into a physically misleading negative concentration. The result describes the mass concentration implied by A260, not an independent confirmation that all absorbing material is intact double-stranded DNA.
Apply the complete dilution factor once
The dilution factor restores the concentration of the original sample from the diluted aliquot that was measured. For one part sample plus nine parts diluent, the total volume is ten parts, so enter 10. For a 1:20 dilution, enter 20. If several dilution steps were performed, multiply their factors before entering the value: a tenfold dilution followed by a fivefold dilution has a total factor of 50. The calculator multiplies the observed A260 by 50 ng/µL per absorbance unit and then by this total dilution factor. Avoid applying the correction twice. If your instrument software already reports an absorbance value that has been adjusted for dilution, use 1 here; if it displays the raw reading from the diluted aliquot, use the actual total factor. Keeping the dilution recorded alongside the result makes the calculation reproducible and helps reviewers distinguish a low measured absorbance from a low concentration in the starting tube.
Interpret the estimate in its biochemical context
The returned concentration uses the conventional dsDNA relationship: concentration in ng/µL equals A260 multiplied by 50 and by the dilution factor. This equivalence is useful because 1 ng/µL is numerically equal to 1 µg/mL, so no additional unit conversion is needed. However, absorbance is not selective for double-stranded DNA. RNA, single-stranded nucleic acids, free nucleotides, phenol, and other compounds can contribute at or near 260 nm. Purity ratios such as A260/A280 and A260/A230, an appropriate blank, and a method such as a fluorescent dsDNA assay may be important when specificity or low-concentration accuracy matters. The calculator also does not assess fragmentation, amplifiability, or biological integrity. Treat the output as an A260-derived mass concentration estimate under the 1 cm convention. For downstream reactions, combine it with the assay requirements, expected purity, and the practical accuracy range of the instrument rather than relying on the computed number alone.
What you can do with it
Recover the stock concentration after dilution
Convert the absorbance of a diluted DNA aliquot back to the estimated ng/µL concentration in the original tube.
Prepare a normalized DNA input
Estimate concentration before calculating the sample volume needed for PCR, digestion, ligation, or library preparation.
Check instrument calculations
Reproduce the conventional A260 conversion independently and document the absorbance, dilution factor, and applied dsDNA factor.
FAQ
What formula does the calculator use?
It uses concentration (ng/µL) = A260 × 50 × dilution factor. The factor 50 is the conventional value for double-stranded DNA with a 1 cm optical path.
What dilution factor should I enter?
Enter the ratio of total diluted volume to sample volume. Use 1 for no dilution, 10 for a tenfold dilution, and multiply the factors of consecutive dilution steps.
Does ng/µL require another conversion from µg/mL?
No. The two units are numerically equivalent, so a result of 25 µg/mL is also 25 ng/µL.
Can contaminants make the result too high?
Yes. Any material that contributes absorbance near 260 nm can increase the estimate. Purity ratios and a dsDNA-specific fluorescent assay can provide additional evidence.
Can I use this for RNA or single-stranded DNA?
Not with the same factor. This capability is specifically configured for double-stranded DNA; other nucleic acid types use different conventional A260 factors.
How much does an API calculation cost?
Each API request costs $0.002. The same deterministic calculation can also run in the browser.
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/dsdna-ng-per-ul \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"absorbance_260":0.24}'const res = await fetch("https://api.kit.forhosting.com/bio/dsdna-ng-per-ul", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"absorbance_260": 0.24
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/dsdna-ng-per-ul",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"absorbance_260": 0.24
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/dsdna-ng-per-ul", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"absorbance_260":0.24}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"absorbance_260":0.24}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/dsdna-ng-per-ul", 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_260": 0.24
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.dsdna_ng_per_ul",
"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. |