Getting Started

What is ZoneLab?

ZoneLab started as a deeply nerdy personal project to take a lot of my old school chemical photographic knowledge and bring it into the digital age. The goal was to systematically document, chart and analyze my film and developer combinations by measuring the tangible effects of pushing, pulling, over and under exposing and contrast compression across different film stocks.

As I shared early screen shots and testing results with some of my other photo nerd friends, I was asked quite often if I would ever consider making this into a desktop app that others could use.

So sure, why not? I set out to make this an app to help film photographers log and chart the effective ISO of their specific film and development processes through Zone System testing methodology, and I've since started on the base of a larger goal: a complete suite of tools for the modern film heads.

So this is the point where you might be asking yourself: "Will the zone system make me a better photographer?"

No.

But what ZoneLab can do is help you establish a consistent, repeatable process with as many variables as possible being controlled or eliminated. By shooting a 10-stop wedge test and measuring the resulting film densities, ZoneLab logs your effective ISO, Contrast Index, Gamma, Tonal Range and Exposure Latitude—helping you build a reference library of how your particular processes perform under controlled conditions.

Important: ZoneLab logs the effective ISO your specific process produces through Zone System testing. This is not ISO 6:1993 laboratory film speed testing, which requires absolute lux-second measurements and toe-region analysis. ZoneLab is a practical documentation tool for establishing consistent, repeatable workflows where variables are controlled and results are tracked over time.

ZoneLab Main Interface

First Launch

When you first launch ZoneLab, you'll see an onboarding wizard that helps you set up:

  • Favorite Films: Select up to 5 films you use most often
  • Development Method: Choose between lab processing or self-development
  • Cameras & Lenses: Add your equipment to the library
  • Filters: Add B&W filters you commonly use (optional)
  • Grey Card: Verify your reference grey card settings

System Requirements

  • macOS 14.0 (Sonoma) or later
  • Apple Silicon (M1/M2/M3/M4) or Intel Mac
  • Calibrated transmission densitometer (any brand), or use a photo lab service
  • Optional: Printalyzer UV Densitometer for direct USB integration

Testing Modes

ZoneLab offers two testing modes to suit different needs:

Full Mode

Complete 11-zone analysis with all metrics for full process documentation.

Use Full Mode when you want to:

  • Analyze the complete characteristic curve of your film/developer combination
  • Calculate Contrast Index (CI), Gamma, Gradient, Tonal Range, and Exposure Latitude
  • Use gradient-adjusted Effective ISO calculations
  • Compare how different developers affect contrast rendering
  • Document complete curve characteristics for process control

Requirements:

  • 10-stop wedge test (Zones I-X) plus Zone 0 (base + fog)
  • Density measurements for all 11 zones
  • Each zone represents one stop of exposure difference (0.30 log-H units)

Zone V Quick Mode

Single Zone V measurement for fast effective ISO testing without full metrics.

Use Zone V Quick Mode when you want to:

  • Quickly verify your effective ISO for a film/developer combination
  • Test a new film stock without full analysis
  • Confirm ISO consistency for a familiar process
  • Save time when you don't need full curve data

Requirements:

  • Single Zone V exposure (metered 18% grey card)
  • One density measurement only
  • Faster workflow, effective ISO only (no CI/Gamma)

Tip: Toggle between modes using the segmented picker in the zone input panel. The mode setting only affects new sessions - existing sessions retain their original mode.

Basic Workflow

Process Control: The key to meaningful results is consistency. Use the same equipment, lighting setup, and development parameters each time you test. ZoneLab helps you document these variables so you can identify what changes between sessions and maintain repeatable results.

Step 1: Set Up Equipment

In the left sidebar, select your equipment:

  • Film: Choose your film stock (e.g., Tri-X 400, HP5+)
  • Developer: Select developer and settings (time, temp, dilution, agitation)
  • Camera & Lens: Pick the camera and lens you'll use
  • Grey Card: Confirm your reference grey card

Use the "Show Favorites" toggle to see only your most-used items.

Step 2: Shoot Your Test

For Full Mode (10-Stop Wedge Test):

  1. Set up your 18% grey card with even, consistent lighting
  2. Meter the grey card at the film's box speed ISO to determine your base exposure (Zone V)
  3. Shoot 10 frames with one-stop increments:
    • Zone I: Base exposure -4 stops
    • Zone II: Base exposure -3 stops
    • Zone III: Base exposure -2 stops
    • Zone IV: Base exposure -1 stop
    • Zone V: Base exposure (metered grey card)
    • Zone VI: Base exposure +1 stop
    • Zone VII: Base exposure +2 stops
    • Zone VIII: Base exposure +3 stops
    • Zone IX: Base exposure +4 stops
    • Zone X: Base exposure +5 stops
  4. After development, measure Zone 0 (base + fog) on an unexposed portion of the film

