diff --git a/src/crate_info.rs b/src/crate_info.rs
index ebf68a0..e3bc03c 100644
--- a/src/crate_info.rs
+++ b/src/crate_info.rs
@@ -4,7 +4,7 @@ use serde::Serialize;
 #[derive(Serialize, Debug, Clone)]
 pub struct CrateInfo {
     pub name: String,
-    pub description: String,
+    pub description: Option<String>,
     pub owner: String,
     pub latest_version: Version,
     pub versions: Vec<Version>,
diff --git a/src/scraper.rs b/src/scraper.rs
index 73de55f..0cccaf9 100644
--- a/src/scraper.rs
+++ b/src/scraper.rs
@@ -106,11 +106,7 @@ pub fn search_crate(crate_name: String) -> Option<CrateInfo> {
     } else {
         let description = resp
             .css_once(".desc")
-            .unwrap()
-            .content()
-            .trim()
-            .replace('\n', " ")
-            .into();
+            .map(|desc| desc.content().trim().replace("\n", " ").into());
         let owner = resp
             .css("a.owner")
             .iter()
diff --git a/templates/crate.gmi.tera b/templates/crate.gmi.tera
index 542fdff..6180f95 100644
--- a/templates/crate.gmi.tera
+++ b/templates/crate.gmi.tera
@@ -7,7 +7,9 @@
 
 {%- if item -%}
 ## {{ item.name }} v{{ item.latest_version.version }}
+{% if item.description -%}
 > {{ item.description }}
+{%- endif %}
 by {{ item.owner }} {% if item.license %}[{{ item.license }}]{% endif %}
 
 ### Install by: