Fresnel reflection at normal incidence
See how much light a surface throws back at normal incidence: from air at index 1 into glass at 1.5, reflectance is 0.04, or 4 %, and 96 % passes through, with every substitution step shown. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- N1
- 1
- N2
- 1.5
- Amplitude reflection
- -0.2
- Resistance (Ω)
- -0.2
- Reflectance
- 0.04
- R
- 0.04
A Fresnel reflection normal-incidence calculator turns two refractive indices into the fraction of light power reflected when a ray hits a planar dielectric interface head-on. Enter n1 for the incident medium and n2 for the second medium; the tool returns the amplitude reflection coefficient r equals (n1 minus n2) over (n1 plus n2), the power reflectance R equals r squared, the complementary transmittance T equals one minus R, percent forms of both, a clear formula string, substitution steps, and a short message that states the optical result.
What Fresnel reflectance means at normal incidence
When a plane electromagnetic wave strikes a planar interface between two homogeneous isotropic dielectrics, part of the optical power is reflected and part is transmitted. The amplitude of each polarization component depends on the angle of incidence and on the refractive indices of the two media through the Fresnel equations. At normal incidence the angle is zero, the plane of incidence is undefined, and the s and p amplitude coefficients collapse to the same simple ratio: r equals (n1 minus n2) divided by (n1 plus n2).
The power reflectance is then the square of that amplitude, R equals r squared, which expands to ((n1 minus n2) over (n1 plus n2)) squared. For non-absorbing media the power transmittance at normal incidence is T equals one minus R, equivalently four n1 n2 over (n1 plus n2) squared. Classic classroom checks use air to glass: n1 near one and n2 near one point five, which yields R near four percent—the familiar four-percent single-surface reflection that anti-reflection coatings try to suppress.
When the indices are equal, r and R vanish and all power is transmitted; when the interface is reversed (glass to air), R is the same because the squared ratio is even in the index difference, while the signed amplitude r flips sign. Teachers care about the non-positive-index rejection as much as the arithmetic: a student who plugs n equals zero or a negative placeholder has left the physical domain of this tool, and a silent NaN or absolute-value fallback would hide that mistake.
The check path recomputes ((n1 minus n2) over (n1 plus n2)) squared with the same fixed rounding used for published fields, so a successful response always ships with steps you can assert in tests or worksheets.
Practical tips, limits, and related searches
Use the refractive indices at the wavelength of interest when dispersion matters: glass and plastics change n across the visible band, so a single n pair is a monochromatic approximation. Keep both indices inside the published positive range so the denominator cannot collapse and the reflectance cannot overflow into a non-finite value that the solver must reject. Prefer sending numbers rather than pre-formatted strings when you control the client; string numbers are accepted only when they match a strict finite numeric pattern.
Prefer this capability when you already have two positive indices and only need the head-on single-surface R and T; if your source is a material datasheet with n at several wavelengths, pick the row that matches your laser or LED first. Round-trip checks are easy: recompute ((n1 minus n2) over (n1 plus n2)) squared by hand or in a calculator and confirm it equals reflectance within the same twelve-decimal rounding, then verify transmittance equals one minus R.
What you can do with it
Homework checks for Fresnel normal incidence
Students enter n1 and n2 from textbook air-glass or water-glass problems and compare hand-written R and percent reflection against a deterministic result before submitting.
Single-surface loss estimates for coatings and windows
Pipelines convert catalog refractive indices into the uncoated normal-incidence reflectance of a window or substrate before budgeting coating performance.
FAQ
What is Fresnel reflection at normal incidence?
It is the power reflectance R = ((n₁ − n₂)/(n₁ + n₂))² when light hits a planar interface between media n1 and n2 head-on (θ = 0). At that geometry the s and p coefficients coincide.
Is reflectance the same from both sides of the interface?
Yes for the power reflectance R: swapping n1 and n2 flips the sign of amplitude r but leaves R = r² unchanged for non-absorbing dielectrics.
Does this compute Brewster angle or angle-dependent Fresnel curves?
No. It only returns normal-incidence r, R, and T (plus percent forms and steps). Angular Fresnel coefficients and Brewster angle are out of scope.
Is the Fresnel reflection calculator free?
The browser tool is free and runs locally.
How much light does a glass surface reflect head-on?
About 4 % for air at index 1 against glass at 1.5, so 96 % is transmitted. That single-surface loss is what anti-reflection coatings try to suppress.
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/optics/fresnel-reflection-normal \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n1":1,"n2":1.5}'const res = await fetch("https://api.kit.forhosting.com/optics/fresnel-reflection-normal", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n1": 1,
"n2": 1.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/optics/fresnel-reflection-normal",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n1": 1,
"n2": 1.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/optics/fresnel-reflection-normal", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n1":1,"n2":1.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n1":1,"n2":1.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/optics/fresnel-reflection-normal", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"n1": 1,
"n2": 1.5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "optics.fresnel_reflection_normal",
"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
Non-positive refractive indices are rejected with invalid_input because Fresnel coefficients for transparent dielectrics are defined for physical positive n values, not for zero or negative placeholders.
How to call the API and what comes back
Values at or below about one times ten to the minus fifteen, or below the published minimum positive floor, are treated as non-positive and rejected. Send a JSON body with two required finite numbers: n1 for the incident medium refractive index (aliases n_i, n_incident, incident_index, n_from) and n2 for the second medium (aliases n_t, n_transmitted, transmitted_index, n_to). Both must be strictly positive and stay within the published absolute limit of one trillion so the sum, difference, and squared ratio remain finite in IEEE double precision on the Worker and in the browser. On success the response echoes rounded n1 and n2, sets amplitude_reflection and r to the same signed amplitude coefficient, reflectance and R to the power reflectance as a fraction between zero and one, reflectance_percent to one hundred times R, transmittance and T to one minus R, transmittance_percent to one hundred times T, formula to the string R equals ((n1 minus n2) over (n1 plus n2)) squared, units for fraction reflectance and transmittance and dimensionless index, message to a short English summary, and steps to an ordered array of substitution lines. Failed validation—missing fields, non-finite numbers, values outside absolute limits, or non-positive indices—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item.
Practical tips, limits, and related searches
When teaching, pair examples: air n1 equals one onto glass n2 equals one point five yields about four percent reflection; water n1 equals one point three three onto glass recovers a smaller R; equal indices n1 equals n2 yield zero reflectance; glass onto air keeps the same R with opposite amplitude sign; and n1 or n2 equal to zero demonstrates the hard invalid_input path. This landing targets people searching for a Fresnel reflection normal incidence calculator, reflectance from refractive index, or four percent glass reflection online; it is not an angle-dependent Fresnel curve tool, not a Brewster-angle polarizer calculator, not a critical-angle TIR tool, and not a multilayer thin-film stack solver. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when learners deliberately send non-positive n.
Integration use cases
Unit tests for optics libraries
Generate known-good normal-incidence reflectance plus deliberate non-positive-index rejections for coding kata expected values and CI fixtures.
Technical questions
What happens when a refractive index is zero or negative?
Fresnel normal-incidence formulas require strictly positive indices. This tool returns invalid_input instead of taking an absolute value or returning NaN.