Igor Pro 9.01 Beta 1 Released

A new beta release of Igor Pro 9 is now available for all platforms. A list of notable changes for this release is included below. If you've reported an issue to us and we've told you it's been fixed, the fix will be included in this release, even if it's not mentioned below.

If you have enabled checking for beta releases (select the Misc→Miscellaneous Settings menu item to open the Miscellaneous Settings dialog, select the Updates category, then select the "Also Check for Beta Releases" checkbox) you can select the Help→Updates for Igor Pro menu item within Igor Pro 9 to get the latest beta release. Otherwise you can go to the Downloads page to download the installer manually.

Macintosh users: When you drag the Igor Pro 9 Folder from the new installer into your Applications folder, the OS may ask you whether you want to merge the folders or replace the existing folder. You should select "Replace".

See also: Igor Pro on macOS 10.15 (Catalina) and later

Notable Changes in Igor Pro 9.01 Beta 1



  • It is now possible to save graph preferences for Box Plots and Violin Plots.
  • Added the erfcx() (scaled complementary error function) built-in function.
  • Added a retrieve button to the toolbar of The Window Browser.
  • Added a mention of the SetWindow doScroll keyword to the What's New in Igor 9 help file:
  • Added the capabililty to add scroll bars to a graph or control panel. See SetWindow doScroll. Also accessible via Windows->Control->Add or Remove Scroll Bars.
  • GetWindow somePanelWindowName expand returns the Control Panel Expansion factor for the named panel.
  • Added support for HDF5 dynamically loaded filters. Supports reading (decode), not writing (encode). See HDF5 Dynamically Loaded Filters for details.
  • Added MacroInfo function which returns info about the named or currently running macro.
  • Added MacroPath function which returns the path to the file containing the named or currently running macro.
  • Added the ProcedureVersion function.
  • The IndexedFile and IndexedDir functions have an optional separatorStr parameter that overrides the standard ";" separator.


  • Macintosh: on macOS 12 and later, Slider controls are drawn with fusion appearance (instead of "native" appearance) to work around a macOS change.
  • DrawOval objects can be rotated again, regardless of the distortion that may result.
  • The MPFXEMGPeak function uses a new computational strategy that greatly expands the region of X and the parameter space over which the results are valid and improves the accuracy over some portions of the original region of valid output.
  • If you entered a date in a table using a two-digit year when the table date format was set to a four-digit year, Igor interpreted the two-digit year as relative to year 0000. For example, if you entered "10/17/21", the year was interpreted as 0021. Now Igor treats entering a two-digit year when the table date format calls for a four-digit year as illegal. You will have to enter a four-digit year.
  • If you use a tooltip hook function (see Tooltip Hook Functions), the recreation macro for a window with a tooltip hook attached uses Execute to run the SetWindow command, allowing the experiment file to be opened in earlier versions of Igor. You must still enclose the hook function itself in #if IgorVersion() >= 9 and #endif to allow the code to compile in older versions.
  • The scroll bars in notebook windows, procedure windows, and table windows are no longer disabled when the window is inactive, allowing you to see the thumb position. This change was made on both Windows and Macintosh, but you will see a difference only on Windows.
  • Capturing preferences for graphs containing box plots and violin plots now works.
  • The HDF5 Open File dialog and Save File dialog now accept ".hdf5" as well as ".h5" as the file name extension.
  • Improved behavior if a folder associated with a symbolic path is missing when an experiment is loaded. Previously Igor would ask if you wanted to skip all waves from that folder even if the experiment loaded no waves from the folder. Now it asks only if the folder contained wave files referenced by the experiment.
  • DoIgorMenu "File", "" sets V_Flag, V_isInvisible, and S_value for the menu (menus can be hidden with HideIgorMenus). DoIgorMenu without /C won't do anything when called within a dynamic menu function.
  • Windows: Improved the operating system description returned by IgorInfo(3).
  • The Debugger does a better job of auto-sizing the column widths of the Variables List.


  • Windows: Fixed Igor Pro 9.00 bug in handling UNC paths commands like
  • XLLoadWave/P=<pathName> <file name>
  • and also for GBLoadWave and similar commands. This failed, by displaying an Open File dialog instead of just loading the file if the path associated with the symbolic path was a UNC path.
  • Fixed a bug in Gizmo Path objects using tube representation with a user-provided radius wave.
  • Fixed a bug in MatrixOP vectorized code that affected operations with binary SP elements that would normally result in DP data type.
  • Fixed a bug that caused the /Z and /T flags for FuncFitMD to load the wrong waves.
  • A run-time error in a user-defined fitting function that has been automatically multithreaded will now be reported to the main thread. Previously a run-time error for a thread-safe user fit function was not reported.
  • Fixed a bug: if a user-defined function created and killed windows in a loop, the wrong window could be activated.
  • Made HDF5 Browser work with control panel expansion. 
  • Fixed a bug: In certain cases, a SetVariable control that uses a global string variable for its value would fail to accept a newly edited value.
  • Fixed crashes when using the Graph Now button in the Curve Fitting dialog with an all-at-once fitting function.
  • Fixed a bug that caused the Find in Multiple Windows dialog to incorrectly select the original text if that text was preceded by a multibyte Unicode grapheme.
  • Fixed a bug that caused SetRandomSeed to set the seed for the new Xoshiro256** to be set to the same value for any input. Regrettably, this change will change the sequences of random numbers delivered by functions like gnoise, enoise, and other "noise" functions.
  • Fixed a bug that caused windows being killed in a user function loop to be inappropriately re-activated. This could cause operations like SavePICT to act on the wrong target window.
  • The ModifyBoxPlot operation now correctly sets the mean marker and data marker stroke colors.
  • Fixed bug: if an image wave displayed in a graph is redimensioned to a smaller size, and as a result a graph cursor must be moved, the graph info window row and column display are now properly updated. See Info Panel and Cursors.
  • Fixed a problem introduced in Igor Pro 9.00 that caused HDF5CreateFile and HDF5OpenFile to fail on Windows if the path to the file contained non-ASCII characters. Now these operations work on Windows, as on Macintosh, with any Unicode characters. Prior to Igor Pro 9.00, they worked on Windows with ASCII characters and characters in the active code page only.
  • Fixed failure to update page layout panel readout when moving a drawing object using arrow keys.
  • Fixed table in the New Graph dialog so that long wave names are displayed properly.
  • Fixed: If a Matlab file contained a complex matrix followed by a real matrix, MLLoadWave would report "The Mathworks libmex library routine mxGetImagData returned NULL" on loading the real matrix.
  • Fixed error if executing VISARead, VISAWrite and similar from preemptive thread.
  • In previous versions of the TDM XOP, TDMSaveData returned an error if a datetime property was NaN. Now the property is skipped (not written) if it is NaN.
  • Fixed a possible hang when using the Data Browser find dialog.
  • Fixed a crash associated with a drawn polygon based on waves caused by creating a polygon, deleting it, deleting the waves, and undoing the deletion.
  • Fixed "hopping" cursor on an image graph using point scaling and log axes; the zero row or column on a log axis cannot be shown. Cursor was on row or column zero. It should have been pinned to the top axis, but occasionally for certain window sizes it would be drawn on column one.
  • Fixed tendency on Macintosh to produce an info window that's extremely wide and blank if you set certain font sizes.
  • Fixed a bug in the computation of the function expIntegralE1() for complex input. It was using the real input code.
  • Notebook ruler menu did not resize in a notebook subwindow.
  • Fixed crash if you try to apply constraints to a complex fit using a complex coefficient wave.
  • When fitting a complex function with a complex coefficient wave using /ODR=<nonzero>, the sigma and confidence waves were real with the wrong number of points.
  • On Windows, a context click in a listbox cell now delivers mouse events with modifiers=16 in the correct order (mouse down before mouse up). Right-click in a listbox cell selects that cell only when it is not already selected, making it possible to select several cells and then right-click to do something to that selection.
  • Fixed Graph Info Window default font on Windows.
  • In a table, the no-edit status icon was shown even when the entry area was hidden.
  • Prevent a crash due to runaway recursion if your control action procedure called KillWindow on the owning window in response to a Control Being Killed event (event code -1).
  • Setting the line width of elements of a box plot to 0.5 caused the lines to disappear on a standard-DPI monitor.
  • The SavePICT operation with /W=(left,top,right,bottom) when applied to a layout window is documented as taking the coordinates in points. On Windows, the coordinates were not points due to a bug introduced a few years ago. Now they are points again. The bug caused these commands:
  • GetMarquee/W=layout0
  • SavePICT/W=(V_left, V_top, V_right, V_bottom)
  • to save the wrong part of the layout window.
  • Fixed a bug in the initialization of the font for the Graph Info panel (Info Panel and Cursors). The bug caused the font to be too large at times. One result is that the default font is smaller than previously, resulting in a more compact panel. For those who find it too small, the font can be set in Misc->Miscellaneous Settings, Graph category.
  • Fixed possible crash when pasting an image into Igor if the application that put the image on the clipboard misrepresented its type.
  • LoadPICT when loading an SVG image could report the width or height incorrectly by 1 or 2 pixels.
  • Fixed a bug in CreateDataObjectName that resulted in non-unique data folder names.
  • Fixed a bug that made it impossible to select the "black" fill color pattern for shaded error bars.
  • The rectangle used to hit test the handle on a Slider control was inaccurate, making it hard to drag the slider.
  • Fixed a bug that caused a Slider control to measure the tick label text incorrectly.
  • Windows: Slider control thumbs can be colored again, though the thumb uses the legacy OS9 appearance.
  • Fixed a compiler error that allowed a user string function to hide a local variable of the same name.
  • Fixed an Extract/INDX bug that created a wave reference of the wrong type.
  • GetFormula works properly in a function without issuing an "expected wave or variable" error when a local WAVE reference is the parameter.
  • Improved error reporting of the Save operation when called in a function.
  • DoIgorMenu/C can be used in a dynamic menu function without leaving all of Igor's menus disabled.
  • Corrected some menu item names in the File, Image, and Notebook menus for use with SetIgorMenuMode and DoIgorMenu, most importantly DoIgorMenu "File", "Exit".
  • Fixed a rare crash in NewWaterfall plots that froze Igor upon experiment loading.
  • Fixed inability to drag a -90 degree rotated drawing object to a new location.
  • #pragma version 100 (missing the =) no longer prevents compiling.
  • Fixed a bug in RatioFromNumber that printed a bug message when executing in a preemptive thread. 
  • Fixed a crash when executing nested Range-based For-Loops.
  • Threadsafe functions no longer fail to find a FuncRef to a function in a regular module. See The ModuleName Pragma.
  • A graph subwindow inside a panel's graph subwindow is now drawn in right place.
  • A blank line in an Execute statement (e.g. Execute("Macro something\r...")) no longer prematurely ceases executing commands.
  • The Graph contextual menus' "Edit All Waves" menu item does a better job of editing all waves used in the graph (Error bar and axis ticking waves were missing).
  • Igor no longer complains about colors with zero alpha, nor silently changes them to opaque.
  • Fixed misplaced Tag box when attachment point is offscreen and the graph is rendered with high resolution such that the attachment screen coordinates and textbox screen coordinates exceed 20000. See Tag Wave and Attachment Point.
  • Fixed crash when a Gizmo window contained a ColorScale.
  • A plain text notebook subwindow no longer changes its host window's icon to plain text. For example, panels with plain text notebook subwindows keep their panel icon.
  • Fixed a bug introduced by Igor 9.00 where a global variable created with a name like K0, K1, etc. (normally used for System Variables) that is then referenced with NVAR K0 silently fails instead of working just like any other global variable with a normal name. See Accessing Global Variables And Waves.
  • Multithread call on null wave no longer generates a bug message, though it does still present a function execution error dialog. (You can test for a null wave reference with WaveExists.)
  • Selecting a Recent file or experiment that was moved away from its folder (or renamed) once again presents the "Remove from Recent Experiments/Files?" dialog.


  • Added a help section on Loading Version 7.3 MAT Files as HDF5 Files. This is useful if you don't have Matlab or if your Matlab version is not compatible, or if you simply prefer to work with HDF5 files.
  • A discussion of how Igor deals with certain rare name conflicts when writing HDF5 files was added to the help. This is of interest to advanced users only. See Object Name Conflicts.


  • Removed WaveMetrics Procedures:Obsolete:ANOVA.ipf.
  • In the Multipeak Fit package, added error estimation for FWHM for the Voigt and VoigtArea peak shapes.
  • In the Hierarchical Clustering and Heat Map package, added computation of average vector for each cluster and added option to label the clusters with their numbers. These new capabilities are accessed via three new buttons in the Clusters tab of the Modify Dendrogram panel.
  • ImageSlider.ipf controls show Z scaling of image layer as a tooltip.
  • Added tooltip to the New Polar Graph Polar Trace popup menu showing the original radius and angle data wave(s), repositioned some wayward controls in the polar graphs panels, updated New Polar Graphs help file to UTF-8 and new Windows-only graphics. 
  • Added Smith Chart procedures, help, and demo experiment.
  • Fixed Pie Chart panel's control positions to be less crowded on Windows.
  • Added Marquee Blanks.ipf and updated other aged procedure files related to deleting points from waves various ways, and updated WM Procedures Index.ihf.
  • SetIgorMenuModeProc.ipf has corrected menu item programming names.
  • PeakAreasUnipolar.ipf (TN020-C) has new rise and fall time measurements. Fixed a few bugs related to measuring negative (downward) peaks.
  • InsertSubwindowInGraph.ipf works if the host window's recreation macro changes the default data folder, and if contains ShowInfo or ShowTools commands.
  • Fixed a compile error in Gizmo Procedures:BoxLimitPanel.ipf.


  • The version of the NetCDF XOP that shipped with Igor Pro 9.00 was out of date. This has been fixed for 9.01.
  • In Igor Pro 9.00, the IgorGIS XOP was declared obsolete (see XOPs Removed From Igor Pro 9) and the XOP was moved to More Extensions (64-bit):Obsolete. However a copy of the XOP was mistakenly left in the original location (More Extensions (64-bit):File Loaders). This copy of the XOP has now been removed. If you are still using the GIS XOP and you had activated the XOP in More Extensions (64-bit):File Loaders (or More Extensions:File Loaders for the Windows 32-bit application), you will need to activate the XOP within the Obsolete directory. The XOP itself is unchanged and remains obsolete.




Igor Pro 9

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More