Photo Paper Profiler calculates the paper grade, the exposure time and the lens aperture for black-and-white darkroom printing, starting from light-meter readings taken on the projected negative instead of test strips. You tell the program which grey level (Zone System) you want in a few areas of the negative; the program finds the combination of grade, time and aperture that best satisfies all of them, using the profile of the paper.
The app works completely offline, has no accounts and does not collect any data. It runs on iPhone; the optional Bluetooth lightmeter connects to it with Bluetooth LE.
Part A of this manual explains how to use the app, screen by screen; Part B describes the method behind it. This manual describes version 4.0.2. All the buttons and labels of the app are in English, and this manual uses them as they appear on the screen.
A complete example, with the screens of the app.
Grade, Time and Printing Ap. appear as soon as at least one point has both EV200 and Zone IN. To let the program choose the grade, use two or more points with Zone IN (typically highlights and shadows).
Paper Ilford MGFB; readings taken at f/4; head at 50 cm; printing at f/8 (Printing Ap.). Grades 0, 1, 4 and 5 are switched off (tap a grade to switch Y/N), so the program chooses between grades 2 and 3. Three points: (1) Ecc. 20 cm, EV200 −1.5, Zone IN 8.5; (2) EV200 +1.25, Zone IN 2; (3) Ecc. 10 cm, EV200 0, Zone IN left empty. The program proposes grade 2, 98 seconds at f/8. The obtainable grey levels are 8.8 and 0.7 for the first two points (8.5 and 2 were requested; error 1.727) and 3.6 for the third, which was not forced: for a point without Zone IN the program only tells you the grey you will obtain.





The Android instructions are useful if you use the old version of the website: the Android version of the app has not been made yet.
The lightmeter too. While the USB-C cable is connected, the charging LED of the Bluetooth lightmeter is lit: it is a light that can fog the paper. Cover it with opaque tape, or charge the instrument outside the darkroom (see chapter 6.2).
From the main screen, swipe from right to left (or tap Process) to open the Develop, Stop and Fix timers. For each stage you set the total time, in seconds, and the name of the chemical (optional): the data are saved for each paper, are requested the first time, and can be changed with Edit times.
The time of a stage includes taking the print out of the tray and letting it drain: when it expires, the next stage starts immediately. A signal sounds at the start of each stage; in the last 10 seconds a different signal sounds every second, with a rising pitch, to warn you to lift the print out of the tray and let it drain before the next bath. A final signal sounds at the end of the fixing. If you cannot hear the signals, check the volume.
Swipe from left to right to go back: the timer keeps running. When you save a print, the report also records the times and chemicals of Develop, Stop and Fix.

If your lightmeter is not in the list, press My lightmeter (below the Lightmeter list in the main screen) and define it: a name, sesp, tara and corr. The page shows what the three values do: for readings 0, −1 and 4 it gives the corrected EV200. Like Gossen Luna fills the fields with the values of the Gossen Luna, Neutral (0, 0, 1) leaves the readings unchanged; Save and Delete keep or remove your instrument, which then appears in the list.