Note: Zone 0 is base + fog density (unexposed, processed film). You don't shoot a frame for Zone 0—simply measure an unexposed edge or leader after development. This is a 10-stop wedge test, not 11 exposures.

For Zone V Quick Mode:

  1. Set up your 18% grey card with even lighting
  2. Meter the grey card at the film's box speed ISO
  3. Shoot one frame at the metered exposure (Zone V)
  4. After development, measure the Zone V density to calculate effective ISO

Step 3: Develop Your Film

  • Process the film with your chosen developer
  • Maintain consistent temperature, time, and agitation (these are critical variables)
  • Note all development parameters in ZoneLab
  • Let the film dry completely before measuring

Consistency Tip: Even small variations in development (±0.5°C, ±30 seconds) can affect your results. Document everything so you can replicate successful processes or identify what changed when results differ.

Step 4: Enter Density Readings

In the bottom zone input panel:

  1. Select your testing mode (Full or ISO Only)
  2. Measure each zone with your calibrated densitometer
  3. Enter density values (typically 0.02 to 1.8):
    • Full Mode: Enter all 11 readings from Zone 0 to Zone X
    • Zone V Quick Mode: Enter only Zone V reading
  4. Optional: Add lighting conditions and session notes (up to 500 characters)

Tip: Use "Fill Sample Data" to test the app with realistic values before your real tests.

Step 5: Calculate Effective ISO

  1. Click the "Calculate ISO" button at the bottom
  2. ZoneLab finds the zone closest to 0.72 density (18% grey target)
  3. Your effective ISO is calculated and displayed
  4. The session is saved automatically with all data

Full Mode sessions also calculate CI, Gamma, Tonal Range, and Exposure Latitude. Zone V Quick Mode sessions calculate effective ISO only.

Step 6: Review Results

In the right sidebar (Session Library):

  • View all your test sessions in chronological order
  • See the calculated ISO and metrics (Full Mode only)
  • Compare sessions on the interactive chart
  • Filter by film, developer, camera, or lens

Equipment Library

Managing Your Equipment

ZoneLab maintains libraries for all your equipment. Add, edit, or delete items as needed.

Films

  • Add films with manufacturer, name, and box speed
  • Mark up to 5 films as favorites for quick access
  • Common films (Tri-X, HP5+, etc.) are available by default

Developers

  • Add developers with specific development parameters
  • Track time, temperature, dilution, and agitation method
  • Support for both self-development and lab processing
  • Mark favorites for frequently-used developers

Cameras & Lenses

  • Organize your camera bodies and lenses
  • Track which equipment was used for each test
  • Helps identify equipment-specific exposure variations

B&W Filters

  • Track common B&W filters: Yellow #8, Orange #21, Red #25, Deep Red #29, Green #11, Blue #47, Polarizer
  • Includes Wratten numbers, filter factors (e.g., 2×, 4×), and stop compensation (e.g., +1, +2)
  • Add custom filters with your own specifications
  • Filters stored as session metadata only - do not affect chart calculations

Grey Cards

  • Document your reference grey cards
  • Important for consistent, repeatable results
  • Most users will have one primary grey card

Tip: Use the "Show Favorites" toggle to filter your equipment lists to just your most-used items.

Measuring Density Readings

Option 1: Photo Lab Service

Don't have a densitometer? Any quality photo lab can measure your film densities for you.

Using the Lab Form:

  1. Visit www.zonelab.app/lab_form.html
  2. Print the form to provide to your lab
  3. Bring your developed test film and the printed form to your lab
  4. The lab will measure and record density readings for each zone
  5. Enter the lab's readings into ZoneLab

Tip: Make sure your lab uses a calibrated transmission densitometer. Most professional labs have one and are familiar with sensitometric testing.

Option 2: Manual Entry (Your Own Densitometer)

ZoneLab works with any calibrated transmission densitometer:

  1. Measure each zone on your developed film
  2. Manually enter density readings in the zone input fields
  3. Readings typically range from 0.02 (clear film) to 2.5 (very dense)
  4. Maximum accepted density: 4.0 (readings above this will be rejected)

