Showing Calculation Results With HTML output
A <span> can display the result of a calculation, but it cannot describe why the value is there. HTML has <output> for values produced by user input or a calculation.
It behaves like ordinary phrasing content and can be styled normally. The useful difference is semantic.
Connect a result to its inputs
<form oninput="result.value = Number(a.value) + Number(b.value)">
<input id="a" name="a" type="number" value="2">
+
<input id="b" name="b" type="number" value="3">
=
<output name="result" for="a b">5</output>
</form>
The for attribute contains the IDs of controls involved in producing the result. It does not perform the calculation; the oninput handler does that in this compact example.
For production code, a separate script is usually easier to maintain:
<label for="distance">Distance</label>
<input id="distance" type="number" value="10">
<output id="result" for="distance">10 km</output>
const input = document.querySelector("#distance");
const output = document.querySelector("#result");
input.addEventListener("input", () => {
output.value = `${input.value} km`;
});
Setting the output’s value updates the displayed result.
Sliders and prices are natural uses
<form oninput="result.value = volume.value">
<label for="volume">Volume</label>
<input
id="volume"
name="volume"
type="range"
min="0"
max="100"
value="50"
>
<output name="result" for="volume">50</output>
</form>
A price estimate is another clear case:
<label for="hours">Hours</label>
<input id="hours" type="number" min="1" value="1">
<p>
Total:
<output id="total" for="hours">€60</output>
</p>
hours.addEventListener("input", () => {
total.value = `€${hours.value * 60}`;
});
Use it only when the meaning fits
Calculators, live totals, generated measurements, slider values, and estimates fit <output>. Ordinary status copy or unrelated text does not become better by wearing a more specific tag.
output {
display: inline-block;
padding: 0.25rem 0.5rem;
background: #f2f2f2;
font-weight: 700;
}
The element will not transform the visual design or replace accessible labels. It simply lets the HTML say that this value came from those inputs. That is a small improvement, which is often how semantic HTML works.