Select the lightmeter Bluetooth to unlock the lightmeter page: tap ‹ Lightmeter or swipe from left to right. Connect the instrument via Bluetooth (Connect: with the instrument switch ON, choose PPP-Lightmeter from the list; the first time iOS asks for Bluetooth permission) and press Read, or Live for continuous readings. Under the connection status the app shows the firmware version of the lightmeter (for example “Firmware 1.0 · XIAO-nRF52840”).
There are three modes, as on the instrument: ASA shows the EV at the selected ASA (÷ 2 and × 2 change the ASA), LUX shows the illuminance in lux, Tf shows the f-number to use for the selected time (÷ 2 and × 2 change the time). In Tf mode the ASA used is the one set in the ASA section. The Tf mode has nothing to do with printing the negative: it can be used when the external lightmeter connected via Bluetooth is used as an ordinary incident-light meter.
In that case, however, it would have to be calibrated with a suitable diffuser, which may be done in a future version of the program.
To use a reading in the calculation, select a point (1-4), type its eccentricity if you want, and press Send EV200 to the calculation: the EV200 (always at ASA 200, in the nearest 1/4 EV step of the menu) is written in the fields of that point and the next point is selected. If Zone IN is not yet set for that point, the Zone IN list opens right after sending, so you can choose the zone you want for the area you are measuring, and then you return to the lightmeter page; if Zone IN is already set, the page stays as it is. Simulator lets you try the page without the instrument. Swipe from right to left, or press Back, to return.
In dim light a reading can take several seconds: the instrument waits as long as needed for a reliable value (up to 60 seconds). Meanwhile the screen shows …read and, after a few seconds, Reading: wait with the seconds elapsed, and sending stays disabled: the app never shows an old value as if it were new. In Live the value fades if no update arrives for 2 seconds.
The battery voltage and charge appear next to the connection status (for example 3.87 V · 62%; the percentage comes from the discharge curve of a LiPo cell and is indicative); with the firmware 0.5 or later they are shown as soon as the connection is made. When the voltage is below 3.5 V the message Battery low: recharge the lightmeter appears.
In the section Battery voltage and calibration you can read the battery at any time and calibrate it once: read the battery in the app, measure the voltage on the battery terminals with a voltmeter at the same moment, type it in Voltmeter (V) and press Calibrate; Reset removes the calibration. Too dark to read means that the light is below the lowest level the instrument can measure.
The instrument must be switched ON to charge its battery from the USB-C port. Darkroom warning: while the cable is connected, the charging LED of the board is lit; it is a light that can fog the paper, so cover it with opaque tape or charge the instrument outside the darkroom.


The Paper profiles button opens the calibration curves of each paper. For every grade (0-5) there are 4 points (X, Y): X is the equivalent exposure, Y the gray level: 1 = white … 11 = black. In the Zone System white is Zone X and black is Zone 0, so Zone = 11 − Y (level 1 = Zone X, level 6 = Zone V, level 11 = Zone 0). To the left of P1 and to the right of P4 the curve stays horizontal (the white of the paper and its maximum black): the chart shows these stretches too.
You can edit the curves, create a new paper with New (copy) (it starts from a copy of the selected one) or from your own measurements with New from data (see Profiling a new paper), write the development conditions in Notes, and rename or delete the paper. Factory papers cannot be deleted and, if edited, can be restored with Reset to factory. Export saves all profiles in a JSON file (paper-profiles.json) and Import loads them from a file: papers with the same id are replaced, the others are added, and Undo last import reverts the last import.
The file is saved in the format of version 4.0 (the feq of the curves are on the corrected EV200 scale); files of the previous format are converted when imported. Every saved print records the profile version used (Paper profile). To share a new profile with other users, export it and send the file to support@photo-paper-profiler.com.

