# Ohmforge Serial Log to Capture > Paste a serial monitor log: numbers become channels with frequency, Vpp, RMS and rise time. Turns a saved serial monitor log into a waveform capture and measures it like an oscilloscope recording. Lines with numbers ("512", "1.5 2.0", "temp:21.5 hum:40") become channels, text lines are skipped. Time comes from the log's time stamps (Arduino IDE, Ohmforge Serial monitor, Tera Term style), from a time column the device prints (millis()) or from a fixed sample rate. You get Vpp, mean, RMS, frequency, duty cycle and rise time per channel, a chart and a CSV that opens in the Capture analyzer. Part of usefulweb.site (https://usefulweb.site/). Part of [Ohmforge](https://ohmforge.usefulweb.site/) (ownerApp: ohmforge). Results are deterministic calculations from the inputs and the listed assumptions; the API returns exactly what the web page shows. ## Use it - Human interface: https://ohmforgeseriallogtocapture.usefulweb.site/ (interactive tool at https://ohmforgeseriallogtocapture.usefulweb.site/tool) - JSON API: POST https://ohmforgeseriallogtocapture.usefulweb.site/api/v1/calculate with a JSON object of inputs (schema: https://ohmforgeseriallogtocapture.usefulweb.site/api/v1/tool) - OpenAPI: https://ohmforgeseriallogtocapture.usefulweb.site/openapi.json - MCP (Streamable HTTP): https://ohmforgeseriallogtocapture.usefulweb.site/mcp - tool `ohmforge_serial_log_to_capture` ## Inputs - file (file): Log file - A text log saved by a serial monitor; up to 10 MB and 200 000 lines. Processed in memory and not kept. - log (textarea): Or paste the log - Used when no file is uploaded. - timeBase (select): Time base - sampleRate (number): Sample rate (lines per second, for a fixed sample rate) - columnUnit (select): Unit of the device time column - series (text): Series to use (optional) - Comma-separated names ("Value 1" for unlabelled numbers); empty = the first four. - unit (text): Unit of the values (optional) - Shown with the measurements, e.g. V, A or °C; empty = plain numbers. - hysteresis (number): Crossing hysteresis - Noise smaller than this band does not count as a crossing. ## Method - Lines and time stamps: the log is split at LF, CR LF or CR. Recognised time stamps are "[2026-11-02 10:15:30.125] …" (Ohmforge Serial monitor; also with T, Z or a UTC offset as Tera Term and other terminals write it), "10:15:30.125 -> …" (Arduino IDE; midnight wraps are followed) and "[12.345678] …" seconds; resolution 1 ms. - Numbers: like the Arduino serial plotter, a data line holds up to 16 numbers separated by spaces, tabs, commas or semicolons, each optionally labelled "name:value" or "name=value". Unlabelled numbers are named by position (Value 1, Value 2 …); nan, inf and ovf count as missing values. Lines with any other word are text and are skipped. - Time base: arrival times are the log's time stamps relative to the first data line; lines with the same stamp (one USB packet) are spaced evenly up to the next stamp. A device time column (millis(), micros()) gives exact sample times and must not go backwards. A fixed sample rate gives t = n / fs. - Measurements are the Capture analyzer's (ohmforge-capture-analyzer): IEEE 181 state levels, 50 % crossings with hysteresis for frequency and duty, 10–90 % rise time, time-weighted mean and RMS. Lines missing a value of a chosen series are left out. There is no spectrum here: open the capture CSV in the Capture analyzer for FFT, THD and SNR. ## Limits - A serial log is only as good as its timing: arrival-time stamps carry USB and operating-system jitter of a few milliseconds, so frequencies above a few hertz need a device time column or a fixed sample rate. The tool does not connect to any device; use the Serial monitor in Ohmforge for live data.