diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt
index 2bb1c93b4537481388b1a569d928b5a3d16a1d77..df915825465d6f36af628c5aab799bac104686c6 100644
--- a/builtin/settingtypes.txt
+++ b/builtin/settingtypes.txt
@@ -311,11 +311,6 @@ texture_clean_transparent (Clean transparent textures) bool false
 #    enabled.
 texture_min_size (Minimum texture size for filters) int 64
 
-#    Pre-generate all item visuals used in the inventory.
-#    This increases startup time, but runs smoother in-game.
-#    The generated textures can easily exceed your VRAM, causing artifacts in the inventory.
-preload_item_visuals (Preload inventory textures) bool false
-
 #    Experimental option, might cause visible spaces between blocks
 #    when set to higher number than 0.
 fsaa (FSAA) enum 0 0,1,2,4,8,16
diff --git a/minetest.conf.example b/minetest.conf.example
index 4cfb8dd28fc7e2182d000dc153cd5bc695628319..4813adadce3c2734b66a7767234afc2945276030 100644
--- a/minetest.conf.example
+++ b/minetest.conf.example
@@ -335,12 +335,6 @@
 #    type: int
 # texture_min_size = 64
 
-#    Pre-generate all item visuals used in the inventory.
-#    This increases startup time, but runs smoother in-game.
-#    The generated textures can easily exceed your VRAM, causing artifacts in the inventory.
-#    type: bool
-# preload_item_visuals = false
-
 #    Experimental option, might cause visible spaces between blocks
 #    when set to higher number than 0.
 #    type: enum values: 0, 1, 2, 4, 8, 16
diff --git a/src/client.cpp b/src/client.cpp
index 3fe67d64597dd110eb254e3228c318fa3db33edb..f27f031c5325e2dcd9fdbd481011257df50df80c 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -1766,29 +1766,6 @@ void Client::afterContentReceived(IrrlichtDevice *device)
 	m_nodedef->updateTextures(this, texture_update_progress, &tu_args);
 	delete[] tu_args.text_base;
 
-	// Preload item textures and meshes if configured to
-	if(g_settings->getBool("preload_item_visuals"))
-	{
-		verbosestream<<"Updating item textures and meshes"<<std::endl;
-		text = wgettext("Item textures...");
-		draw_load_screen(text, device, guienv, 0, 0);
-		std::set<std::string> names = m_itemdef->getAll();
-		size_t size = names.size();
-		size_t count = 0;
-		int percent = 0;
-		for(std::set<std::string>::const_iterator
-				i = names.begin(); i != names.end(); ++i)
-		{
-			// Asking for these caches the result
-			m_itemdef->getInventoryTexture(*i, this);
-			m_itemdef->getWieldMesh(*i, this);
-			count++;
-			percent = (count * 100 / size * 0.2) + 80;
-			draw_load_screen(text, device, guienv, 0, percent);
-		}
-		delete[] text;
-	}
-
 	// Start mesh update thread after setting up content definitions
 	infostream<<"- Starting mesh update thread"<<std::endl;
 	m_mesh_update_thread.start();
diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp
index 271214a4f0e9184ab2a18aabac936a6a5219e53e..a043ef003ee25832d4e4eb260f660c20f879cfa0 100644
--- a/src/defaultsettings.cpp
+++ b/src/defaultsettings.cpp
@@ -159,7 +159,6 @@ void set_default_settings(Settings *settings)
 	settings->setDefault("trilinear_filter", "false");
 	settings->setDefault("texture_clean_transparent", "false");
 	settings->setDefault("texture_min_size", "64");
-	settings->setDefault("preload_item_visuals", "false");
 	settings->setDefault("tone_mapping", "false");
 	settings->setDefault("enable_bumpmapping", "false");
 	settings->setDefault("enable_parallax_occlusion", "false");
@@ -345,7 +344,6 @@ void set_default_settings(Settings *settings)
 	settings->setDefault("max_simultaneous_block_sends_per_client", "3");
 	settings->setDefault("emergequeue_limit_diskonly", "8");
 	settings->setDefault("emergequeue_limit_generate", "8");
-	settings->setDefault("preload_item_visuals", "false");
 
 	settings->setDefault("viewing_range_nodes_max", "50");
 	settings->setDefault("viewing_range_nodes_min", "20");
diff --git a/src/settings_translation_file.cpp b/src/settings_translation_file.cpp
index b078e4d12d65883ff7843f2fade1ea8e3485ce9b..d3bf5a1f8dcb96f9a713c3f8abdf950bcfd3d12d 100644
--- a/src/settings_translation_file.cpp
+++ b/src/settings_translation_file.cpp
@@ -136,8 +136,6 @@ fake_function() {
 	gettext("Filtered textures can blend RGB values with fully-transparent neighbors,\nwhich PNG optimizers usually discard, sometimes resulting in a dark or\nlight edge to transparent textures.  Apply this filter to clean that up\nat texture load time.");
 	gettext("Minimum texture size for filters");
 	gettext("When using bilinear/trilinear/anisotropic filters, low-resolution textures\ncan be blurred, so automatically upscale them with nearest-neighbor\ninterpolation to preserve crisp pixels.  This sets the minimum texture size\nfor the upscaled textures; higher values look sharper, but require more\nmemory.  Powers of 2 are recommended.  Setting this higher than 1 may not\nhave a visible effect unless bilinear/trilinear/anisotropic filtering is\nenabled.");
-	gettext("Preload inventory textures");
-	gettext("Pre-generate all item visuals used in the inventory.\nThis increases startup time, but runs smoother in-game.\nThe generated textures can easily exceed your VRAM, causing artifacts in the inventory.");
 	gettext("FSAA");
 	gettext("Experimental option, might cause visible spaces between blocks\nwhen set to higher number than 0.");
 	gettext("Shaders");