diff --git a/resources/parsers/defense.py b/resources/parsers/defense.py
index 738217599d3fae97f5f97073f1551725a53cfec9..e010dba0e95e458ca866ddb8dec7f72c0c1876da 100644
--- a/resources/parsers/defense.py
+++ b/resources/parsers/defense.py
@@ -40,7 +40,10 @@ class DefenseParser:
         self.filter_file.write("# ====================== #\n")
         self.filter_file.write("\n")
 
-        # Handle for all present weapon types. Note that parse order is order that values show up in filter.
+        # Parse all defence drops for low level socket connections.
+        self.parse_low_level_sockets()
+
+        # Handle for all present armor types. Note that parse order is order that values show up in filter.
         if "A" in self.defense_types:
             self.parse_subnum += 1
             self.parse_a()
@@ -65,6 +68,140 @@ class DefenseParser:
             self.parse_subnum += 1
             self.parse_en_a()
 
+    def parse_low_level_sockets(self):
+        """
+        Parses low level armor for linked sockets.
+        """
+        if self.debug:
+            logger.info("Parsing low level armor sockets.")
+
+        self.parse_subnum += 1
+        parse_subnum = str(self.parse_subnum).zfill(2)
+        section_name = "Early Armor Socket Links"
+        padding_count = len(section_name) - 1
+
+        three_link_armor_slots = [
+            "Shields",
+            "Helmets",
+            "Body Armours",
+            "Gloves",
+            "Boots",
+        ]
+
+        # Section Start.
+        self.filter_file.write("\n")
+        self.filter_file.write("# --------------------{0} #\n".format("-" * padding_count))
+        self.filter_file.write("# --- [{0}.{1}] - {2} --- #\n".format(self.parse_num, parse_subnum, section_name))
+        self.filter_file.write("# --------------------{0} #\n".format("-" * padding_count))
+        self.filter_file.write("\n")
+        self.filter_file.write("# Displays more variety of low-level gear with good early socket connections.\n")
+        self.filter_file.write("# To help builds out early game.\n")
+        self.filter_file.write("\n")
+
+        # Filter for 3-socket max items early on.
+        self.template.common_item(
+            description="Early 3-Linked-Socket Linked RGB",
+            class_text=three_link_armor_slots,
+            item_level="<= 25",
+            socket_group='"RGB"',
+            border_color=display_dict["notable_border"],
+            font_size=display_dict["rare_font_size"],
+        )
+        self.template.rare_item(
+            description="Early 3-Linked-Socket Slot Rares",
+            class_text=three_link_armor_slots,
+            item_level="<= 25",
+            linked_sockets="3",
+            border_color=display_dict["notable_border"],
+            font_size=display_dict["important_font_size"],
+        )
+        self.template.uncommon_item(
+            description="Early 3-Linked-Socket Slot Uncommons",
+            class_text=three_link_armor_slots,
+            item_level="<= 25",
+            linked_sockets="3",
+            border_color=display_dict["notable_border"],
+            font_size=display_dict["rare_font_size"],
+        )
+        self.template.common_item(
+            description="Early 3-Linked-Socket Slot Normals",
+            class_text=three_link_armor_slots,
+            item_level="<= 25",
+            linked_sockets="3",
+            border_color=display_dict["notable_border"],
+            font_size=display_dict["uncommon_font_size"],
+        )
+
+        # Filter for 4-socket max items early on.
+        self.template.common_item(
+            description="Early 4-Linked-Socket Linked RGB",
+            class_text="Body Armours",
+            item_level="<= 40",
+            socket_group='"RGB"',
+            linked_sockets="4",
+            border_color=display_dict["notable_border"],
+            font_size=display_dict["rare_font_size"],
+        )
+        self.template.rare_item(
+            description="Early 4-Linked-Socket Slot Rares",
+            class_text="Body Armours",
+            item_level="<= 40",
+            linked_sockets="4",
+            border_color=display_dict["notable_border"],
+            font_size=display_dict["important_font_size"],
+        )
+        self.template.uncommon_item(
+            description="Early 4-Linked-Socket Slot Uncommons",
+            class_text="Body Armours",
+            item_level="<= 40",
+            linked_sockets="4",
+            border_color=display_dict["notable_border"],
+            font_size=display_dict["rare_font_size"],
+        )
+        self.template.common_item(
+            description="Early 4-Linked-Socket Slot Normals",
+            class_text="Body Armours",
+            item_level="<= 40",
+            linked_sockets="4",
+            border_color=display_dict["notable_border"],
+            font_size=display_dict["uncommon_font_size"],
+        )
+
+        # Filter for 5-socket max items early on.
+        self.template.common_item(
+            description="Early 5-Linked-Socket Linked RGB",
+            class_text="Body Armours",
+            item_level="<= 60",
+            socket_group='"RGB"',
+            linked_sockets="5",
+            border_color=display_dict["notable_border"],
+            font_size=display_dict["important_font_size"],
+        )
+        self.template.rare_item(
+            description="Early 5-Linked-Socket Slot Rares",
+            class_text="Body Armours",
+            item_level="<= 60",
+            linked_sockets="5",
+            border_color=display_dict["notable_border"],
+            font_size=display_dict["important_font_size"],
+        )
+        self.template.uncommon_item(
+            description="Early 5-Linked-Socket Slot Uncommons",
+            class_text="Body Armours",
+            item_level="<= 60",
+            linked_sockets="5",
+            border_color=display_dict["notable_border"],
+            font_size=display_dict["rare_font_size"],
+        )
+        self.template.common_item(
+            description="Early 5-Linked-Socket Slot Normals",
+            class_text="Body Armours",
+            item_level="<= 60",
+            linked_sockets="5",
+            border_color=display_dict["notable_border"],
+            font_size=display_dict["uncommon_font_size"],
+        )
+
     def parse_section(self, def_type, subnum):
         """
         Parses a full armor type section.
@@ -261,17 +398,20 @@ class DefenseParser:
         """
         drop_level = filter_dict["base_drop_level"] + filter_dict["level_rarity_modifier"]
 