Printalyzer USB Integration

ZoneLab includes full support for the Printalyzer UV Densitometer via direct USB connection.

Configure Printalyzer Densitometer

To Enable:

  1. Connect your Printalyzer densitometer via USB
  2. Select Input → Use Printalyzer Densitometer (⌘⇧D)
  3. Configure settings in Input → Densitometer Settings... (⌘⌥D)
  4. ZoneLab will automatically detect and connect to your device

Using the Densitometer:

  • Full Mode: Click "Start" to begin reading Zone 0. Accept or reject each reading. ZoneLab advances through all 11 zones automatically.
  • Zone V Quick Mode: Click "Start" to read Zone V. The reading auto-stops after Zone V is captured.
  • Mode Detection: ZoneLab verifies your device is in Transmission (T) mode for film density measurements
  • Connection Status: View real-time connection status in the zone input panel

Note: USB integration uses IOKit for direct USB communication. Hardware tested and verified with actual Printalyzer devices. Fully compatible with macOS App Sandbox.

Session Comparison

Comparing Sessions

Compare up to 5 sessions simultaneously to see how different variables affect your results. This is where ZoneLab's systematic approach shines: by changing one variable at a time (same film, different developer; same developer, different time), you can isolate what causes specific changes in your characteristic curves.

Selection Methods:

  • Click: Select a single session
  • ⌘ + Click: Add/remove non-consecutive sessions
  • ⇧ + Click: Select consecutive sessions

Chart Visualization:

  • Full Mode Sessions: Display as complete characteristic curves with all 11 data points
  • Zone V Quick Mode Sessions: Display as larger single dots (Zone V only)
  • Hover: Mouse over any point or session to see details
  • Colors: Each session gets a unique color for easy identification

What to Compare (Change One Variable at a Time):

  • Same film, different developers → isolate developer's effect on contrast
  • Same developer, different times/temperatures → isolate development variable impact
  • Different films, same developer → isolate film characteristic differences
  • Different cameras/lenses, same film/developer → identify equipment-specific exposure variations

Scientific Approach: Changing multiple variables simultaneously makes it impossible to know what caused a difference. Control your variables by keeping everything constant except the one thing you're testing.

Filtering Sessions

Use the filter controls in the Session Library to show only specific sessions:

  • Filter by film (e.g., show only Tri-X tests)
  • Filter by developer (e.g., show only D-76 tests)
  • Filter by camera or lens
  • Combine filters for precise results

Reordering Sessions

Drag and drop sessions in the Session Library to reorder them. This can help group related tests together.

Editing Session Information

After calculating a session, you can edit its metadata and parameters without having to re-enter all the zone readings.

Edit Session Information

What You Can Edit

To edit a session, select it in the Session Library and click the "Edit" button (or double-click the session). You can modify:

