diff --git a/src/main.tsx b/src/main.tsx
index 886b5b6..7166b66 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -10,6 +10,7 @@ import { take, filter } from 'rxjs/operators'
 import { logWelcome } from './modules/core/helpers/logWelcome'
 import { initRenderer } from './modules/simulationRenderer/helpers/initRenderer'
 import { updateLogicGateList } from './modules/logic-gates/subjects/LogicGateList'
+import { initAutoSave } from './modules/simulation-actions/helpers/initAutoSave'
 
 /**
  * The function wich does the heavy lifting for starting the app
@@ -18,7 +19,7 @@ export const start = async () => {
     // This will resolve at the first render
     const result = loadSubject
         .pipe(
-            filter(a => a),
+            filter((a) => a),
             take(1)
         )
         .toPromise()
@@ -41,6 +42,9 @@ export const start = async () => {
     // Update the logic gates in local storage
     updateLogicGateList()
 
+    // start the autosaving stuff
+    initAutoSave()
+
     // Render app component
     render(<App />, document.getElementById('app'))
 
diff --git a/src/modules/integrated-circuits/helpers/compileIc.ts b/src/modules/integrated-circuits/helpers/compileIc.ts
index 89d8fa8..4017b26 100644
--- a/src/modules/integrated-circuits/helpers/compileIc.ts
+++ b/src/modules/integrated-circuits/helpers/compileIc.ts
@@ -2,7 +2,6 @@ import { SimulationState } from '../../saving/types/SimulationSave'
 import { SimulationError } from '../../errors/classes/SimulationError'
 import {
     GateTemplate,
-    Property,
     PropGroup,
     isGroup
 } from '../../simulation/types/GateTemplate'
@@ -24,9 +23,10 @@ import { getTemplateSafely } from '../../logic-gates/helpers/getTemplateSafely'
  * Compiles a simulation into a logicGate
  *
  * @param simulaton The simulation to compile
+ * @param log Allow disabling logging
  */
-export const compileIc = (state: SimulationState) => {
-    const { mode, name, gates } = state
+export const compileIc = (state: SimulationState, log = false) => {
+    const { mode, name } = state
 
     if (mode === 'project') {
         throw new SimulationError('Cannot compile project')
@@ -82,10 +82,13 @@ export const compileIc = (state: SimulationState) => {
     }
 
     templateStore.set(name, result)
-    toast(
-        ...createToastArguments(
-            translation.messages.compiledIc(name),
-            'markunread_mailbox'
+
+    if (log) {
+        toast(
+            ...createToastArguments(
+                translation.messages.compiledIc(name),
+                'markunread_mailbox'
+            )
         )
-    )
+    }
 }
diff --git a/src/modules/internalisation/translations/english.ts b/src/modules/internalisation/translations/english.ts
index 443ac52..ab69812 100644
--- a/src/modules/internalisation/translations/english.ts
+++ b/src/modules/internalisation/translations/english.ts
@@ -40,15 +40,16 @@ export const EnglishTranslation: Translation = {
         'delete simulation': 'Delete simulation'
     },
     messages: {
-        createdSimulation: name => `Succesfully created simulation '${name}'`,
-        switchedToSimulation: name =>
+        autoSave: 'The sim saves your work automatically :D',
+        createdSimulation: (name) => `Succesfully created simulation '${name}'`,
+        switchedToSimulation: (name) =>
             `Succesfully switched to simulation '${name}'`,
-        savedSimulation: name => `Succesfully saved simulation '${name}'`,
-        compiledIc: name => `Succesfully compiled circuit '${name}'`,
-        cleaned: name => `Succesfully cleaned simulation '${name}'`,
-        refreshed: name => `Succesfully refreshed simulation '${name}'`,
-        undone: name => `Succesfully undone simulation '${name}'`,
-        deletedSimulation: name => `Succesfully deleted simulation '${name}'`,
-        addedGate: name => `Succesfully added gate '${name}'`
+        savedSimulation: (name) => `Succesfully saved simulation '${name}'`,
+        compiledIc: (name) => `Succesfully compiled circuit '${name}'`,
+        cleaned: (name) => `Succesfully cleaned simulation '${name}'`,
+        refreshed: (name) => `Succesfully refreshed simulation '${name}'`,
+        undone: (name) => `Succesfully undone simulation '${name}'`,
+        deletedSimulation: (name) => `Succesfully deleted simulation '${name}'`,
+        addedGate: (name) => `Succesfully added gate '${name}'`
     }
 }
diff --git a/src/modules/internalisation/types/TranslationInterface.ts b/src/modules/internalisation/types/TranslationInterface.ts
index 5ad9e36..b186833 100644
--- a/src/modules/internalisation/types/TranslationInterface.ts
+++ b/src/modules/internalisation/types/TranslationInterface.ts
@@ -29,6 +29,7 @@ export interface Translation {
         }
     }
     messages: {
+        autoSave?: string
         createdSimulation: NameSentence
         switchedToSimulation: NameSentence
         savedSimulation: NameSentence
diff --git a/src/modules/saving/helpers/save.ts b/src/modules/saving/helpers/save.ts
index 65830aa..81070c3 100644
--- a/src/modules/saving/helpers/save.ts
+++ b/src/modules/saving/helpers/save.ts
@@ -7,6 +7,20 @@ import { toast } from 'react-toastify'
 import { createToastArguments } from '../../toasts/helpers/createToastArguments'
 import { CurrentLanguage } from '../../internalisation/stores/currentLanguage'
 import { compileIc } from '../../integrated-circuits/helpers/compileIc'
+import { EnglishTranslation } from '../../internalisation/translations/english'
+
+export const notifyAboutAutosave = () => {
+    const translation = CurrentLanguage.getTranslation()
+
+    toast(
+        ...createToastArguments(
+            translation.messages.autoSave ||
+                EnglishTranslation.messages.autoSave ||
+                'this sentence was not translated yet',
+            'save'
+        )
+    )
+}
 
 /**
  * Saves the state from a renderer in localStorage,
@@ -22,20 +36,11 @@ export const save = (renderer: SimulationRenderer) => {
 
     if (current) {
         const state = getRendererState(renderer)
-        const translation = CurrentLanguage.getTranslation()
-
         saveStore.set(current, state)
 
         if (state.simulation.mode === 'ic') {
             compileIc(state.simulation)
         }
-
-        toast(
-            ...createToastArguments(
-                translation.messages.savedSimulation(current),
-                'save'
-            )
-        )
     } else {
         throw new SimulationError(
             'Cannot save without knowing the name of the active simulation'
diff --git a/src/modules/saving/helpers/switchTo.ts b/src/modules/saving/helpers/switchTo.ts
index 827de37..0ca7fec 100644
--- a/src/modules/saving/helpers/switchTo.ts
+++ b/src/modules/saving/helpers/switchTo.ts
@@ -5,6 +5,8 @@ import { toast } from 'react-toastify'
 import { createToastArguments } from '../../toasts/helpers/createToastArguments'
 import { dumpSimulation } from './dumpSimulation'
 import { CurrentLanguage } from '../../internalisation/stores/currentLanguage'
+import { compileIc } from '../../integrated-circuits/helpers/compileIc'
+import { getRendererState } from './getState'
 
 /**
  * Used to switch to a simulation
@@ -22,6 +24,12 @@ export const switchTo = (simulationName: string = 'default') => {
     if (rendererSubject.value) {
         const renderer = rendererSubject.value
         const translation = CurrentLanguage.getTranslation()
+        const state = getRendererState(renderer)
+
+        // compile the ic just in case
+        if (state.simulation.mode === 'ic') {
+            compileIc(state.simulation, true)
+        }
 
         dumpSimulation(renderer)
 
diff --git a/src/modules/simulation-actions/constants.ts b/src/modules/simulation-actions/constants.ts
index 6c92592..75cca1f 100644
--- a/src/modules/simulation-actions/constants.ts
+++ b/src/modules/simulation-actions/constants.ts
@@ -1,6 +1,6 @@
 import { SidebarAction } from './types/SidebarAction'
 import { possibleAction } from './types/possibleAction'
-import { save } from '../saving/helpers/save'
+import { save, notifyAboutAutosave } from '../saving/helpers/save'
 import { refresh } from './helpers/refresh'
 import { undo } from './helpers/undo'
 import { createActionConfig } from './helpers/createActionConfig'
@@ -30,7 +30,7 @@ export const actionIcons: Record<possibleAction, string> = {
  * Array with all the actions for the SimulationAction component to render
  */
 export const SidebarActions: Record<possibleAction, SidebarAction> = {
-    ...createActionConfig('save', save, ['control', 's']),
+    ...createActionConfig('save', notifyAboutAutosave, ['control', 's']),
     ...createActionConfig(
         'refresh',
         {
diff --git a/src/modules/simulation-actions/helpers/initAutoSave.ts b/src/modules/simulation-actions/helpers/initAutoSave.ts
new file mode 100644
index 0000000..acc57c5
--- /dev/null
+++ b/src/modules/simulation-actions/helpers/initAutoSave.ts
@@ -0,0 +1,12 @@
+import { interval } from 'rxjs'
+import { save } from '../../saving/helpers/save'
+import { getRendererSafely } from '../../logic-gates/helpers/getRendererSafely'
+
+const everySecond = interval(1000)
+
+export const initAutoSave = () => {
+    everySecond.subscribe(() => {
+        const renderer = getRendererSafely()
+        save(renderer)
+    })
+}