diff --git a/toonz/sources/image/sprite/tiio_sprite.cpp b/toonz/sources/image/sprite/tiio_sprite.cpp
index 4c5e6f8..78b5b82 100644
--- a/toonz/sources/image/sprite/tiio_sprite.cpp
+++ b/toonz/sources/image/sprite/tiio_sprite.cpp
@@ -106,11 +106,12 @@ TLevelWriterSprite::~TLevelWriterSprite() {
     totalHorizPadding = horizDim * horizPadding;
     spriteSheetWidth  = horizDim * resizedWidth + totalHorizPadding;
     vertDim           = horizDim;
-    // Figure out if there is one row too many (Such as 6 images needs 3 x 2 grid)
+    // Figure out if there is one row too many 
+    // (Such as 6 images needs 3 x 2 grid)
     if (vertDim * vertDim - vertDim >= m_imagesResized.size()) {
-      vertDim          = vertDim - 1;
+      vertDim = vertDim - 1;
     }
-    totalVertPadding = vertDim * vertPadding;
+    totalVertPadding  = vertDim * vertPadding;
     spriteSheetHeight = vertDim * resizedHeight + totalVertPadding;
   } else if (m_format == "Vertical") {
     spriteSheetWidth  = resizedWidth + horizPadding;
@@ -119,62 +120,70 @@ TLevelWriterSprite::~TLevelWriterSprite() {
   } else if (m_format == "Horizontal") {
     spriteSheetWidth  = m_imagesResized.size() * (resizedWidth + horizPadding);
     spriteSheetHeight = resizedHeight + vertPadding;
-    horizDim = m_imagesResized.size();
+    horizDim          = m_imagesResized.size();
+  } else if (m_format == "Individual") {
+    for (int i = 0; i < m_imagesResized.size(); i++) {
+      QString path      = m_path.getQString();
+      QString newEnding = "_" + QString::number(i) + ".png";
+      path              = path.replace(".spritesheet", newEnding);
+      m_imagesResized[i].save(path, "PNG", -1);
+    }
   }
-
-  QImage spriteSheet =
-      QImage(spriteSheetWidth, spriteSheetHeight, QImage::Format_ARGB32);
-  spriteSheet.fill(qRgba(0, 0, 0, 0));
-  QPainter painter;
-  painter.begin(&spriteSheet);
-  int row    = 0;
-  int column = 0;
-  int rowPadding;
-  int columnPadding;
-  int currentImage = 0;
-  while (row < vertDim) {
-    while (column < horizDim) {
-      rowPadding    = m_topPadding;
-      columnPadding = m_leftPadding;
-      rowPadding += row * vertPadding;
-      columnPadding += column * horizPadding;
-      painter.drawImage(column * resizedWidth + columnPadding,
-                        row * resizedHeight + rowPadding,
-                        m_imagesResized[currentImage]);
-      currentImage++;
-      column++;
+  if (m_format != "Individual") {
+    QImage spriteSheet =
+        QImage(spriteSheetWidth, spriteSheetHeight, QImage::Format_ARGB32);
+    spriteSheet.fill(qRgba(0, 0, 0, 0));
+    QPainter painter;
+    painter.begin(&spriteSheet);
+    int row    = 0;
+    int column = 0;
+    int rowPadding;
+    int columnPadding;
+    int currentImage = 0;
+    while (row < vertDim) {
+      while (column < horizDim) {
+        rowPadding    = m_topPadding;
+        columnPadding = m_leftPadding;
+        rowPadding += row * vertPadding;
+        columnPadding += column * horizPadding;
+        painter.drawImage(column * resizedWidth + columnPadding,
+                          row * resizedHeight + rowPadding,
+                          m_imagesResized[currentImage]);
+        currentImage++;
+        column++;
+        if (currentImage >= m_imagesResized.size()) break;
+      }
+      column = 0;
+      row++;
       if (currentImage >= m_imagesResized.size()) break;
     }
-    column = 0;
-    row++;
-    if (currentImage >= m_imagesResized.size()) break;
-  }
-  painter.end();
-  QString path = m_path.getQString();
-  path         = path.replace(".spritesheet", ".png");
-  spriteSheet.save(path, "PNG", -1);
+    painter.end();
+    QString path = m_path.getQString();
+    path         = path.replace(".spritesheet", ".png");
+    spriteSheet.save(path, "PNG", -1);
 
-  path = path.replace(".png", ".txt");
-  QFile file(path);
-  file.open(QIODevice::WriteOnly | QIODevice::Text);
-  QTextStream out(&file);
-  out << "Total Images: " << m_imagesResized.size() << "\n";
-  out << "Individual Image Width: " << resizedWidth << "\n";
-  out << "Individual Image Height: " << resizedHeight << "\n";
-  out << "Individual Image Width with Padding: " << resizedWidth + horizPadding
-      << "\n";
-  out << "Individual Image Height with Padding: " << resizedHeight + vertPadding
-      << "\n";
-  out << "Images Across: " << horizDim << "\n";
-  out << "Images Down : " << vertDim << "\n";
-  out << "Top Padding: " << m_topPadding << "\n";
-  out << "Bottom Padding: " << m_bottomPadding << "\n";
-  out << "Left Padding: " << m_leftPadding << "\n";
-  out << "Right Padding: " << m_rightPadding << "\n";
-  out << "Horizontal Space Between Images: " << horizPadding << "\n";
-  out << "Vertical Space Between Images: " << vertPadding << "\n";
+    path = path.replace(".png", ".txt");
+    QFile file(path);
+    file.open(QIODevice::WriteOnly | QIODevice::Text);
+    QTextStream out(&file);
+    out << "Total Images: " << m_imagesResized.size() << "\n";
+    out << "Individual Image Width: " << resizedWidth << "\n";
+    out << "Individual Image Height: " << resizedHeight << "\n";
+    out << "Individual Image Width with Padding: "
+        << resizedWidth + horizPadding << "\n";
+    out << "Individual Image Height with Padding: "
+        << resizedHeight + vertPadding << "\n";
+    out << "Images Across: " << horizDim << "\n";
+    out << "Images Down : " << vertDim << "\n";
+    out << "Top Padding: " << m_topPadding << "\n";
+    out << "Bottom Padding: " << m_bottomPadding << "\n";
+    out << "Left Padding: " << m_leftPadding << "\n";
+    out << "Right Padding: " << m_rightPadding << "\n";
+    out << "Horizontal Space Between Images: " << horizPadding << "\n";
+    out << "Vertical Space Between Images: " << vertPadding << "\n";
 
-  file.close();
+    file.close();
+  }
   m_imagesResized.clear();
 }
 
@@ -288,6 +297,7 @@ Tiio::SpriteWriterProperties::SpriteWriterProperties()
   m_format.addValue(L"Grid");
   m_format.addValue(L"Vertical");
   m_format.addValue(L"Horizontal");
+  m_format.addValue(L"Individual");
   m_format.setValue(L"Grid");
   bind(m_format);
   bind(m_topPadding);