Molar absorptivity calculator
This molar absorptivity calculator determines the molar extinction coefficient of an absorbing species from a measured absorbance, its concentration, and the optical path length.
Run — free
It rearranges the Beer-Lambert relationship A = εcl to calculate ε in liters per mole per centimeter. Use it to characterize a compound at a selected wavelength, check a published coefficient against laboratory measurements, or prepare a coefficient for later concentration calculations. The calculation is deterministic and keeps the supplied measurement values visible in the result.
Enter measurements with consistent units
Start with the absorbance reported by the spectrophotometer at the wavelength you are studying. Absorbance is dimensionless, so enter the displayed value without a unit. Supply the concentration of the absorbing species in moles per liter and the optical path length in centimeters. A standard cuvette commonly has a path length of one centimeter, but microvolume instruments and specialized cells may use a different effective distance; use the value documented for the actual measurement geometry. Concentration must describe the species responsible for the measured absorption, not merely the total concentration of a mixture. If your concentration is in millimoles per liter, micromoles per liter, grams per liter, or another unit, convert it to moles per liter before calculating. Similarly, convert a path length stated in millimeters to centimeters. Consistent units matter because the numerical coefficient changes with the chosen concentration and length units, even though the underlying optical behavior is the same. The calculator rejects negative absorbance and zero or negative concentration and path length because those values do not define a physical coefficient under this form of the law.
Understand the Beer-Lambert calculation
The Beer-Lambert law is written as A = εcl, where A is absorbance, ε is molar absorptivity, c is concentration, and l is path length. Rearranging gives ε = A/(cl). The calculator performs exactly this division and reports the result in L·mol⁻¹·cm⁻¹ because concentration is entered in mol/L and length is entered in cm. For example, an absorbance of 0.75 from a 25 micromolar solution in a one-centimeter cell corresponds to 30,000 L·mol⁻¹·cm⁻¹ after converting 25 micromolar to 0.000025 mol/L. Molar absorptivity is specific to the absorbing chemical form, wavelength, solvent, temperature, and other experimental conditions, so the result should be recorded with those conditions even though they are not mathematical inputs to this calculation. The returned formula and echoed inputs make the arithmetic auditable. No fitted intercept or regression is applied: this tool calculates a coefficient from one measurement and assumes the Beer-Lambert model passes through the origin for that observation. When several standards are available, a calibration-line analysis can give a more reliable slope and reveal a nonzero baseline.
Judge whether the coefficient is reliable
A correct division does not guarantee a reliable experimental coefficient. First blank the instrument with the same solvent and cell used for the sample, and confirm that the selected wavelength is appropriate for the analyte. Measurements at very high absorbance can depart from the useful linear range because little light reaches the detector, while very low absorbance can be dominated by noise. Dilution, stray light, scattering, chemical association, fluorescence, and concentration-dependent changes in refractive index can all weaken the Beer-Lambert assumptions. Pipetting error affects concentration directly, and fingerprints, bubbles, cell orientation, or an incorrect effective path length affect the optical term. A strong workflow measures multiple independently prepared concentrations, plots absorbance against concentration, checks whether the points form a straight line, and obtains ε from the slope divided by path length. Use this single-point result as a transparent calculation for a known measurement, a quick comparison, or one element of a larger quality-control process. Report sensible significant figures based on measurement uncertainty rather than treating every displayed decimal as experimentally meaningful. Also retain the wavelength and sample conditions beside the result so another person can interpret or reproduce the coefficient correctly.
What you can do with it
Characterize an absorbing compound
Calculate a wavelength-specific extinction coefficient from a prepared solution and a known cuvette path length.
Check laboratory calculations
Reproduce the Beer-Lambert rearrangement and keep the exact inputs alongside the reported coefficient.
Prepare a concentration workflow
Derive a coefficient from a reference sample for use in later absorbance-based concentration estimates under matching conditions.
FAQ
What is molar absorptivity?
Molar absorptivity, also called the molar extinction coefficient, describes how strongly a chemical species absorbs light at a specified wavelength under stated conditions.
Which equation does the calculator use?
It rearranges A = εcl to ε = A/(cl), using absorbance A, concentration c in mol/L, and path length l in cm.
What units does the result use?
The result is reported in liters per mole per centimeter, written as L·mol⁻¹·cm⁻¹.
Can I enter concentration in micromolar units?
Convert it first: divide a concentration in micromoles per liter by 1,000,000 to obtain moles per liter.
Why might measurements give different coefficients?
Wavelength, solvent, chemical form, temperature, baseline correction, concentration error, path-length error, scattering, and departures from linear response can change the experimental result.
What does an API calculation cost?
Each API request costs $0.002; the same deterministic calculation can also run free 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/molar-absorptivity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"absorbance":0.75,"concentration_mol_per_liter":0.000025,"path_length_cm":1}'const res = await fetch("https://api.kit.forhosting.com/bio/molar-absorptivity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"absorbance": 0.75,
"concentration_mol_per_liter": 0.000025,
"path_length_cm": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/molar-absorptivity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"absorbance": 0.75,
"concentration_mol_per_liter": 0.000025,
"path_length_cm": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/molar-absorptivity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"absorbance":0.75,"concentration_mol_per_liter":0.000025,"path_length_cm":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"absorbance":0.75,"concentration_mol_per_liter":0.000025,"path_length_cm":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/molar-absorptivity", 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.75,
"concentration_mol_per_liter": 0.000025,
"path_length_cm": 1
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.molar_absorptivity",
"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. |