diff --git a/pom.xml b/pom.xml
index a137ae0..ee80c4c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -81,5 +81,23 @@
fastutil-int-object-maps
8.3.1
+
+ net.kyori
+ adventure-api
+ 4.1.1
+ compile
+
+
+ net.kyori
+ adventure-text-serializer-gson
+ 4.1.1
+ compile
+
+
+ net.kyori
+ adventure-text-serializer-legacy
+ 4.1.1
+ compile
+
\ No newline at end of file
diff --git a/src/main/java/org/geysermc/packconverter/api/converters/MetadataConverter.java b/src/main/java/org/geysermc/packconverter/api/converters/MetadataConverter.java
index ba95cb0..9a9bd04 100644
--- a/src/main/java/org/geysermc/packconverter/api/converters/MetadataConverter.java
+++ b/src/main/java/org/geysermc/packconverter/api/converters/MetadataConverter.java
@@ -31,7 +31,11 @@ import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
+import com.google.gson.JsonSyntaxException;
import lombok.Getter;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
+import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.geysermc.packconverter.api.PackConverter;
import org.geysermc.packconverter.api.utils.ResourcePackManifest;
@@ -76,6 +80,12 @@ public class MetadataConverter extends AbstractConverter {
int packFormat = packmeta.get("pack_format").asInt();
String packDesc = packmeta.get("description").asText();
+ // Convert the description if needed to make sure its valid on bedrock
+ try {
+ Component description = GsonComponentSerializer.colorDownsamplingGson().deserialize(packmeta.get("description").toString());
+ packDesc = LegacyComponentSerializer.legacySection().serialize(description);
+ } catch (JsonSyntaxException ignored) { }
+
if (packFormat != 4 && packFormat != 5 && packFormat != 6) {
throw new AssertionError("Only supports pack_format 4 (v1.13 or v1.14) or 5 (v1.15 or v1.16) or 6 (>= v1.16.2)!");
}