A paper profile tells the program how dark the paper becomes for a given amount of light. For each grade (0-5) there are 4 points (X, Y): X is the equivalent exposure feq = √(T·2^EV200), where T is the exposure time in seconds and EV200 the light on the paper in the corrected scale of the program (see below); Y is the gray level on a scale of 11 levels (1 = white … 11 = black; in the Zone System Zone = 11 − Y, so level 1 is Zone X and level 11 is Zone 0). Below P1 the curve stays at the white of the paper, above P4 at its maximum black.
The program works with a corrected scale, EV200 = log₂(lux / 2.6) + 1. Every lightmeter reading is converted to it: (reading × corr, only if negative) + tara, and then corrected for the height of the sensor above the paper (sesp). The values of the lightmeters in the list are built in; for another instrument use My lightmeter in the main screen. For example, the Gossen Luna with the darkroom accessory has tara −2: its reading 0 is EV200 −2.
A sheet is an uncut sheet of photographic paper; a sheet section is a part of a sheet used to make strips; a strip is a part of a sheet with the same exposure.
Six sheets of the paper (about 18 × 24 cm), one for each grade 0 to 5 (fewer if you profile only some grades); a negative with a uniform gray frame (for example the photograph of an evenly lit light-box taken with different apertures or times, choosing the best one); your lightmeter; a scale with exactly 11 gray levels (1 = white … 11 = black) to read the results: for example the B.I.G. Test Plate RES7 (used by the author), or a reflective chart with an 11-step gray scale such as the Image Engineering TE153 or TE83.
The whole profile depends on one light level, so it is better to read it where the lightmeter is reliable. Plan A: for each grade you expose one sheet; the whole sheet is one sheet section, with 40 strips all at one light level, EV200 −2: times up to about 4 minutes, and the level is read where lightmeters are less reliable; you can also read at a higher level and then close the lens by some stops (type them in the app). Plan B (recommended): you read the light once, at the widest aperture of the lens, with the lightmeter at about EV200 +2 (the app tells you which reading to aim for on your instrument); then, for each grade, you divide the sheet into 3 sheet sections, one for each reduction of the lens aperture (0, 2 and 4 stops: EV200 +2, 0 and −2), with 13 strips in each (39 per sheet).
The times are short (up to 16 s) and the level is not read where the instrument is least accurate. The strips at the boundaries (almost the same feq in two sections: they differ only because the times are whole seconds) check the lens scale. An error of 0.1 EV on the reference level changes all the final times by 7%.
Raise or lower the enlarger head until the lightmeter gives the reading shown by the app (plan B: at the widest aperture) at the centre of the beam, and keep the head height unchanged for the whole test: in plan B only the lens aperture changes, from one sheet section to the next. The beam must cover the sheets generously. At the widest aperture the beam is less uniform: keep the strips of that sheet section near the centre.
On each sheet section make the strips with masks, exposing them for growing times T. Choose the range of feq to explore (we suggest from 0.5 to 8) and the number of strips (40 per sheet in plan A, 13 per sheet section in plan B): the times follow from the EV200 of each section, and are whole seconds spread regularly on a logarithmic scale between the two feq (the first ones are consecutive seconds). In plan B the steep part of the curve is exposed with times from 4 s on, in steps of 1 s, where the error of the timer weighs less.
The app (Suggest times) and the spreadsheet compute them in the same way and show the feq of every strip; you can edit the times if you need to. Develop, stop and fix as the paper maker recommends and write down the conditions (developer, dilution, time, temperature).
Compare each strip with the 11-level strip and write down its gray level, from 1 (white) to 11 (black); use decimals (for example 5.33) when it falls between two levels. Judge all the strips in the same way.
The file profiling-template.xlsx (download it from photo-paper-profiler.com/profiling-template.xlsx) has four tabs: Instructions, Plan A, Plan B and an Example with real measurements (plan A). In the tab of your plan write H (distance lens-paper in cm), sesp, tara and corr of your lightmeter and the reading (J3:J7): the tab converts it to the corrected EV200, tells you which reading to aim for, and writes the times; then write the gray level of each grade in the yellow cells. The chart shows the points: they should form a smooth S curve, so correct any typing errors.
In Paper profiles press New from data and type the name of the paper (and in Notes the development conditions).
The measurements can be entered in two ways.
By grade (the one for the iPhone, with your prints in front of you): in Settings choose your lightmeter and the plan, and write the reading you took (the app shows the reading to aim for and, for each strip, its EV200, its sheet section and the stops to close); if you want the correction for the height of the sensor write H. The strip times follow your settings (Suggest times recalculates them, or you can type your own: in plan B one line per sheet section, “stops closed: times”).
Then choose the grade (0-5): the app shows one strip at a time, with its time and feq. Compare the print with your reference scale and type the gray level (the small square shows the gray you entered), or tap a level of the scale; ‹ › go to the previous and the next strip, −¼ +¼ adjust the value (an empty strip starts from the value of the previous one), and the small squares at the bottom show all the strips: tap one to jump to it. Leave empty a strip you did not read.
The number under each grade counts the strips entered. You can profile only some grades: a grade with fewer than 8 strips is not profiled, and for that paper its button in the main screen is always off. What you enter stays on the device until you press Clear, so you can continue later.
Paste table (handy if you already have the data in a spreadsheet): paste columns A to H of the spreadsheet (rows with data, without the header). The EV200 column is already in the corrected scale: no conversion is applied.
In both cases press Analyze. Example loads real measurements to try the procedure.
For each grade the program finds the 4 points that best follow your measurements: the chart shows your measurements (circles) and the fitted curve, and the text gives the RMS error and the largest error, in gray levels. Check the grades 0 to 5 one by one: if you are not satisfied, correct P1…P4 by hand (Automatic fit restores the calculated points). When the grades you want are good, press Save as new profile: the paper is added to the list. At least 8 measurements per grade are needed.
Make a test print and compare it with what the program predicts; refine the profile if needed. To share it with other users, use Export and send the file to support@photo-paper-profiler.com, with the development conditions in Notes.