-        if item["MaxLevel"] is True:
-            self.template.uncommon_item(
-                base_text=item["Name"],
-                background_color=display_dict[def_type],
-            )
-        else:
-            self.template.uncommon_item(
-                base_text=item["Name"],
-                item_level="<= {0}".format(item["DropLevel"] + drop_level),
-                background_color=display_dict[def_type],
-            )
+        # Only show uncommons if low level.
+        # Otherwise, they'll show up as currency drops if relevant.
+        if item["DropLevel"] <= 25:
+            if item["MaxLevel"] is True:
+                self.template.uncommon_item(
+                    base_text=item["Name"],
+                    background_color=display_dict[def_type],
+                )
+            else:
+                self.template.uncommon_item(
+                    base_text=item["Name"],
+                    item_level="<= {0}".format(item["DropLevel"] + drop_level),
+                    background_color=display_dict[def_type],
+                )
 
     def parse_item_base(self, def_type, item):
         """
diff --git a/resources/parsers/other.py b/resources/parsers/other.py
index db07a3223b3dc33cb6d80048f8c4b5fc52af2a2d..1c5d5b6da7d91a71299a0f4a1f42bd53b955a408 100644
--- a/resources/parsers/other.py
+++ b/resources/parsers/other.py
@@ -471,6 +471,7 @@ class FinalParser:
                 "Daggers",
                 "Claws",
                 "One Hand Swords",
+                "Thrusting One Hand Swords",
                 "Two Hand Swords",
                 "Bows",
                 "Quivers",
diff --git a/resources/parsers/table_of_contents.py b/resources/parsers/table_of_contents.py
index e106b0be279732bc166cd8f9624f2e8d7d6c7d77..60f2de9e8034d62ae2bd9f0ca51841e8c2ef832a 100644
--- a/resources/parsers/table_of_contents.py
+++ b/resources/parsers/table_of_contents.py
@@ -114,10 +114,19 @@ class TableOfContentsGenerator:
         self.filter_file.write("# [{0}.03] - Rings\n".format(str(parse_num).zfill(3)))
         self.filter_file.write("#\n")
 
+        # Weapon Toc.
         parse_num += 1
+        parse_subnum = 0
         self.filter_file.write("# [{0}] - Weapons\n".format(str(parse_num).zfill(3)))
 
-        parse_subnum = 0
+        parse_subnum += 1
+        self.filter_file.write(
+            "# [{0}.{1}] - Early Weapon Socket Links\n".format(
+                str(parse_num).zfill(3),
+                str(parse_subnum).zfill(2),
+            ),
+        )
+
         if "OneHandMaces" in self.weapon_types:
             parse_subnum += 1
             self.filter_file.write(
@@ -316,12 +325,21 @@ class TableOfContentsGenerator:
 
             self.filter_file.write("#\n")
 
+        # Armor ToC.
         parse_num += 1
+        parse_subnum = 0
         self.filter_file.write(
             "# [{0}] - Armors\n".format(str(parse_num).zfill(3)),
         )
 
-        parse_subnum = 0
+        parse_subnum += 1
+        self.filter_file.write(
+            "# [{0}.{1}] - Early Armor Socket Links\n".format(
+                str(parse_num).zfill(3),
+                str(parse_subnum).zfill(2),
+            ),
+        )
+
         if "A" in self.defense_types:
             parse_subnum += 1
             self.filter_file.write(
diff --git a/resources/parsers/weapons.py b/resources/parsers/weapons.py
index fbd08d924bdacf8887377e44821ad708e320d0a9..601d3928abf6cafa485872c730cb6d34226641a7 100644
--- a/resources/parsers/weapons.py
+++ b/resources/parsers/weapons.py
@@ -43,6 +43,9 @@ class WeaponParser:
         self.filter_file.write("# ======================= #\n")
         self.filter_file.write("\n")
 
+        # Parse all weapon drops on selected weapons for low level socket connections.
+        self.parse_low_level_sockets(weapon_types)
+
         # Handle for all present weapon types. Note that parse order is order that values show up in filter.
         if "OneHandMaces" in self.weapon_types:
             self.parse_one_hand_maces()
@@ -89,6 +92,227 @@ class WeaponParser:
         if "Shields" in self.weapon_types:
             self.parse_shields()
 
+    def parse_low_level_sockets(self, weapon_types):
+        """
+        Parses low level armor for linked sockets.
+        """
+        if self.debug:
+            logger.info("Parsing low level armor sockets.")
+
+        self.parse_subnum += 1
+        parse_subnum = str(self.parse_subnum).zfill(2)
+        section_name = "Early Weapon Socket Links"
+        padding_count = len(section_name) - 1
+
+        for weapon in weapon_types:
+            logger.info("WEAPON: {0}".format(weapon))
+
+        three_link_weapon_slots = {}
+        six_link_weapon_slots = {}
+        selected_weapon_classes = []
+
+        # Weapons tend to be directly tied to skills.
+        # So only display linked weapons as indicated by the select type.
+        if "OneHandMaces" in weapon_types:
+            selected_weapon_classes.append("One Hand Maces")
+            three_link_weapon_slots["One Hand Maces"] = "A"
+
+        if "TwoHandMaces" in weapon_types:
+            selected_weapon_classes.append("Two Hand Maces")
+            three_link_weapon_slots["Two Hand Maces"] = "A"
+            six_link_weapon_slots["Two Hand Maces"] = "A"
+
+        if "OneHandAxes" in weapon_types:
+            selected_weapon_classes.append("One Hand Axes")
+            three_link_weapon_slots["One Hand Axes"] = "A/Ev"
+
+        if "TwoHandAxes" in weapon_types:
+            selected_weapon_classes.append("Two Hand Axes")
+            three_link_weapon_slots["Two Hand Axes"] = "A/Ev"
+            six_link_weapon_slots["Two Hand Axes"] = "A/Ev"
+
+        if "Daggers" in weapon_types:
+            selected_weapon_classes.append("Daggers")
+            three_link_weapon_slots["Daggers"] = "Ev/En"
+
+        if "OneHandSwords" in weapon_types:
+            selected_weapon_classes.append("One Hand Swords")
+            three_link_weapon_slots["One Hand Swords"] = "A/Ev"
+
+        if "OneHandThrustingSwords" in weapon_types:
+            selected_weapon_classes.append("Thrusting One Hand Swords")
+            three_link_weapon_slots["Thrusting One Hand Swords"] = "Ev"
+
+        if "TwoHandSwords" in weapon_types:
+            selected_weapon_classes.append("Two Hand Swords")
+            three_link_weapon_slots["Two Hand Swords"] = "A/Ev"
+            six_link_weapon_slots["Two Hand Swords"] = "A/Ev"
+
+        if "Claws" in weapon_types:
+            selected_weapon_classes.append("Claws")
+            three_link_weapon_slots["Claws"] = "Ev/En"
+
+        if "Bows" in weapon_types:
+            selected_weapon_classes.append("Bows")
+            three_link_weapon_slots["Bows"] = "Ev"
+            six_link_weapon_slots["Bows"] = "Ev"
+
+        if "Sceptres" in weapon_types:
+            selected_weapon_classes.append("Sceptres")
+            three_link_weapon_slots["Sceptres"] = "En/A"
+
+        if "Wands" in weapon_types:
+            selected_weapon_classes.append("Wands")
+            three_link_weapon_slots["Wands"] = "En"
+
+        if "Staves" in weapon_types:
+            selected_weapon_classes.append("Staves")
+            three_link_weapon_slots["Staves"] = "En/A"
+            six_link_weapon_slots["Staves"] = "En/A"
+
+        if "Shields" in weapon_types:
+            selected_weapon_classes.append("Shields")
+            three_link_weapon_slots["Shields"] = None
+
+        # Section Start.
+        self.filter_file.write("\n")
+        self.filter_file.write("# --------------------{0} #\n".format("-" * padding_count))
+        self.filter_file.write("# --- [{0}.{1}] - {2} --- #\n".format(self.parse_num, parse_subnum, section_name))
+        self.filter_file.write("# --------------------{0} #\n".format("-" * padding_count))
+        self.filter_file.write("\n")
+        self.filter_file.write("# Displays more variety of low-level gear with good early socket connections.\n")
+        self.filter_file.write("# To help builds out early game.\n")
+        self.filter_file.write("\n")
+
+        for weapon_class in selected_weapon_classes:
+            weapon_class_attr = three_link_weapon_slots[weapon_class]
+
+            # Filter for 3-socket max items early on.
+            self.template.common_item(
+                description="Early 3-Linked-Socket Linked RGB",
+                class_text=weapon_class,
+                item_level="<= 25",
+                socket_group='"RGB"',
+                background_color=display_dict[weapon_class_attr] if weapon_class_attr else None,
+                border_color=display_dict["notable_border"],
+                font_size=display_dict["rare_font_size"],
+            )
+            self.template.rare_item(
+                description="Early 3-Linked-Socket Slot Rares",
+                class_text=weapon_class,
+                item_level="<= 25",
+                linked_sockets="3",
+                background_color=display_dict[weapon_class_attr] if weapon_class_attr else None,
+                border_color=display_dict["notable_border"],
+                font_size=display_dict["important_font_size"],
+            )
+            self.template.uncommon_item(
+                description="Early 3-Linked-Socket Slot Uncommons",
+                class_text=weapon_class,
+                item_level="<= 25",
+                linked_sockets="3",
+                background_color=display_dict[weapon_class_attr] if weapon_class_attr else None,
+                border_color=display_dict["notable_border"],
+                font_size=display_dict["rare_font_size"],
+            )
+            self.template.common_item(
+                description="Early 3-Linked-Socket Slot Normals",
+                class_text=weapon_class,
+                item_level="<= 25",
+                linked_sockets="3",
+                background_color=display_dict[weapon_class_attr] if weapon_class_attr else None,
+                border_color=display_dict["notable_border"],
+                font_size=display_dict["uncommon_font_size"],
+            )
+
+            # Weapons of 6 socket size.
+            if len(six_link_weapon_slots) > 0:
+
+                try:
+                    weapon_class_attr = six_link_weapon_slots[weapon_class]
+
+                    # Filter for 4-socket max items early on.
+                    self.template.common_item(
+                        description="Early 4-Linked-Socket Linked RGB",
+                        class_text=weapon_class,
+                        item_level="<= 40",
+                        socket_group='"RGB"',
+                        linked_sockets="4",
+                        background_color=display_dict[weapon_class_attr],
+                        border_color=display_dict["notable_border"],
+                        font_size=display_dict["rare_font_size"],
+                    )
+                    self.template.rare_item(
+                        description="Early 4-Linked-Socket Slot Rares",
+                        class_text=weapon_class,
+                        item_level="<= 40",
+                        linked_sockets="4",
+                        background_color=display_dict[weapon_class_attr],
+                        border_color=display_dict["notable_border"],
+                        font_size=display_dict["important_font_size"],
+                    )
+                    self.template.uncommon_item(
+                        description="Early 4-Linked-Socket Slot Uncommons",
+                        class_text=weapon_class,
+                        item_level="<= 40",
+                        linked_sockets="4",
+                        background_color=display_dict[weapon_class_attr],
+                        border_color=display_dict["notable_border"],
+                        font_size=display_dict["rare_font_size"],
+                    )
+                    self.template.common_item(
+                        description="Early 4-Linked-Socket Slot Normals",
+                        class_text=weapon_class,
+                        item_level="<= 40",
+                        linked_sockets="4",
+                        background_color=display_dict[weapon_class_attr],
+                        border_color=display_dict["notable_border"],
+                        font_size=display_dict["uncommon_font_size"],
+                    )
+
+                    # Filter for 5-socket max items early on.
+                    self.template.common_item(
+                        description="Early 5-Linked-Socket Linked RGB",
+                        class_text=weapon_class,
+                        item_level="<= 60",
+                        socket_group='"RGB"',
+                        linked_sockets="5",
+                        background_color=display_dict[weapon_class_attr],
+                        border_color=display_dict["notable_border"],
+                        font_size=display_dict["important_font_size"],
+                    )
+                    self.template.rare_item(
+                        description="Early 5-Linked-Socket Slot Rares",
+                        class_text=weapon_class,
+                        item_level="<= 60",
+                        linked_sockets="5",
+                        background_color=display_dict[weapon_class_attr],
+                        border_color=display_dict["notable_border"],
+                        font_size=display_dict["important_font_size"],
+                    )
+                    self.template.uncommon_item(
+                        description="Early 5-Linked-Socket Slot Uncommons",
+                        class_text=weapon_class,
+                        item_level="<= 60",
+                        linked_sockets="5",
+                        background_color=display_dict[weapon_class_attr],
+                        border_color=display_dict["notable_border"],
+                        font_size=display_dict["rare_font_size"],
+                    )
+                    self.template.common_item(
+                        description="Early 5-Linked-Socket Slot Normals",
+                        class_text=weapon_class,
+                        item_level="<= 60",
+                        linked_sockets="5",
+                        background_color=display_dict[weapon_class_attr],
+                        border_color=display_dict["notable_border"],
+                        font_size=display_dict["uncommon_font_size"],
+                    )
+
+                except KeyError:
+                    # If we made it here, then weapon type only went up to 3 sockets max.
+                    pass
+
     def parse_item(self, item, background_color):
         """
         Parses an individual item.
@@ -198,17 +422,20 @@ class WeaponParser:
         """
         drop_level = filter_dict["base_drop_level"] + filter_dict["level_rarity_modifier"]
 
-        if item["MaxLevel"] is True:
-            self.template.uncommon_item(
-                base_text=item["Name"],
-                background_color=background_color,
-            )
-        else:
-            self.template.uncommon_item(
-                base_text=item["Name"],
-                background_color=background_color,
-                item_level="<= {0}".format(item["DropLevel"] + drop_level),
-            )
+        # Only explicitly show uncommons if low level.
+        # Otherwise, they'll show up as currency drops if relevant.
+        if item["DropLevel"] <= 25:
+            if item["MaxLevel"] is True:
+                self.template.uncommon_item(
+                    base_text=item["Name"],
+                    background_color=background_color,
+                )
+            else:
+                self.template.uncommon_item(
+                    base_text=item["Name"],
+                    background_color=background_color,
+                    item_level="<= {0}".format(item["DropLevel"] + drop_level),
+                )
 
     def parse_item_base(self, item, background_color):
         """