diff --git a/src/main/java/bdv/ij/OpenImarisPlugIn.java b/src/main/java/bdv/ij/OpenImarisPlugIn.java
new file mode 100644
index 0000000000000000000000000000000000000000..dafc4be70026e64a6b1ca8037dbc7c748477eda3
--- /dev/null
+++ b/src/main/java/bdv/ij/OpenImarisPlugIn.java
@@ -0,0 +1,125 @@
+package bdv.ij;
+
+import ij.ImageJ;
+import ij.Prefs;
+import ij.plugin.PlugIn;
+
+import java.awt.FileDialog;
+import java.awt.Frame;
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileFilter;
+
+import bdv.BigDataViewer;
+import bdv.ij.util.ProgressWriterIJ;
+import bdv.img.imaris.Imaris;
+import bdv.spimdata.SpimDataMinimal;
+
+public class OpenImarisPlugIn implements PlugIn
+{
+	static String lastDatasetPath = "";
+
+	public static void main( final String[] args )
+	{
+		ImageJ.main( args );
+		new OpenImarisPlugIn().run( null );
+	}
+	@Override
+	public void run( final String arg )
+	{
+		File file = null;
+
+		if ( Prefs.useJFileChooser )
+		{
+			final JFileChooser fileChooser = new JFileChooser();
+			fileChooser.setSelectedFile( new File( lastDatasetPath ) );
+			fileChooser.setFileFilter( new FileFilter()
+			{
+				@Override
+				public String getDescription()
+				{
+					return "ims files";
+				}
+
+				@Override
+				public boolean accept( final File f )
+				{
+					if ( f.isDirectory() )
+						return true;
+					if ( f.isFile() )
+					{
+				        final String s = f.getName();
+				        final int i = s.lastIndexOf('.');
+				        if (i > 0 &&  i < s.length() - 1) {
+				            final String ext = s.substring(i+1).toLowerCase();
+				            return ext.equals( "ims" );
+				        }
+					}
+					return false;
+				}
+			} );
+
+			final int returnVal = fileChooser.showOpenDialog( null );
+			if ( returnVal == JFileChooser.APPROVE_OPTION )
+				file = fileChooser.getSelectedFile();
+		}
+		else // use FileDialog
+		{
+			final FileDialog fd = new FileDialog( ( Frame ) null, "Open", FileDialog.LOAD );
+			fd.setDirectory( new File( lastDatasetPath ).getParent() );
+			fd.setFile( new File( lastDatasetPath ).getName() );
+			final AtomicBoolean workedWithFilenameFilter = new AtomicBoolean( false );
+			fd.setFilenameFilter( new FilenameFilter()
+			{
+				private boolean firstTime = true;
+
+				@Override
+				public boolean accept( final File dir, final String name )
+				{
+					if ( firstTime )
+					{
+						workedWithFilenameFilter.set( true );
+						firstTime = false;
+					}
+
+					final int i = name.lastIndexOf( '.' );
+					if ( i > 0 && i < name.length() - 1 )
+					{
+						final String ext = name.substring( i + 1 ).toLowerCase();
+						return ext.equals( "ims" );
+					}
+					return false;
+				}
+			} );
+			fd.setVisible( true );
+			if ( !workedWithFilenameFilter.get() )
+			{
+				fd.setFilenameFilter( null );
+				fd.setVisible( true );
+			}
+			final String filename = fd.getFile();
+			if ( filename != null )
+			{
+				file = new File( fd.getDirectory() + filename );
+			}
+		}
+
+		if ( file != null )
+		{
+			try
+			{
+				lastDatasetPath = file.getAbsolutePath();
+				final SpimDataMinimal spimData = Imaris.openIms( file.getAbsolutePath() );
+				new BigDataViewer( spimData, file.getName(), new ProgressWriterIJ() );
+			}
+			catch ( final IOException e )
+			{
+				throw new RuntimeException( e );
+			}
+		}
+	}
+}
diff --git a/src/main/resources/plugins.config b/src/main/resources/plugins.config
index 9f82fc39e48c791e46fb1b4680b759c80aab35ae..2807a76d99315e407e329b6bcbe85023e5a61044 100644
--- a/src/main/resources/plugins.config
+++ b/src/main/resources/plugins.config
@@ -16,4 +16,5 @@ Plugins>BigDataViewer, "Export Current Image as XML/HDF5", bdv.ij.ExportImagePlu
 Plugins>BigDataViewer, "Export Spim Sequence as XML/HDF5", bdv.ij.ExportSpimSequencePlugIn
 Plugins>BigDataViewer, "Export Fused Sequence as XML/HDF5", bdv.ij.ExportSpimFusionPlugIn
 Plugins>BigDataViewer, "Export CellVoyager dataset as XML/HDF5", bdv.ij.ExportCellVoyagerPlugIn
+Plugins>BigDataViewer, "Open Imaris (experimental)", bdv.ij.OpenImarisPlugIn
 File>Import, "BigDataViewer...", bdv.ij.ImportPlugIn
\ No newline at end of file