One of the most used methods for black and white printing in the darkroom is based on the so-called test strips. By applying this method, a gradation of the paper and an aperture of the diaphragm are chosen, after which the paper is exposed with increasing times following a sequence at regular increments, or at increments of submultiples of f/stop. Examine the strips and find the most satisfying one for the highlights. If the shadows are also rendered satisfactorily, the test is over.
On the other hand, if the shadows are rendered satisfactorily for longer times, the gradation of the paper must be increased, vice versa the gradation of the paper must be reduced. If you change gradation, you have to start over with a new test strip. After the right gradation and the best time have been found, it may be appropriate to refine the latter by repeating the strip with smaller increments of time, in order to achieve the desired result. This procedure involves a waste of time and paper consumption, although the operator's experience can lead to a significant reduction in both.
In the past, many electronic tools have been produced to automate the choice of printing parameters. Even more recently, devices based on functionality similar to those of the discontinued items have been placed on the market. These products have a significant cost and are related to the assistance and technical support of manufacturers. They usually provide the possibility for the user to introduce their own paper profiling parameters. There are no calculation tools, like this, that allow using standard darkroom light meters to obtain the same results without purchasing dedicated electronic tools.
In the procedure proposed in this document, we explore the possibility of selecting the gradation-time pair without going through the test strips. The procedure is based on the brightness levels of the various parts of the negative projected by the enlarger. A calculation tool developed for this purpose is responsible for optimizing the choice of printing parameters.
In order to measure the various areas of a negative in a repeatable manner, it is necessary to use a darkroom light meter. In the case treated here, a Gossen Luna-Pro F was used with the accessory called LAB attachment.

The light meter measures the light level (in lux). The graph below shows the relationship between lux and EV100 of the instrument (points) together with the analytical expression.

The EV scale is linear, while that in lux is logarithmic. It is important to take into account the fact that light meters measure an intensity of illumination per unit of surface. Therefore the measured EV value should not vary from instrument to instrument, as can be seen from the graph, which also shows the lux-EV relationship of the Minolta Auto Meter III F, which can be superimposed on that of the Gossen.
Ultimately, even if different exposure meters have different sensor sizes, for the simple fact that the measurement in lux (from which the EV is derived) is expressed per unit area, the result should not change by changing the reading instrument.The major limit of the instrument is related to its sensitivity, which usually corresponds to EV200 = 0. This means that, if the lens diaphragm is closed and a reading of a dark area of the negative is taken, negative EV200 values can be found, and therefore not entirely reliable because they are below the sensitivity of the instrument.
This problem can be solved in two ways. The more rigorous approach involves taking the exposure meter readings of the negative at full aperture, and then recalculating the print exposure based on the diaphragms normally used. An approximate approach is based on some simple experiments, with which a correction coefficient is calculated to take into account the measurement error below the threshold of the instrument. Let us see how to proceed to calculate the correction coefficient. We know that closing the lens diaphragm by one stop reduces the EV200 value by one unit.
This is easily verified by positioning the light meter in the center of the projected image, even without a negative, by moving the enlarger head until reading, for example EV200 = 3 at full aperture, for example at f/4. If we close at f/5.6 we will read EV200 = 2, at f/8 we will read EV200 = 1, at f/11 EV200 = 0. So we verified that the lens diaphragm correctly selects the variation of light. Now we can raise the head of the enlarger until, at f/4, we read EV200 = 0 with the light meter.
By repeating the previous steps, we can note the values of EV200 measured by the instrument, which generally do not follow the sequence that we expect: EV200 = 0, -1, -2, -3. Plotting the measured and theoretical values in a graph, we see that the points align themselves approximately on a straight line, for which it is possible to calculate the angular coefficient, which represents the desired corrective coefficient to be used in the measurements.

