uTracerJS is a javascript/nodejs software that can control uTracer similarly to the original uTracer windows software (OuTWS), or another alternative “utMax/uTracer”. It has exactly the same interface, look and feel as uTracer ESP32 interface, but without any need for an EPS32 module. The connection with the uTracer (it works with uTracer3, 3+ and 6 (also with the positive grid extension board) is done using the the same cable (either COM-to-COM port, or USB-to-COM port).

The software runs in a web browser locally on your windows/mac/linux/Raspberry Pi/Thin Client PC computer (basically anything that can run NodeJS). It is also possible to run it on a desktop computer but access it via a tablet or phone using a web browser. For example, one can connect a Raspberry Pi to uTracer with a cable, run uTracerJS there and then access the interface and control the data acquisition using a web browser on a laptop, tablet or phone. This way was tested for example using the C.H.I.P. computer, which has ARM Cortex-A8 CPU.

If you want to test it without installation, try the online demo version here. This version runs on ESP32 webserver and sometimes is offline. The archive below contains builds for: macOS x64 (Intel), macOS arm64 (M1), windows x64 and linux x64. On demand, it is possible to build for the following platforms: alpine, linux, linuxstatic, win, macos, (freebsd) and arch: x64, arm64, (armv6, armv7), which makes it possible to run uTracerJS on all possible platforms including Raspberry Pi and so on.

If you are looking for the same software but that also works via wifi and using a dedicated hardware (ESP32) check uTracer and ESP32

Download ver. 0.97 (build 20230226)


Please make a donation via PayPal, I really appreciate it, keeps me going!


  • fast acquisition using a new feature of parallel acquisition of curves (see the youtube video above)
  • natively works with uTracer’s .utd files (stores and loads already acquired with original software)
  • understands .uts config files from the original uTracer windows software (OuTWS))
  • acquires measurements up to the specified in the menu ‘Power max’ value (this option is not available in OuTWS)
  • helps design of amplifiers and interactive manipulate with Load Lines and operating point using acquired tube curves
  • generates LTSpice tube models for simulation of amplifiers
  • displays curves in a window or full screen, allowing for easy zooming of plotted curves using a mouse
  • compares up to 4 sets of curves at the same time, for example for matching tube pairs or quads
  • automatically corrects of anode and screen voltage sagging during Quick Tests (not available in OuTWS)
  • measures and plots grid current (needs uTracer6 and positive grid extension board) 

Installation (new way)

  • unzip uTracerJS.zip somewhere on you drive, for example create a folder ‘uTracerJS’
  • go to that folder and run uTracerJS-* depending on your OS:
  • in the web browser open page http://localhost and click on a small “tube/triode” icon in the top left corner of the menubar.
  • follow the instructions on the webpage, select the serial port that correspons to uTracer and press Apply
  • restart uTracerJS-*

Installation (manual way, obsolete)

  • after the first two steps from above (unzipping and running the binary), open page http://localhost/serialports in the web browser
  • follow the instructions on the webpage and copy the name of the serial port, for example COM4 (on Windows) or /dev/tty.usbserial-2110 (on macOS)
  • edit file ‘uTracerJS.txt’ located in the folder ‘uTracerJS’ and paste the port name as the first line in that file and the web port number, for example 8080 (or any other web port of your choice, the default is 80) as the second line in that file.
  • save uTracerJS.txt and restart uTracerJS-*

Start using uTracerJS

  • go to http://localhost:80 (or other port that you specified above, for example 8080)
  • first go to the ‘Calibration’ tap and copy the calibration values from the original uTracer’s windows software and press ‘Save to EEPROM’ (it saves it to your hard drive)
  • for a quick check, if everything is configure properly, go to ‘Debug” tab, press on PING button and see if you get any response (values) in the lower part of the table
  • If everything is fine, start making measurements! All the acquired data (.utd) files are stored in the ‘data’ folder (inside uTracerJS folder) and also accessible via a file-browser on your machine, or via ‘Files’ tab in the webinterface. You can also copy your existing .utd and .uts files there (again either using a file-browser on you machine, or by uploading via ‘FIles’ tab).

Note 1 (for Mac and Linux users)

