WebTools

307 Useful Tools & Utilities to make life easier.

Illuminance Converter

A precise tool to convert between various illuminance units like Lux, Foot-candles, and Phots.

About the Illuminance Converter

The Illuminance Converter is a precise, browser-based utility designed to transform light intensity values between various measurement units used in photography, architecture, and lighting design. By leveraging Alpine.js for its reactive frontend architecture, the tool processes all mathematical conversions instantaneously within your local environment once the initial calculation is triggered.

Supported Illuminance Units

Illuminance is a measure of how much luminous flux is spread over a given area. The tool supports seven distinct units, each mapped to a specific conversion factor relative to the base unit of Lux (lx). Here is the complete list of supported inputs and their internal multiplier values used during calculations:

  • Lux (lx): The SI derived unit of illuminance, equivalent to one lumen per square meter. (Conversion factor: 1)
  • Foot-candle (fc): A non-SI unit of illuminance widely used in the United States and within the film industry. (Conversion factor: 10.7639104167)
  • Phot (ph): An older CGS unit of illuminance. (Conversion factor: 10000)
  • Nox (nx): A unit used primarily for measuring low light levels. (Conversion factor: 0.001)
  • Metre-candle (mc): Historically synonymous with Lux, representing the illuminance on a surface one meter away from a single candela. (Conversion factor: 1)
  • Lumen per square centimeter (lm/cm²): Functionally equivalent to the phot. (Conversion factor: 10000)
  • Lumen per square millimeter (lm/mm²): Used for highly concentrated light sources and scientific precision. (Conversion factor: 1000000)

How the Conversion Engine Operates

At the core of the tool's Alpine.js logic is a standardized dictionary of unit factors. The script normalizes your input value by first converting it to Lux, and then dividing by the target unit's specific factor. This avoids the need for a complex matrix of direct unit-to-unit formulas.

The exact JavaScript execution follows this straightforward equation:

Result = (Input Value × Factor of Origin Unit) ÷ Factor of Target Unit

Once the mathematical calculation is complete, the result passes through a dynamic formatting function designed to present the output cleanly. The formatNumber() routine checks the magnitude of the resulting value to determine the appropriate decimal rendering:

  • If the value is exactly 0, it returns '0' without any decimals.
  • If the absolute value of the calculation is extremely small (less than 0.000001), the tool preserves high precision by rounding to 10 decimal places.
  • For all other standard calculations, the output is restricted to a maximum of 6 decimal places.
  • Finally, a regular expression (/\.?0+$/) strips away any trailing zeros or unnecessary decimal points to keep the interface tidy.

A Worked Example: Foot-candles to Lux

To demonstrate the tool's internal workflow, let's step through a conversion of 5 Foot-candles (fc) to Lux (lx).

  1. You enter 5 into the input field, select fc as the "From" unit, and select lx as the "To" unit.
  2. When you click "Submit", the tool unlocks reactive mode, and passes your variables into the conversion engine.
  3. The engine identifies the internal mapping factors: 10.7639104167 for Foot-candles and 1 for Lux.
  4. It applies the core formula: (5 × 10.7639104167) ÷ 1.
  5. The raw result is computed as 53.8195520835.
  6. The formatNumber() function applies the 6-decimal limit since the number is greater than 0.000001. The output becomes 53.819552, and no trailing zeros are present to strip.
  7. The result is dynamically printed to the result container as 53.819552 lx, accompanied by a quick-copy button that pushes the formatted text and its unit label directly to your operating system's clipboard.

Frequently Asked Questions

Why does the interface not update automatically when I first enter a number?

By design, the reactive state (managed by the $watch properties in Alpine.js) is locked when the page initially loads. The dynamic previews are only activated after you click the "Submit" button for the first time. This user action sets an internal isUnlocked variable to true, which subsequently allows the output to update instantly whenever you change the input number, the source unit, or the destination unit, without needing further button clicks.

How does the tool handle extremely small illuminance values?

To accommodate scientific disciplines that measure microscopic light differences, the converter includes a conditional precision rule. If the final computed result falls below 0.000001, the script automatically expands the formatting limit from 6 to 10 decimal places. This ensures that ultra-low conversions (such as those targeting lumens per square millimeter) do not prematurely round down to zero, maintaining mathematical accuracy.

What happens if I try to convert Metre-candles to Lux?

Because a Metre-candle is functionally identical to Lux (both mapping to a factor of 1 in the application's source code), converting between the two will yield an exact 1:1 result. If you input 250 mc, the application processes (250 × 1) ÷ 1 and will return precisely 250 lx.

Does the tool validate alphabetical input?

The primary input field utilizes an HTML5 type="number" attribute, which generally restricts typing letters on modern web browsers. Additionally, the JavaScript backend enforces this by wrapping the input value in a strict Number() cast. If a non-numeric string somehow bypasses the frontend constraints, the try...catch block will fail the calculation gracefully, resetting the preview output to a blank state rather than displaying an unstructured NaN error.

Contact

Missing something?

Feel free to request missing tools or give some feedback using our contact form.

Contact Us