Another aspect to be taken into account in the light measurements on the printing surface is that of the physical dimensions of the instrument. This means that the light level is measured at a certain distance from the paper and therefore, especially if the head is low enough, an error is made, which can be taken into account knowing that the light level decreases with the square of the distance.
Finally, we can take into account the so-called cosine-correction term, representative of the fact that when the angle formed by the direction of the luminous flux that hits the instrument cell with the normal to the plane of the cell is different from 0, the quantity of measured light decreases with the cosine of the angle. Then a corrective factor can be applied to derive the light intensity that would have been measured under ideal conditions.
The above reported calibrations have been applied to the lightmeters selectable with the corresponding listbox of the app.
The purpose of profiling a printing paper is to find a functional relationship between the amount of light to which the paper is exposed and the grey level. The amount of light depends on many factors: the negative, the height of the enlarger head, the lens diaphragm and the printing time. A variable that further increases the factors to be considered is also given by the gradation of the paper or filter. The chemicals used also affect the final result, but if you follow the manufacturer's standard guidelines their influence is less pronounced than the other factors listed above.
A sample strip with 11 gray levels (1 = white to 11 = black) was used in the procedure described here. It is immediate to find the correspondence with the Zone System which, as is known, goes from Zone 0 = black to Zone X = white. The procedure requires 6 sheets of the paper to be profiled. Each of the 6 sheets is printed with the different grades of the filter (from 0 to 5). The enlarger head must be positioned in such a way as to project a light beam that covers the printing area with a certain abundance.
It is advisable to use a negative in which the entire frame has a uniform level of gray. In the profiling, the negative and the height of the head have been selected in order to measure exactly EV200 = 0. This is Plan A, described in chapter 8 (the reading 0 of the Gossen Luna corresponds to EV200 −2 on the corrected scale of the program). For each gradation of the filter and for each printing time, a strip is obtained to be compared with the sample gray levels.
Each paper and each gradation express specific characteristics, which can be appropriately selected by the operator during the printing phase. The usefulness of this representation of the relationship between light intensity and gray level lies in the fact that it is possible to measure a limited area of a negative and obtain the EV200 exposure value. If a precise gray level is wanted to be associated with this area, it is possible to enter into the profiling curve with the gray level and obtain aperture, printing time and gradation of the paper.
We have previously discussed how you can derive the printing time, the aperture and the gradation of the paper, once the brightness level of the negative is known, depending on the desired gray level of the final printing. This operation, however, normally does not refer to a single area of the negative, but to several areas, for each of which a specific level of grey is desired, depending on the expressive result to be obtained. In mathematical terms, the problem can be defined as an optimization problem, as we seek the gradation-time combination that best satisfies the desired result.
To speed up the procedure it is advisable to use this calculation tool. For several areas of the negative in which you intend to impose different grey levels, perform a reading with the light meter at ISO 200, eventually noting an eccentricity, i.e. the distance between the axis of the lens and the point where the measurement is made. Knowing the aperture of the diaphragm at which the light reading is made, the code finds the best time-gradation pair that respects the desired levels (expressed with the Zone System).
The obtainable result is shown next to each cell, while the overall square error provides a global indication. When a Zone value is not requested in correspondence with a value of EV200, the code simply calculates the grey level corresponding to the optimization performed, which instead is guided by the cells for which a Zone value is provided. If the printing opening calculated by the code is not convenient, it can be forced, resulting in a recalculation of the printing time. It is possible to deactivate some gradations of the filters, to force the optimization on the desired ones.
To illustrate the usefulness of the code with a practical case, we start from the negative shown on the following.