While running the executables/binaries from the command line, do not use the absolute path but first go there. For example if you unzipped the uTracerJS folder into your home folder with username YOURUSERNAME, then do the following in the terminal/shell on Mac:

cd /Users/YOURUSERNAME/uTracerJS

or on Linux

cd /home/YOURUSERNAME/uTracerJS

Since version 0.96 build 20221229 is it possible to run uTracerJS on a Mac just by double-clicking on the binary file (uTracerJS-macos-x64 or uTracerJS-macos-arm64) in the Finder window.

Note 2 (when uTracerJS stops working and does not want to start)

It can happen that after trying to execute uTracerJS on any of the platforms, it immediately quits. On Mac and Linux it is easy to see the error message but on Windows the command-line terminal (black terminal window) closes immediately. This behavior happens because uTracerJS uses a temporary folder on a hard-drive, which might be not cleaned properly after the previous execution. To solve this problem, one has to erase manually the content of the ‘pkg‘ folder (indicated in the terminal for Mac and Linux platforms). For Windows users, the location of the path is typically 'C:\Users\YOURUSERNAME\AppData\Local\Temp\' On a Mac it is typically something random (for example, ‘/var/folders/pl/h6h3_kb52235d4lnx2h846y40010gn/T/pkg/‘), so that’s why one has to pay attention to the error message displayed in the terminal window.

On Windows, it is also possible to run uTracerJS in the command-line window, which always stays open. For that one has to open a command prompt at the location of uTracerJS-win-x64.exe file, and manually key in the name ‘uTracerJS-win-x64.exe’ to run it within that window:

  1. Navigate to the folder where your executable resides
  2. Shift-Right click and select “Command Window from here”
  3. Type in the name of the executable and hit enter
  4. The process should run, but the window should stay open

Note 3 (when uTracerJS stops working because the server on port 80 cannot start)

It can also happen that uTracerJS cannot start the server locally on port 80, because there is another software that uses port 80 or some firewall/antivirus software forbids that. If one uses the method above to keep the shell/terminal window open, in this case one would see error like this:

[LOAD] Found uTracerJS.txt, getting the COM port name and localhost port from there
      throw er; // Unhandled 'error' event
Error: listen EACCES: permission denied
    at Server.setupListenHandle [as _listen2] (node:net:1317:21)

The simplest solution is to use another port. For that one has to edit the text file uTracerJS.txt (located in the same folder as the main binary/executable) and change 80 to 8080, for example. Then, use http://localhost:8080 in order to start using the webinterface.

Running on a embedded system

uTracerJS works on any existing platform that can run javascript, so basically on all possible desktops, laptops, development boards (Raspberry Pi, C.H.I.P., Orange PI), tablets and phones 🙂


Some explanations for the interface

Double Acquisition

This option improves the accuracy of Va and Vs measurements. During the acquisition pulse, the Va and Vs voltages are sagging for about 5-10 percent, because of the currents that flow through the sensing resistors. With this option On, uTracer will do two measurements, first one to estimate the voltage sag and then to reapply a bit higher voltage so that the measured Va and Vs will be exactly as specified by the user. The acquisition time does not change much because those are two short measurement pulses almost at the same operation point. Below you can see the measurements acquired without (top) and with (bottom) double acquisition option . The set Va values were: ….. 151, 172.286, 193.571, 214.857, 236.143, 257.429, 278.714, 300.

Voltage Correction

If checked, stores the actually measured Va and Vs in .utd file (also shows those values in the legend), otherwise the set in the user interface values for Va and Vs are saved.

Parallel Acquisition

If checked, the points on the curve are not acquired in a sequential fashion (for each Vg, the values of Va are swiped from Va_start to Va_stop), but in “parallel”: for each Va (from the specified range), all the set Vg values are swiped (see the youtube video above). This approach drastically speeds up the acquisition (2-4 times) because the boost converters are not recharging the caps all the time.

Scaling (of x-axis)

In Settings, while specifying the Start and Stop range for anode voltage, it is also possible to specify the distribution of points, for example in the range of 0-400V. Some of the options are more appropriate/useful for measuring pentodes, where the high density of the points for the larger Va’s is not really required

Experiments with KT88 and different acquisition modes