diff --git a/src/main/java/bdv/server/BigDataServer.java b/src/main/java/bdv/server/BigDataServer.java
index f1b60161def12c247916320f3289350100fb8269..269030f57f5e9429a9e543db3d25480fe55daf62 100644
--- a/src/main/java/bdv/server/BigDataServer.java
+++ b/src/main/java/bdv/server/BigDataServer.java
@@ -40,6 +40,8 @@ import java.util.Map.Entry;
  *                  per line. Each line is formatted as "NAME <TAB> XML".
  *  -p <PORT>       Listening port. (default: 8080)
  *  -s <HOSTNAME>   Hostname of the server.
+ *  -t <DIRECTORY>  Directory to store thumbnails. (new temporary directory
+ *                  by default.)
  *  -m              enable statistics and manager context. EXPERIMENTAL!
  * </pre>
  *
@@ -65,8 +67,9 @@ public class BigDataServer
 		{
 			hostname = "localhost";
 		}
+		final String thumbnailDirectory = null;
 		final boolean enableManagerContext = false;
-		return new Parameters( port, hostname, new HashMap< String, String >(), enableManagerContext );
+		return new Parameters( port, hostname, new HashMap< String, String >(), thumbnailDirectory, enableManagerContext );
 	}
 
 	public static void main( final String[] args ) throws Exception
@@ -133,13 +136,16 @@ public class BigDataServer
 		 */
 		private final Map< String, String > datasetNameToXml;
 
+		private final String thumbnailDirectory;
+
 		private final boolean enableManagerContext;
 
-		Parameters( final int port, final String hostname, final Map< String, String > datasetNameToXml, final boolean enableManagerContext )
+		Parameters( final int port, final String hostname, final Map< String, String > datasetNameToXml, final String thumbnailDirectory, final boolean enableManagerContext )
 		{
 			this.port = port;
 			this.hostname = hostname;
 			this.datasetNameToXml = datasetNameToXml;
+			this.thumbnailDirectory = thumbnailDirectory;
 			this.enableManagerContext = enableManagerContext;
 		}
 
@@ -155,7 +161,7 @@ public class BigDataServer
 
 		public String getThumbnailDirectory()
 		{
-			return null;
+			return thumbnailDirectory;
 		}
 
 		/**
@@ -205,6 +211,12 @@ public class BigDataServer
 				.withArgName( "FILE" )
 				.create( "d" ) );
 
+		options.addOption( OptionBuilder
+				.withDescription( "Directory to store thumbnails. (new temporary directory by default.)" )
+				.hasArg()
+				.withArgName( "DIRECTORY" )
+				.create( "t" ) );
+
 		if ( Constants.ENABLE_EXPERIMENTAL_FEATURES )
 		{
 			options.addOption( OptionBuilder
@@ -222,8 +234,10 @@ public class BigDataServer
 			final int port = Integer.parseInt( portString );
 
 			// Getting server name option
-			final String serverString = cmd.getOptionValue( "s", defaultParameters.getHostname() );
-			final String serverName = serverString;
+			final String serverName = cmd.getOptionValue( "s", defaultParameters.getHostname() );
+
+			// Getting thumbnail directory option
+			final String thumbnailDirectory = cmd.getOptionValue( "t", defaultParameters.getThumbnailDirectory() );
 
 			final HashMap< String, String > datasets = new HashMap< String, String >( defaultParameters.getDatasets() );
 
@@ -280,7 +294,7 @@ public class BigDataServer
 			if ( datasets.isEmpty() )
 				throw new IllegalArgumentException( "Dataset list is empty." );
 
-			return new Parameters( port, serverName, datasets, enableManagerContext );
+			return new Parameters( port, serverName, datasets, thumbnailDirectory, enableManagerContext );
 		}
 		catch ( final ParseException | IllegalArgumentException e )
 		{
diff --git a/src/main/java/bdv/server/CellHandler.java b/src/main/java/bdv/server/CellHandler.java
index 6125bc9123ee6cbb46a42fbec8e965d3d1641d7c..a3fe4df520e47fddfb89a0640fe169f576cdf689 100644
--- a/src/main/java/bdv/server/CellHandler.java
+++ b/src/main/java/bdv/server/CellHandler.java
@@ -277,8 +277,7 @@ public class CellHandler extends ContextHandler
 	{
 		final String thumbnailFileName = thumbnailsDirectory + "/" + datasetName + ".png";
 		final File thumbnailFile = new File( thumbnailFileName );
-		if ( !thumbnailFile.isFile() ) // do not recreate thumbnail if it
-										// already exists
+		if ( !thumbnailFile.isFile() ) // do not recreate thumbnail if it already exists
 		{
 			final BufferedImage bi = ThumbnailGenerator.makeThumbnail( spimData, baseFilename, Constants.THUMBNAIL_WIDTH, Constants.THUMBNAIL_HEIGHT );
 			try