Exposure readings were taken with a Durst Neonon 105 mm 1: 5.6 lens at full aperture. Highlights reading provide EV200 = 2.67, while deep shadows provide EV200 = 4. By imposing a Zone VII for the former and a Zone I for the latter, the code calculates a grade 3, with a time of 21 sec at f/16 aperture. Ilford MGFB paper was used. Compared to the required values, the obtainable Zones are respectively 7 and 0.9, therefore very close to those in input. The result is shown below.

By associating Zone VIII and Zone 0 to the highlights and to the deep shadows, respectively, the code calculates a paper grade 5, with a time of 12 sec at f/16 aperture. Ilford MGFB paper was also used in this case. Compared to the required values, the obtainable Zones are respectively 7.8 and 0.7. The result is shown below.

The printing procedure most commonly used in the darkroom for black and white is based on test strips, with which, by successive approximations, the correct gradation-time coupling is found to achieve the desired expressive result. Each paper is characterized by a profile, defined as the relationship between the intensity of the light flux and the grey level. Knowing this profile, and effectively measuring the light projected by the negative on the paper, it is theoretically possible to predict the final result.
The procedure proposed here is based on the use of a fairly common instrument, namely a light meter equipped with an accessory to measure the light level of different areas of a negative. Some aspects related to the accuracy of the measurement were investigated, as it was observed from the various experiments that this accuracy plays a very important role in the possibility of actually obtaining the results expected from the calculation. Subsequently, the profiling of the paper was discussed, carrying out test strips and associating the corresponding grey levels to the various times, and to the various paper grades.
Profiling is incorporated into a calculation tool, with which we can optimize the two parameters of interest (grade and time) to obtain the smallest difference between desired and achievable grey levels. Some experiments, including an example discussed in detail in the text, have shown an acceptable accuracy of the instrument. Obviously, the achievement of the optimal result could also require subsequent steps, such as dodging and burning, as well as further refinements of the printing time, starting however from a solution not too far from the final one. Thus, a significant saving of time and material is possible.
One way to derive the burning or dodging time is described below. For simplicity, let's imagine we want to calculate the burning time. Let's suppose we have imposed some printing parameters on the highlights, but having renounced a darkening of the highest lights. From reading with the light meter on these areas, freeing all the others, imposing a VII-IX gray level and forcing the calculation to the previously determined grade and aperture, a longer time is obtained. The difference between the new time and the calculated one gives the necessary burning time. The same can be said for dodging.
In this case we will get a shorter time. The difference between these two times will tell us how much we have to dodge to lighten the areas of interest.
Contacts: support@photo-paper-profiler.com
Rel. november 2026 (iPhone app 4.0.2): The Lightmeter page shows the firmware version of the instrument. The pages Profile from data and My lightmeter no longer scroll sideways, the Help is easier to read on the phone and the version number under the title is always the current one.
Rel. october 2026 (iPhone app 4.0.1): The Lightmeter page shows the battery voltage in volts and the charge from a LiPo discharge curve, a warning below 3.5 V and a section to calibrate the voltage with a voltmeter; with the firmware 1.0 (formerly 0.5) the voltage appears as soon as the instrument is connected.
Rel. october 2026 (iPhone app 4.0): Added the profiling of a new paper directly in the app. In Paper profiles, New from data lets you enter your measurements (exposure time and gray level of every strip, grade by grade) or paste the table prepared with a spreadsheet and the program finds, for every grade, the four points of the broken line that best follow the measurements; you check the chart and the error, you can correct the points and you save the profile with the development conditions. The Paper profiles charts now also show the horizontal stretches to the left of the first point and to the right of the last one, and the Help describes the profiling procedure. The list of papers now includes, next to the original curves of the website, the versions recalibrated from the author's measurements (recal.) of ILFORD MGFB, ILFORD MGRC and BERGGER PR. The profiling can be done at one light level (plan A) or at three levels obtained from one reading by closing the lens (plan B, recommended: each sheet divided into three sheet sections, with short times); the strip times are computed from a range of feq, and you can profile only some grades. The EV200 scale was redefined as a corrected scale (EV200 = log2(lux/2.6) + 1): the curves of the papers have feq halved with respect to 3.0 and the lightmeters have new parameters (tara of the Gossen Luna −2, of the Gossen VARIO −5.7, of the VEML7700 and Bluetooth 0; corr applies to the reading before tara), so the results for the same readings are unchanged. In the main screen My lightmeter lets you define your own instrument with sesp, tara and corr. The profile files have a new format (version 2); the old ones are converted when imported.
Rel. october 2026 (iPhone app 3.0): Added the Bluetooth lightmeter, an incident-light instrument with a VEML7700 digital sensor (the same physics as the 2022 Arduino instrument) that connects to the iPhone via Bluetooth LE. The Lightmeter page (select the lightmeter, then swipe from left to right) offers the ASA, LUX and Tf modes as on the 2022 Arduino instrument, single and continuous (Live) readings, sending the EV200 to the points of the calculation with the Zone IN chosen right away, and a simulator to try the page without the instrument. In dim light the instrument waits as long as needed for a reliable reading (up to 60 seconds) and the app never shows an old value as if it were new; the lux-to-EV conversion is identical to that of the 2022 Arduino instrument. The calculation, the papers and the profiles are those of 2.1.
Rel. october 2026 (iPhone app 2.1): First release of the iPhone version, which works completely offline. It includes the same calculation as the website photo-paper-profiler.com (lightmeters GOSSEN Luna, GOSSEN VARIO and VEML7700; papers ILFORD MGFB, ILFORD MGRC and BERGGER PR), saved sessions with a complete report, Develop, Stop and Fix timers with the names of the chemicals, a list of the grey levels (Zone IN) with a small square for each zone, and paper profiles that can be edited, added, exported and shared. The iPhone version was developed with the help of Claude, an AI assistant by Anthropic: starting from the source code of the website photo-paper-profiler.com, Claude analysed the calculation, rewrote it in JavaScript, compared its results with those of the website photo-paper-profiler.com, and wrote the code of the app, the help pages and the automatic tests, following the requirements, the calibration data and the indications of the author, who also tested the app on the iPhone.
Rel. 8 june 2022: Added Bergger Prestige Variable CB Style photo paper (developed using Ilford Multigrade 1+9, 20 Celsius degrees, 120 sec, stopped for 60 sec and fixed using Ars-Imago Fix 1+7, 180 sec).
Rel. 30 may 2022: Added a lightmeter based on Arduino project, including digital light sensor VEML7700.
Rel. 30 apr 2022: Supported lightmeters: GOSSEN LunaPro F with enlarging accessory; GOSSEN VARIOSIX F lightmeter (reflected light reading, without diffuser); for this product a darkroom accesory is not available.
Rel. 14 apr 2022: Ilford MGFB developed using Ilford Multigrade 1+9, 20 Celsius degrees, 120 sec, stopped for 60 sec and fixed using Ilford Rapid Fixer 1+4, 180 sec. Ilford MGRC developed using Ilford Multigrade 1+9, 20 Celsius degrees, 60 sec, stopped for 60 sec and fixed using Ilford Rapid Fixer 1+4, 60 sec.
© 2026 adesortis. All rights reserved. No source code is published. The app, the lightmeter firmware, its case files, this manual and the paper data are free to download and use, including for professional darkroom work. They may not be copied, modified, redistributed, or used for a commercial purpose (selling, paid courses or workshops, monetised content such as YouTube videos) without the author's written permission. To ask for permission for a commercial use, write to support@photo-paper-profiler.com. Full text on the website: www.photo-paper-profiler.com.
Building the lightmeter is at your own risk: it is a photographic instrument, not a safety device, and is not meant to measure anything hazardous.
Durst, Gossen, Bergger, Ilford and the other product and company names mentioned are trademarks of their respective owners; the project is not affiliated with any of them.
The iPhone version was developed with the help of Claude, an AI assistant by Anthropic (see the release notes).
Contacts: support@photo-paper-profiler.com