Neatbo.

Psychrometric series chart

Turn a complete temperature/RH series into rowwise moist-air properties and an all-point chart, preserving original and invalid rows.

Browser-local processingInputUTF-8 CSV + explicit units/columns/constant pressureOutputComplete rowsCSV,JSON,SVG,original and settingsUp to 16 MiB per file · File limit: 1
  1. 1Add input
  2. 2Adjust settings
  3. 3Get your result

Tool input and files are processed in this browser without being uploaded.

Your input

Inputs are kept temporarily in this tab when switching tools. Refreshing or closing clears them; large results may need to be regenerated.

⌘ / Ctrl + Enter to run

or drag and drop it here

Files stay on this device. Your originals stay unchanged.

.csv

Up to 16 MiB per file · File limit: 1

    0 characters · 0 bytes
    Options

    Complete the required options first. You can keep the defaults for the rest.

    Finite positive value; match the selected unit system.

    Preparing the tool…

    Before you start

    Bind CSV columns and units to calculate every moist-air row; keep original order and invalid records in complete outputs.

    How to use this tool

    1. Choose SI/IP,matching temperature/pressure units,the pressure value and RH unit.
    2. Bind zero-based T/RH columns and optional time/ID.
    3. Paste/select the wholeCSV;run and inspect complete row states.
    4. Download all five complete files;copy retains every CSV row.

    Supported inputs and limits

    Paste or select one complete strictUTF-8 comma CSV with a header record:16 MiB,100,000 data records and 512 UTF-8 filename bytes. Choose one source. Clear pasted text before selecting a File; simultaneous File and text are rejected. One leading BOM remains in the exact original. Quoting, doubled quotes, embedded newlines and LF/CRLF/CR are accepted. Blank/ragged records remain invalid rows; malformed CSV, encoding or joint-budget failure rejects atomically.

    Bind temperature and RH by explicit zero-based column index; optional time/ID index uses-1 for none. Preserve every header, original cell, CSV record ordinal and physical start/end line. No 3309-row prefix, inferred calendar/timezone, interpolation or silently dropped rows.

    Choose SI+C with Pa/kPa, or IP+F with psi and one finite positive constant pressure. RH is explicitly percent or fraction. Temperature domain is[-100,200]C/[-148,392]F; normalized RH is[0,1]. Raw vapour pressure must be below total pressure.

    Return every row state, humidity ratio, dewpoint, wetbulb, enthalpy and specific volume. Invalid numbers/domains/physical pressure or unavailable/nonfinite derived states keep original identity and null derived fields. Whole-budget/root failure delivers no partial result.

    Raw RH/vapour pressure stay unchanged; PsychroLib humidity ratio is floored at 1 e-7 and flagged bounded. RH 0 dewpoint/wetbulb use this bounded ratio, not exact dry-air zero. Saturation changes ice/water formula at 0.01 C/32.018 F; wetbulb changes at 0 C/32 F.

    Joint ceilings:1,000,000 scalar solves,100 actual iterations per Newton/bisection root and 100,000,000 work units. CSV characters, original calls and actual iterations are charged. Refuse before iteration 101. Row/input/solve ceilings must also satisfy complete-output/memory preflight; simultaneous maximum axes are not promised.

    Five complete downloads:rows CSV,JSON report,all-point SVG,exact original and settings. Downloads+full copiedCSV+SVG preview≤64 MiB; full typed compactJSON≤32 MiB; aggregate≤96 MiB; binary+complete text/metadataUTF-8 census≤128 MiB.512 MiB is a conservative preflight census, not measured maximum browser heap.

    Screen previews 4000 Unicode scalars and at most 200 valid points; copiedCSV and downloadedJSON/SVG stay complete. All valid points including overlaps remain; all 715 curve samples and invalid saturation regions are reported. One absolute 60 s deadline covers native metadata/read,import,Worker,full validation,cleanup and first post-await UI publication. Cancel/failure/late messages publish no partial result.

    Browser-local; no content/filename upload. A full 8760-series and finite boundaries are measured in Node Worker; maximum joint capacity and browser acceptance are pending. No comfort classification, equipment design, per-row pressure model or Ladybug compatibility claim.

    Worked example

    Example input

    id,T,RH
    ordinary,25,80
    Example options
    {"system":"SI","temperatureUnit":"C","rhUnit":"percent","pressureUnit":"Pa","pressure":101325,"temperatureColumn":1,"rhColumn":2,"idColumn":0}

    Example output

    source_record,physical_start_line,physical_end_line,source_id,status,reason,raw_temperature,raw_rh,temperature,relative_humidity,vapour_pressure_raw,humidity_ratio,dew_point,wet_bulb,enthalpy,specific_volume,root_solves,root_iterations,wet_branch,saturation_branch
    2,2,2,ordinary,valid,,25,80,25,0.8,2535.3731761149024,0.015961824340422887,21.309397163329322,22.38026666317871,65812.7475072273,0.8663011839616968,3,18,water,water
    

    When something does not work

    Correct parameters,CSV syntax/encoding or source-row values and retry. Reduce the complete request if joint budgets fail. After cancel/timeout retain the same originalFile and settings for a freshWorker run.

    Frequently asked questions

    Why does RH 0 still have a humidity ratio and dewpoint?

    The kernel floors humidity ratio at 1 e-7. The report flags bounded and retains rawRH 0; derived values use the floor.

    Does this reproduce the Ladybug author chart?

    Original numbers,units and pressure are absent. The public posts establish the all 8760 import task;this tool provides an explicit completeCSV route.

    Where do invalid rows go?

    CompleteCSV/report retain original ordinal/cells,reason and null derived values. Only valid points plot;invalid curve regions remain reported.

    Documentation & further reading

    Related tools