Equipment Changes:

  • Film: Change the film stock used
  • Developer: Update developer type and development parameters
  • Camera: Change which camera body was used
  • Lens: Update which lens was used
  • Filter: Add or change B&W filter used (Yellow #8, Orange #21, Red #25, etc.)
  • Grey Card: Change the reference grey card

Session Details:

  • Lighting Conditions: Add or update lighting information
  • Session Notes: Add or edit notes about the test (up to 500 characters)
  • Zone Readings: Correct any density measurements if needed

When to Edit Sessions

  • Correction: Fix data entry errors without re-entering everything
  • Additional Information: Add notes or lighting details you forgot initially
  • Metadata Update: Correct equipment selections if you documented the wrong camera or lens
  • Zone Reading Adjustments: Update density values if you re-measured more accurately

Note: When you edit zone readings, click "Calculate ISO" again to update the results with the new data. The metrics (Effective ISO, CI, Gamma, Tonal Range, Exposure Latitude) will be recalculated automatically.

Tip: You cannot change the testing mode (Full vs Zone V Quick) after a session is created. If you need to switch modes, create a new session.

Data Management

CSV Export

File → Export Sessions (⌘E)

  • Exports all session data to a CSV file with 37+ columns
  • Includes all metadata: films, developers, cameras, lenses, filters, grey cards, settings
  • Includes filter specifications: Wratten numbers, filter factors, stop compensation
  • Includes lighting conditions and session notes
  • Includes all zone readings and calculated results
  • Perfect for backup or analysis in spreadsheet applications

CSV Import

File → Import Sessions (⌘I)

  • Import previously exported session data
  • Automatically creates missing films, developers, cameras, lenses, filters, and grey cards
  • Preserves all zone readings, metrics, notes, and settings
  • Useful for transferring data between Macs or restoring backups

Data Storage

All data is stored locally on your Mac in a Core Data database:

~/Library/Containers/app.zonelab.ZoneLabApp/Data/Library/Application Support/

ZoneLab never transmits data over the internet. Everything stays on your device.

Clearing Data

Two options are available in the Edit menu:

Clear Session Data

  • Deletes all test sessions and zone readings
  • Preserves your equipment libraries (films, developers, cameras, lenses)
  • Use when you want fresh test data but keep your equipment setup

Clear All Data

  • Complete factory reset - deletes everything
  • Removes sessions and all equipment libraries
  • Use when starting completely fresh

Warning: Both operations require confirmation and cannot be undone. Always export your data first!

Understanding Results

The Value of Systematic Testing: ZoneLab's metrics are most useful when compared across multiple sessions with controlled variables. A single test tells you one data point. Multiple tests with systematic changes (different developers, times, temperatures) help you understand cause-and-effect relationships in your process. Track patterns over time to build confidence in your workflow.

Important Note on Units: One stop of exposure equals 0.30 log-H units. However, the density change per stop depends on your film's gradient (CI or Gamma). You cannot assume a fixed density-to-stop relationship.

Effective ISO (EI - Exposure Index)

Available in: Full Mode and Zone V Quick Mode

The ISO your specific process produces, determined by where 18% grey (0.72 density) falls in your exposure range. This is what you should set your light meter to when using that exact combination of film and process.

Terminology Note: In Zone System and film testing literature, ISO refers to the film's rated/box speed (e.g., "Kodak TMax 400"), while EI (Exposure Index) refers to the tested effective speed (e.g., "rated at EI 320"). ZoneLab displays calculated values as "EI" in the session list for clarity.

Formula:

Effective ISO = Metered ISO × 2^(stops difference)

Where:
- Metered ISO = the ISO you set on your meter when shooting the test
- Stops difference = (target zone - actual zone)
- Target zone = 5 (Zone V, where grey card should fall)
- Actual zone = the zone that measured closest to 0.72D

Example:

  • Metered at: ISO 400 (what you set on your light meter)
  • Shot grey card as: Zone V (base exposure)
  • After development, Zone V measured: 1.05D (too dense)
  • Zone measuring 0.72D (target): Zone III
  • Stops difference: 5 - 3 = +2 stops
  • Effective ISO: 400 × 2² = 400 × 4 = 1600

This means your film/developer combination is 2 stops faster than box speed. You were effectively shooting at ISO 1600 when you thought you were at ISO 400. Next time, meter at ISO 1600.

Contrast Index (CI)

Available in: Full Mode only

Measures the practical gradient over a useful exposure range (Zones II through IX). Higher CI values indicate more contrast. Use CI to compare how different developers affect your film's contrast rendering.

Formula:

CI = (Density at Zone IX - Density at Zone II) / (Log Exposure Range)

Where:
- Log Exposure Range = 7 zones × 0.30 log H = 2.10 log H
- Each zone = 1 stop = 0.30 log H units

Simplified formula:
CI = (D_IX - D_II) / 2.10

Interpretation:

  • CI < 0.50: Low contrast (longer development needed)
  • CI = 0.50-0.65: Normal contrast (N development)
  • CI = 0.65-0.80: High contrast (shorter development or dilution needed)
  • CI > 0.80: Very high contrast (reduce development significantly)

Typical targets:

  • CI = 0.56: Kodak film data sheet recommendation for general development
  • CI = 0.58: Kodak recommendation for diffusion enlarger printing
  • CI = 0.43: Kodak recommendation for condenser enlarger printing

Note on Density vs. Stops: While one stop of exposure always equals 0.30 log-H units, the resulting density change depends on the film's gradient. This demonstrates why you cannot assume a fixed density-to-stop relationship: it varies based on your film's contrast characteristics.

Gamma (γ)

Available in: Full Mode only

Measures the slope of the straight-line portion of the characteristic curve. Related to CI but measured over the central linear portion only (Zones III-VIII). Higher gamma = steeper curve = more contrast.

Formula:

γ = (Density at Zone VIII - Density at Zone III) / (Log Exposure Range)

Where:
- Log Exposure Range = 5 zones × 0.30 log H = 1.50 log H

Simplified formula:
γ = (D_VIII - D_III) / 1.50

Interpretation:

  • γ < 0.65: Soft/flat curve
  • γ = 0.65-0.80: Normal gradient
  • γ > 0.80: Contrasty/steep curve

Note: Gamma is more sensitive to development than CI because it measures only the straight-line portion.

Gradient (G)

Available in: Full Mode only (Beta 0.78.0+)

Measures the average gradient over the working range. Used to calculate gradient-adjusted density per stop for more accurate Effective ISO calculations.

Formula:

Gradient = (Density at Zone VIII - Density at Zone II) / (Log Exposure Range)

Where:
- Log Exposure Range = 6 zones × 0.30 log H = 1.80 log H
- Working range spans Zones II through VIII

Simplified formula:
G = (D_VIII - D_II) / 1.80

Interpretation:

  • G = 0.57: "Normal" gradient (Lambrecht's target)
  • G < 0.57: Lower contrast → less density change per stop
  • G > 0.57: Higher contrast → more density change per stop

Impact on Effective ISO:

ZoneLab uses gradient to adjust the density-per-stop factor in EI calculations:

Density per Stop = 0.30 × (Gradient / 0.57)

Example with high-contrast film (G = 0.68):
- Density per Stop = 0.30 × (0.68 / 0.57) = 0.358
- Higher gradient → more density change per stop
- Results in more accurate EI calculation

Why This Matters: The traditional assumption of "0.30 density per stop" is only accurate at normal gradient (0.57). High-contrast films (e.g., TMax in Rodinal) or low-contrast films deviate from this. Gradient adjustment provides more accurate EI calculations across different film/developer combinations.

Tonal Range

Available in: Full Mode only

The total density difference your film can capture, measured from base + fog to maximum density.

Formula:

Tonal Range = Density at Zone X - Density at Zone 0

Where:
- Zone 0 = base + fog (unexposed film)
- Zone X = maximum exposure (+5 stops from grey card)

Interpretation:

  • < 1.6D: Limited dynamic range
  • 1.6-2.2D: Normal range (most films)
  • > 2.2D: Extended range (high-capacity films)

Exposure Latitude (Stops)

Available in: Full Mode only

How much exposure error your process can tolerate while still producing usable negatives. Calculated from tonal range. Higher latitude = more forgiving film.

Formula:

Latitude (stops) = Tonal Range / 0.30

Where:
- 0.30 = density change per stop in the straight-line portion

Example:

  • Tonal Range: 1.8D
  • Latitude: 1.8 / 0.30 = 6 stops

Note: This is a simplified estimation. Actual usable latitude depends on printing requirements and desired tonal separation.

References

Keyboard Shortcuts

Action Shortcut
Getting Started Guide ?
Export Sessions to CSV E
Import Sessions from CSV I
Toggle Tool Panels (Left Sidebar) L
Toggle Session Library (Right Sidebar) R
Toggle Printalyzer Densitometer D
Densitometer Settings D

Troubleshooting

Calculate ISO button is disabled

Solution: Hover over the Calculate ISO button to see what information is missing. Common issues:

  • Missing film, developer, camera, lens, or grey card selection
  • In Full Mode: Not all 11 zone readings entered
  • In Zone V Quick Mode: Zone V reading not entered
  • Invalid density values (must be numbers)

Data not saving

  • Check that you have write permissions in ~/Library/Containers/
  • Try restarting the app
  • Export your data, use "Clear All Data", then import if issues persist

CSV import fails

  • Ensure the CSV file was exported from ZoneLab
  • Check that the file has the correct format (33+ columns)
  • Verify the file is not corrupted or modified

Densitometer not connecting

  • Ensure USB cable is properly connected
  • Check that "Use Printalyzer Densitometer" is enabled (⌘⇧D)
  • Try unplugging and reconnecting the device
  • Check Densitometer Settings (⌘⌥D) for correct port selection

Wrong effective ISO calculated

  • Verify density measurements are accurate (calibrated densitometer)
  • Check that you metered the grey card correctly during shooting
  • Ensure consistent lighting during test exposure
  • Verify development parameters were followed precisely
  • Remember: Different films with the same ISO rating may produce different effective ISO values based on curve characteristics

Fill Sample Data doesn't work in Zone V Quick Mode

Solution: This is expected behavior. In Zone V Quick Mode, Fill Sample Data only populates Zone V (not all 11 zones).

Need Help?

For additional support, bug reports, or feature requests: