diff --git a/header/vectors.h b/header/vectors.h
index b94c94495cc03f0f6fb297d0600eef77ee4d344f..029c4b3ce78d8f365bb9917fc3a16c46928ea071 100644
--- a/header/vectors.h
+++ b/header/vectors.h
@@ -26,5 +26,6 @@ type vector_pop(vector vec);
 void vector_set(vector vec, int index, type element);
 type vector_get(vector vec, int index);
 type vector_remove(vector vec, int index);
+void vector_insert(vector vec, type element, int index);
 
 #endif
\ No newline at end of file
diff --git a/src/test_vectors.c b/src/test_vectors.c
index 371d5ee5579f913914c616058a3128473f154aeb..50676d2813dd78c9ab326aa20899816ff176cd1d 100644
--- a/src/test_vectors.c
+++ b/src/test_vectors.c
@@ -41,7 +41,12 @@ int main()
 	vector_remove(test, 3);
 	printf("New Value at index 3 : %d \n", vector_get(test, 3));
 
+	//Test Vector Insert
+	vector_insert(test, 3, 3);
+	printf("New Value at index 3 and 4: %d, %d \n", vector_get(test, 3), vector_get(test, 4));
 
+	//Test Vector Empty
+	
 
 	return 0;
 }
\ No newline at end of file
diff --git a/src/vectors.c b/src/vectors.c
index 5e564ddaad78d33dfc476966fd4853d5653f74ae..403f49e0cbc6bca2041e93b56dd8b80b291421ee 100644
--- a/src/vectors.c
+++ b/src/vectors.c
@@ -93,4 +93,19 @@ type vector_remove(vector vec, int index)
 	}
 
 	return tmp;
+}
+
+
+void vector_insert(vector vec, type element, int index)
+{
+	assert(index < vec->length);
+
+	vec->length++;
+
+	for (int i = vec->length; i > index; i--) // Ex : 0 1 2 {3} 4 5  // Index 3 , lenght 6
+	{
+		vec->content[i] = vec->content[i-1]; 
+	}
+
+	vec->content[index] = element;
 }
\ No newline at end of file