diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -94,16 +94,23 @@ MainWindow::MainWindow(QWidget *parent) 
 
     // init UI signals
 
-    // menu signals
+    // Help menu signals
     QObject::connect(ui->actionHelpAbout, &QAction::triggered,
               &aboutDialog, &QWidget::show);
 
     QObject::connect(ui->actionReportBug, &QAction::triggered,
                      [](){QDesktopServices::openUrl(QUrl(BUG_REPORT_URL));});
 
+    // File menu signals
     QObject::connect(ui->actionExportCsv, &QAction::triggered,
                      this, &MainWindow::onExportCsv);
 
+    QObject::connect(ui->actionSaveSettings, &QAction::triggered,
+                     this, &MainWindow::onSaveSettings);
+
+    QObject::connect(ui->actionLoadSettings, &QAction::triggered,
+                     this, &MainWindow::onLoadSettings);
+
     ui->actionQuit->setShortcutContext(Qt::ApplicationShortcut);
 
     QObject::connect(ui->actionQuit, &QAction::triggered,
@@ -428,3 +435,27 @@ void MainWindow::loadSettings(QSettings*
     move(settings->value("pos", pos()).toPoint());
     settings->endGroup();
 }
+
+void MainWindow::onSaveSettings()
+{
+    QString fileName = QFileDialog::getSaveFileName(
+        this, tr("Save Settings"), QString(), "INI (*.ini)");
+
+    if (!fileName.isNull()) // user canceled
+    {
+        QSettings settings(fileName, QSettings::IniFormat);
+        saveSettings(&settings);
+    }
+}
+
+void MainWindow::onLoadSettings()
+{
+    QString fileName = QFileDialog::getOpenFileName(
+        this, tr("Load Settings"), QString(), "INI (*.ini)");
+
+    if (!fileName.isNull()) // user canceled
+    {
+        QSettings settings(fileName, QSettings::IniFormat);
+        loadSettings(&settings);
+    }
+}
diff --git a/src/mainwindow.h b/src/mainwindow.h
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -98,6 +98,8 @@ private slots:
     void onSpsChanged(unsigned sps);
     void enableDemo(bool enabled);
     void onExportCsv();
+    void onSaveSettings();
+    void onLoadSettings();
 };
 
 #endif // MAINWINDOW_H
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -105,6 +105,8 @@
     
      File
     
+    
+    
     
     
     
@@ -197,6 +199,22 @@
     Report a Bug on SerialPlot Website
    
   
+  
+   
+    Save Settings
+   
+   
+    Save Settings to a File
+   
+  
+  
+   
+    Load Settings
+   
+   
+    Load Settings from a File
+   
+